Mysql fetech array: gros problème!

Fermé
DM - 15 avril 2009 à 22:46
 domdom - 20 avril 2009 à 09:30
Bonjour,

Je débute en php ( vraiment, vraiment!), et je voudrais installer un forum: mon problème est un message d'erreur : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homez.116/bookimpu/www/main_forum.php on line 106

Voici le script correspondant à cette ligne:

<?php
while($rows=mysql_fetch_array($result)){
?>

et le script complet:
$sql="SELECT * FROM $forum_questions ORDER BY id DESC";
$result=mysql_query($sql);
?>

<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td bgcolor="#FFFFFF" class="Style75"><? echo $rows['id']; ?></td>
<td bgcolor="#FFFFFF" class="Style75"><a href="view_topic.php?id=<? echo $rows['id']; ?>"><? echo $rows['topic']; ?></a><BR></td>
<td align="center" bgcolor="#FFFFFF" class="Style75"><? echo $rows['view']; ?></td>
<td align="center" bgcolor="#FFFFFF" class="Style75"><? echo $rows['reply']; ?></td>
<td align="center" bgcolor="#FFFFFF" class="Style75"><? echo $rows['datetime']; ?></td>
</tr>

<?php
}
mysql_close();
?>
<tr>
<td colspan="5" align="right" bgcolor="#E6E6E6" class="Style75"><a href="create_topic.php" class="Style77">Poster un nouveau commentaire </a></td>
</tr>
</table>

UN ENORME MERCI A TOUS CEUX QUI POURRONT ECLAIRER MA LANTERNE!!!!!

2 réponses

Et ta variable $forum_questions est initialisée avec quoi ?
1
Je débute!!!
"initialiser avec quoi"? je ne comprends pas ta question! pourtant j'aimerais tellement!!
comment puis-je te renseigner? !!!!

merci beaucoup pour ton aide DOMDOM
0
$forum_questions est le nom d'une variable PHP

la syntaxe d'un ordre select est la suivante

select * (ou nom de champ) from nom de la table where clause where (optionnel )

ex select nom from users where id='toto'
users est le nom de ma table
nom et id sont des noms de champ dans ma table
toto est une des valeurs de id

donc si tu veux utiliser une variable PHP dans ton ordre sql tu dois l'initialiser avec le nom de la table

ex $forum_questions = "users";
$sql = "select nom from $forum_questions where id='toto' ";

mais dans ton exemple tu peux faire tout simplement :
$sql="SELECT * FROM forum_questions ORDER BY id DESC";

et forum_questions est le nom de la table que tu veux lire
1
Salut DOMDOM!
tout d'abord, Merci pour ta réponse!!
ensuite, cette variable

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db($database_Connexionbookunder, $Connexionbookunder)or die("cannot select DB");

$sql="SELECT * FROM $forum_questions ORDER BY id DESC";
// OREDER BY id DESC is order result by descending
$result=mysql_query($sql);
?>

Donc effectivement $sql="SELECT....

mais le post ne s'affiche toujours pas!

alors voilà la page de création de post, peut-être cela pourra-t-il mieux te renseigner!:

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db($database_Connexionbookunder, $Connexionbookunder)or die("cannot select DB");

// get data that sent from form
$topic=$_POST['topic'];
$detail=$_POST['detail'];
$name=$_POST['name'];
$email=$_POST['email'];

$datetime=date("d/m/y h:i:s");

$sql="INSERT INTO $tbl_name(topic, detail, name, email, datetime)VALUES('$topic', '$detail', '$name', '$email', '$datetime')";
$result=mysql_query($sql);

if($result){
echo "Votre sujet a été correctement ajouté.<BR>";
echo "<a href=main_forum.php>Retour au Forum </a>";
}
else {
echo "ERROR";
}
mysql_close();
?>

MERCI POUR TOUTE TON AIDE DOMDOM!!!!
0
Bonjour,


Dans cette ligne : $sql="INSERT INTO $tbl_name(topic, detail, name, email, datetime)VALUES('$topic', '$detail', '$name', '$email', '$datetime')";

les variables $topic, $detail, $name, $email et $datetime sont effectivement initialisées avec les données du POST

mais la variable $tbl_name doit contenir le nom de la table.

Dans ton traitement d'erreur, utilise les fonctions mysql_errno() et mysql_error() pour afficher les codes et messages d'erreur mysql cela aide .
Tu peux faire quelque chose comme cela :
echo "ERREUR SQL no " . mysql_errno() . " : " . mysql_error() . "\n";
echo "SQL = " . $sql ;
0