forum php

max1395
Invité n'ayant pas de compte PHPfrance

16 déc. 2008, 20:05

bonjour
je suis en train de crée un forum et j'ai des erreur un peu partout . pouver vous les rectifier svp sa serrait gentil . voila sa m'affiche :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\FORUM\view_topic.php on line 48
et voila mon code ( j'ai prciser la ligne ou il y a une erreur ) et puis c'est pas tout sa n'affiche pas les reponse sa affiche que le premier message :

Code : Tout sélectionner

<?php $host="localhost"; // Host name $username="root"; // Mysql username $password=""; // Mysql password $db_name="ml"; // Database name $tbl_name="forum_question"; // Table name // Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // get value of id that sent from address bar $id=$_GET['id']; $sql="SELECT * FROM $tbl_name WHERE id='$id'"; $result=mysql_query($sql); $rows=mysql_fetch_array($result); ?> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td><table width="100%" border="0" cellpadding="3" cellspacing="1" bordercolor="1" bgcolor="#FFFFFF"> <tr> <td bgcolor="#F8F7F1"><strong><? echo $rows['topic']; ?></strong></td> </tr> <tr> <td bgcolor="#F8F7F1"><?php echo $rows['detail']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>By :</strong> <?php echo $rows['name']; ?> <strong>Email : </strong><?php echo $rows['email'];?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Date/time : </strong><?php echo $rows['datetime']; ?></td> </tr> </table></td> </tr> </table> <BR> <?php $tbl_name2="forum_answer"; // Switch to table "forum_answer" $sql2="SELECT (*) FROM $tbl_name2 WHERE question_id='$id'"; $result2=mysql_query($sql2); while($rows= mysql_fetch_array($result2)){ ?> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td><table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td bgcolor="#F8F7F1"><strong>Date/Time</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><?php echo $rows['a_datetime']; ?></td> </tr> <tr> <td width="18%" bgcolor="#F8F7F1"><strong>Name</strong></td> <td width="5%" bgcolor="#F8F7F1">:</td> <td width="77%" bgcolor="#F8F7F1"><?php echo $rows['a_name']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Email</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><?php echo $rows['a_email']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>ID</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><?php echo $rows['a_id']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Answer</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><?php echo $rows['a_answer']; ?></td> </tr> </table></td> </tr> </table><br> <?php } $sql3="SELECT view FROM $tbl_name WHERE id='$id'"; $result3=mysql_query($sql3); $rows=mysql_fetch_array($result3); $view=$rows['view']; // if have no counter value set counter = 1 if(empty($view)){ $view=1; $sql4="INSERT INTO $tbl_name(view) VALUES('$view') WHERE id='$id'"; $result4=mysql_query($sql4); } // count more value $addview=$view+1; $sql5="update $tbl_name set view='$addview' WHERE id='$id'"; $result5=mysql_query($sql5); mysql_close(); ?> <BR> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <form name="form1" method="post" action="add_answer.php"> <td> <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td width="18%"><strong>Name</strong></td> <td width="3%">:</td> <td width="79%"><input name="a_name" type="text" id="a_name" size="45"></td> </tr> <tr> <td><strong>Email</strong></td> <td>:</td> <td><input name="a_email" type="text" id="a_email" size="45"></td> </tr> <tr> <td valign="top"><strong>Answer</strong></td> <td valign="top">:</td> <td><textarea name="a_answer" cols="45" rows="3" id="a_answer"></textarea></td> </tr> <tr> <td>&nbsp;</td> <td><input name="id" type="hidden" value="<?php echo $id; ?>"></td> <td><input type="submit" name="Submit" value="Submit"> <input type="reset" name="Submit2" value="Reset"></td> </tr> </table> </td> </form> </tr> </table>
merci[/code]

Eléphant du PHP | 422 Messages

16 déc. 2008, 20:11

Il faut juste regarder la syntaxe SQL juste avant la ligne 48 et je pense que tu trouveras l'erreur.

Mammouth du PHP | 2937 Messages

16 déc. 2008, 20:12

L'avertissement auquel tu as droit signifie que ta requête SQL comporte une erreur. As-tu essayé ta requête SQL avec phpMyAdmin ?

De plus, à ta place, j'écrirais le code de la requête comme suit :
$sql = "SELECT * FROM ".$tbl_name." WHERE id='".mysql_real_escape_string ($id)."'";
J'ai ajouté un mysql_real_escape_string(), ne sachant ce que retourne réellement $_GET['id'] (un entier ? une chaîne pouvant comporter une tentative d'injection SQL ?).

Et, soit dit en passant, si tu n'as pas besoin de toutes les colonnes de ta table, évite d'utiliser * : par souci d'optimisation, privilégie l'énumération des colonnes dont tu as besoin. ;)
Modifié en dernier par Victor BRITO le 16 déc. 2008, 20:20, modifié 1 fois.

max1395
Invité n'ayant pas de compte PHPfrance

16 déc. 2008, 20:17

ces cette ligne qui pose probleme :
while($rows= mysql_fetch_array($result2)){
et se n'est pas la seul erreur . sa n'affiche pas les reponse postée .

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

16 déc. 2008, 23:45

Bon je vais être le 3ème à te le dire, donc essaye de lire nos réponses et de corriger le problème en conséquence: Le problème vient de ta requête SQL.
Teste là dans PHPmyAdmin et débug là en conséquence...
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 170 Messages

17 déc. 2008, 05:40

Salut,

pendant ta phase de développement, si tu as ce genre d'erreur, tu peux aussi afficher les erreurs MySQL plutôt que les erreurs PHP :
$result=mysql_query($sql) or die(mysql_error());
ça sera plus parlant.


( dans ta base "ml", la table "forum_question" n'existe probablement pas. )