Page 1 sur 2
message d'erreur que je ne comprends pas
Posté : 30 mai 2005, 11:07
par hatice
Salut,
j'ai ce message d'erreur mais je ne comprends pas ce qu'il veux dire ?
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in
merci d'avance
Posté : 30 mai 2005, 11:08
par Cyrano
Fais-nous voir ton code, on te dira ce qui va pas, c'est un classique pas très grave, mais la syntaxe est stricte.
Posté : 30 mai 2005, 11:11
par zeus
Ca veut dire que la requete que tu as passé dans mysql_query() est fausse et que tu tente de mettre le message d'erreur que t'a retourné cette fnctions dans un tableau !!!!
Pour t'éviter ce genre d'erreur, tu peut faire :
if ($o_result = mysql_query(...))
$a_result= mysql_fecth_array(...);
else
echo "Erreur";
Sinon, je te conseille d'afficher la requete que tu tentes d'exécuter, de l'executer depuis PhpMyAdmin (si tu utilise EasyPHP). Ca te permettra de vérifier sa validité et, en cas d'erreur, de voir le message d'erreur !!!!
Posté : 30 mai 2005, 14:14
par Hatice
Merci j'ai trouvé le probleme il failait que je mette une variable entre simple cote...
Par contre j'ai un autre petit probleme, je dois faire passer une variable entre 2 pages php mais elle ne passe pas, que dois je faire?
Est ce que quelqu'un peut m'aider si je lui envoie mon code ?
Posté : 30 mai 2005, 14:15
par zeus
Poste et on verra ce qu'on peut faire
Posté : 30 mai 2005, 14:26
par Hatice
voila ma page qui s'appel index.php :
?>
<table width=500 border=0 align="center">
<tr bgcolor=#6699CC>
<td>
<div align="center">
<font face="Arial, Helvetica, sans-serif" color="#FFFFFF">
Matériel
</font>
</div>
</td>
<td width="50">
<div align="center"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">
Tarif<br>
journée</font>
</div>
</td>
<td width="50">
</td>
</tr>
<?
$req=mysql_query("SELECT * from materiel ORDER BY Type_materiel");
while ($temp=mysql_fetch_array($req)){
echo "
<tr>
<td bgcolor=#CCCCCC>
<font face='Arial, Helvetica, sans-serif' size='-1'>$temp[Type_materiel]</font>
</td>
<td align=center bgcolor=#CCCCCC>
<font face='Arial, Helvetica, sans-serif' size='-1'>$temp[Tarif_jour]€</font>
</td>
<td bgcolor=#ffffcc><font face='Arial, Helvetica, sans-serif' size='-1'><a href=modules/Bricolage/form_bri.php?id=", $temp[id_mat], "&mat=", urlencode($temp[Type_materiel]),"' target=_blank>réserver</a></font>
</td>
</tr>";
}
mysql_close();
?>
</table>
Cette page me permet l'accès a cette nouvelle page :
<html>
<head>
<title>: : Le site du CE d'AVTF : : | Formulaire bricolage</title>
</head>
<body>
<center>
<?
//récupération variable url
$materiel1 =$id;
$materiel = urlencode($mat);
include('connect.php');
?>
<form method=post action="form_bri.php?id=<? echo $materiel1; ?>&mat=<? echo $materiel; ?>">
<table border="0" bordercolor="#000000" cellspacing="5" width="512">
<tr>
<td colspan="2" bgcolor="66cccc">
<div align="center"><font face="Arial, Helvetica, sans-serif"><? echo $materiel ; ?>+Formulaire
de réservation </font></div>
</td>
</tr>
<tr>
<td width="264">
<div align="right"><font face="Arial, Helvetica, sans-serif" color="#000000" size="-1">Votre
nom : </font></div>
</td>
<td width="229"> <font face="Arial, Helvetica, sans-serif" color="#000000" >
<input name="nom_demandeur" size=20>
</font></td>
</tr>
<tr>
<td width="264">
<div align="right"><font face="Arial, Helvetica, sans-serif" color="#000000" size="-1">Votre
prénom : </font></div>
</td>
<td width="229"> <font face="Arial, Helvetica, sans-serif" color="#000000" >
<input name="prenom_demandeur" size=20>
</font></td>
</tr>
<tr>
<td width="264">
<div align="right"><font face="Arial, Helvetica, sans-serif" size="-1">Service
: </font></div>
</td>
<td width="229"><font face="Arial, Helvetica, sans-serif" color="#000000" >
<input name="service_demandeur" size=20>
</font><font face="Arial, Helvetica, sans-serif"></font></td>
</tr>
<tr>
<td width="264">
<div align="right"><font face="Arial, Helvetica, sans-serif" size="-1">Poste
: </font></div>
</td>
<td width="229"><font face="Arial, Helvetica, sans-serif" color="#000000" >
<input name="poste_demandeur" size=20>
</font><font face="Arial, Helvetica, sans-serif"></font></td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFFFCC">
<div align="center"><font face="Arial, Helvetica, sans-serif" size="-1">Vous
souhaitez enprunter le matériel suivant : </font></div>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" colspan="2">
<div align="center"><font face="Arial, Helvetica, sans-serif" color="#000000" size="-1">
<? echo $mat;?>
</font></div>
</td>
</tr>
<?
//connection à la base SQL
mysql_connect($dbhost,$dbuser,$dbpass);
$connexion_reussi=mysql_selectdb("nuke");
$req=mysql_query("SELECT * from res_mat where id='$id' ORDER BY fin ");
//compte du nombre de lignes de résultat
$numrows=mysql_num_rows($req);
if ($numrows>0){
echo "<tr>"
."<td colspan=\"2\" bgcolor=\"#FFFFCC\">"
."<div align='center'><font face='Arial, Helvetica, sans-serif' size=\"-1\">Voici les réservations déjà effectuées:</font></div>"
."</td>"
."</tr>"
."<tr>"
."<td bgcolor=\"#FFFFFF\" colspan=\"2\">"
." <div align='center'><font face='Arial, Helvetica, sans-serif' color=\"#000000\" size=\"-1\"> ";
//mise en forme de la date
function form_date($ma_date){
$jour=substr($ma_date,8,2);
$mois=substr($ma_date,5,2);
$annee=substr($ma_date,0,4);
$mf=$jour."/".$mois."/".$annee;
return $mf;
}
while ($temp=mysql_fetch_array($req)){
if($temp[fin]>=date("Y-m-d")){
echo "Du <font color=#FF0000>".form_date($temp[deb]).
" au ".form_date($temp[fin])."</font> par ".$temp[prenom]." ".$temp[nom]."<br>";
}
}
}
echo
"</font></div>";
?>
<tr bgcolor="#FFFFFF">
<td width="264"><font face="Arial, Helvetica, sans-serif" size="-1">Matériel
à ajouter à la réservation (facultatif) :<br>
</font><font face="Arial, Helvetica, sans-serif" size="1">exemple: prolongateur
électrique 20m </font></td>
<td width="229"> <font face="Arial, Helvetica, sans-serif">
<textarea name="commentaire" cols="20" rows="2" wrap="VIRTUAL"></textarea>
</font></td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFFFCC">
<div align="center"><font face="Arial, Helvetica, sans-serif" size="-1">Durée
de lemprunt :</font></div>
</td>
</tr>
<tr>
<td width="264">
<div align="right"><font face="Arial, Helvetica, sans-serif" size="-1">Du
: </font></div>
</td>
<td width="229"> <font face="Arial, Helvetica, sans-serif" color="#000000" size="-1">
<select name="jour_debut">
<option selected>
<option>01
<option>02
<option>03
<option>04
<option>05
<option>06
<option>07
<option>08
<option>09
<option>10
<option>11
<option>12
<option>13
<option>14
<option>15
<option>16
<option>17
<option>18
<option>19
<option>20
<option>21
<option>22
<option>23
<option>24
<option>25
<option>26
<option>27
<option>28
<option>29
<option>30
<option>31
</select>
<select name="mois_debut">
<option selected>
<option value="01">janvier
<option value="02">fevrier
<option value="03">mars
<option value="04">avril
<option value="05">mai
<option value="06">juin
<option value="07">juillet
<option value="08">aout
<option value="09">septembre
<option value="10">octobre
<option value="11">novembre
<option value="12">decembre
</select>
<input type="text" name="an_debut" maxlength="4" size="4" value=<? echo date("Y");?> >
</font></td>
</tr>
<tr>
<td width="264">
<div align="right"><font face="Arial, Helvetica, sans-serif" size="-1" >Au</font><font face="Arial, Helvetica, sans-serif" size="-1">
: </font></div>
</td>
<td width="229"><font face="Arial, Helvetica, sans-serif" color="#000000" size="-1">
<select name="jour_fin">
<option selected>
<option>01
<option>02
<option>03
<option>04
<option>05
<option>06
<option>07
<option>08
<option>09
<option>10
<option>11
<option>12
<option>13
<option>14
<option>15
<option>16
<option>17
<option>18
<option>19
<option>20
<option>21
<option>22
<option>23
<option>24
<option>25
<option>26
<option>27
<option>28
<option>29
<option>30
<option>31
</select>
<select name="mois_fin">
<option selected>
<option value="01">janvier
<option value="02">fevrier
<option value="03">mars
<option value="04">avril
<option value="05">mai
<option value="06">juin
<option value="07">juillet
<option value="08">aout
<option value="09">septembre
<option value="10">octobre
<option value="11">novembre
<option value="12">decembre
</select>
<input type="text" name="an_fin" maxlength="4" size="4" value=<? echo date("Y");?>>
</font></td>
</tr>
<tr>
<td colspan="2" bgcolor="66cccc"><font color="66cccc">-</font></td>
</tr>
<tr>
<td width="264">
<div align="left"><font face="Arial, Helvetica, sans-serif" color="#000000" size="-1">
<input type="reset" name="reset" value="Annuler">
</font></div>
</td>
<td width="229">
<div align="right"><font face="Arial, Helvetica, sans-serif" color="#000000" size="-1">
<input type="submit" name="Submit" value="Réserver">
</font></div>
</td>
</tr>
</table>
<p><br>
</p>
</form>
</center>
<?
// retourne le timestamp UNIX de la date saisie par lutilisateur
$deb_res= mktime( 0, 0, 0, $mois_debut, $jour_debut, $an_debut );
$fin_res= mktime( 0, 0, 0, $mois_fin, $jour_fin, $an_fin );
//pour chaque intervalle de réservation existante on regarde si les dates de lutilisateur nempiètent pas
//sur des réservations existentes
$req2=mysql_query("SELECT * from res_mat where id='$id' ORDER BY fin");
//on passe toutes les réservations en revue
while ($temp2=mysql_fetch_array($req2)){
// retourne le timestamp UNIX de la date dans la base
$deb_j= substr($temp2[deb],8,2);
$deb_m= substr($temp2[deb],5,2);
$deb_a=substr($temp2[deb],0,4);
$deb_ref= mktime( 0, 0, 0, $deb_m, $deb_j, $deb_a );
$fin_j= substr($temp2[fin],8,2);
$fin_m= substr($temp2[fin],5,2);
$fin_a=substr($temp2[fin],0,4);
$fin_ref= mktime( 0, 0, 0, $fin_m, $fin_j, $fin_a );
$chevauche=0;
if((($deb_res >= $deb_ref) && ($deb_res <= $fin_ref)) || (($fin_res <= $fin_ref) && ($fin_res >= $deb_ref))){
$chevauche=1;
echo "<script language='javascript'>"
."alert('Matériel non disponible à cette date.')"
."</script>";
}
if( ($deb_res<=$deb_ref) && ($fin_res>=$fin_ref)){
$chevauche=1;
echo "<script language='javascript'>"
."alert('Réservation déjà existente \n dans cet intervalle de dates')"
."</script>";
}
}
if ($nom_demandeur && $jour_debut && $mois_debut && $an_debut && $jour_fin && $mois_fin && $an_fin && !$chevauche){
//insertion de la réservation dans la base
$sql_date_deb=$an_debut."-".$mois_debut."-".$jour_debut;
$sql_date_fin=$an_fin."-".$mois_fin."-".$jour_fin;
$result=mysql_query("INSERT INTO res_mat (id, deb, fin, nom, prenom, service, poste, mat) VALUES ($id, $sql_date_deb, $sql_date_fin, $nom_demandeur, $prenom_demandeur, $service_demandeur, $poste_demandeur, $commentaire)");
if ($result){
//envoi de mail
$materiel2=urldecode($mat);
$name = "Site intranet";
$from = "[email protected]";
$php_header = "From: $name <$from>\n"."Message posté depuis le site intranet :";
//$destinataire = "[email protected]";
$destinataire = "[email protected]";
$sujet = "réservation matériel de bricolage";
$message = "$prenom_demandeur $nom_demandeur \r\n (service : $service_demandeur - poste : $poste_demandeur) \r\n souhaite emprunter le matériel suivant :\r\n $materiel2 \r\n avec : \r\n $commentaire \r\n du $jour_debut/$mois_debut/$an_debut au $jour_fin/$mois_fin/$an_fin";
mail($destinataire, $sujet, $message, $php_header);
echo "<script language='javascript'>"
."alert('Réservation effectuée')"
."window.close()"
."</script>";
}
else{
echo "<script language='javascript'>"
."alert('Réservation non effectuée')"
."window.close()"
."</script>";
}
}
?>
<p><center>
<a href="#" onClick="window.close()"><i><font color="#6699CC">fermer la fenetre</font></i></a>
</center></p>
</body>
</html>
c'est dans cette nouvelle page que je n'arrive pas à récupérer les variables...
Posté : 30 mai 2005, 14:31
par zeus
A la fin de la première page, j'ai remarqué une erreur :
<a href=modules/Bricolage/form_bri.php?id=", $temp[id_mat], "&mat=", urlencode($temp[Type_materiel]),"' target=_blank>réserver</a>
Doit être écrit :
<a href=modules/Bricolage/form_bri.php?id=".$temp[id_mat]."&mat=".urlencode($temp[Type_materiel])."' target=_blank>réserver</a>
La caractère de concaténation est . par ,
Posté : 30 mai 2005, 14:31
par mere-teresa
Veuillez prendre la peine de créer un message clair et concis.
N'hésitez pas à utiliser les balises Code : Tout sélectionner
[/b] et [b][php][/b] afin de rendre l'affichage de votre code lisible et compréhensible par tous.[/color] De plus, prenez le temps de bien rédiger votre message afin d'y inclure le plus de détails possibles. Les messages du style "ça marche pas" n'aident d'aucune façon la résolution du problème. Question précise, réponse précise! L'inverse est aussi valable : Question de mer**, réponse de mer**.
[/quote][quote="Hatice"]voila ma page qui s'appel index.php :?>
<table width=500 border=0 align="center">
<tr bgcolor=#6699CC>
<td>
<div align="center">
<font face="Arial, Helvetica, sans-serif" color="#FFFFFF">
Matériel
</font>
[/quote]
Posté : 30 mai 2005, 16:13
par Hatice
Le probleme persiste
Posté : 30 mai 2005, 16:25
par zeus
J'ai trouvé !!!
Quand tu met des variables dans l'url, dans le script suivant, tu doit les récupérer avec la super-variable GET
//récupération variable url
$materiel1 =$id;
$materiel = urlencode($mat);
Doit donc être remplacé par
//récupération variable url
$materiel1 =$GET['id'];
$materiel = urlencode($GET['mat']);
Mais pourquoi veut tu encodé une variable pour la passer en url APRES l'avoir passé dans l'url ? Si tu compte la décoder, c'est
//récupération variable url
$materiel1 =$GET['id'];
$materiel = urldecode($GET['mat']);
Posté : 30 mai 2005, 17:57
par iclo
un tag html d'option dans un select ça ne doit pas se fermer ??
genre
<option> </option>
Ou c'est moi qui flash ??
Posté : 30 mai 2005, 17:59
par Cyrano
En html 4 ce n'est pas obligatoire
Posté : 30 mai 2005, 17:59
par fab
Non non ça doit se fermer je pense que si il reste ouvert le validateur fait une sale tete mais c'est pas ça qui fait que son script php capote.
Puis merci de ne pas poster des tartines de code!!!!!!!!!!!! de toute façon ça sert a rien car très peu de personnes vont s'amuser a les lires surtout quand elles sont inutiles et pas dans des balises
Posté : 31 mai 2005, 09:16
par Invité
Merci pour toutes vos réponses mais Le probleme persiste

Posté : 31 mai 2005, 09:20
par Cyrano
Merci pour toutes vos réponses mais Le probleme persiste

Ça nous facilite drôlement la tâche comme retour
Dans la page 2, tu vas faire un petit ajout de débuggage:
/* ---- débug ---- */
echo("<pre>");
var_dump($_GET);
echo("</pre>\n");
/* --------------- */
Reviens nous avec le résultat.