Problème requete mysql

Eléphanteau du PHP | 18 Messages

08 nov. 2008, 12:52

Bonjour,
Je travail sur un script pour mon site pour un système de news.
Et j'ai un message d'erreur sur la ligne si-dessous :

$retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour))

Pouvez vous me dire ce qui cloche?
Merci!

lux
Eléphant du PHP | 372 Messages

08 nov. 2008, 13:00

Et c'est quoi le message d'erreur ? :P

Eléphanteau du PHP | 18 Messages

08 nov. 2008, 13:13

Salut!
quand je remplis ma news, que je la valide le message est :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in *****/liste_news.php on line 71

la ligne 71 correspond à la deuxième ligne que j'ai mis plus haut.

Je suis débutant en php...

Mammouth du PHP | 686 Messages

08 nov. 2008, 13:14

Oui qu'est ce dont le message d'errur on veut tt savoir !!!

ViPHP
ViPHP | 1996 Messages

08 nov. 2008, 13:47

Il te dis en substance que mysql_fecth_array n'a pas trouver de ressource sql à traiter. (arrête aussi d'être parano en ne montrant qu'un bout de ton code). Vérifie si les mysql_connect et mysql_select_db sont bien avant ton appel de requete et que tu n'as pas de mysql_close entre les deux.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 18 Messages

08 nov. 2008, 15:19

Ok.
donc voici le scripte en son entier.
L'ouverture de la base ne pose pas pb, c apres.

<body>

<h2><a href="rediger_news.php">Ajouter une news</a></h2>
<?php
mysql_connect("***", "***", "***");
mysql_select_db("news");
if (isset($_POST['titre']) AND isset($_POST['contenu']))
{
$titre = addslashes($_POST['titre']);
$contenu = addslashes($_POST['contenu']);
if ($_POST['id_news'] == 0)
{

mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . time() . "')");
}
else
{
$_POST['id_news'] = addslashes($_POST['id_news']);
mysql_query("UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id='" . $_POST['id_news'] . "'");
}
}


if (isset($_GET['supprimer_news'])) // Si on demande de supprimer une news
{

$_GET['supprimer_news'] = addslashes($_GET['supprimer_news']);
mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\'');
}
?>
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>Titre</th>
<th>Date</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
?>
<tr>
<td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['titre']); ?></td>
<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
</tr>
<?php
}
?>
</table>
</body>
</html>
Modifié en dernier par leuntout le 08 nov. 2008, 16:15, modifié 1 fois.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

08 nov. 2008, 15:49

leuntout, efface au plus vite les accès de ta base !

Utilise le bbcode PHP pour que ton code soit plus lisible.

Eléphanteau du PHP | 18 Messages

08 nov. 2008, 16:38

Merci beaucoup!
Voila un bon exemple de ce que ca donne de faire 2 choses à la fois...

Ok je remet le code :
<body>

<h2><a href="rediger_news.php">Ajouter une news</a></h2>
<?php
mysql_connect("***", "***", "***");
mysql_select_db("news");
if (isset($_POST['titre']) AND isset($_POST['contenu']))
{
$titre = addslashes($_POST['titre']);
$contenu = addslashes($_POST['contenu']);
if ($_POST['id_news'] == 0)
{

mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . time() . "')");
}
else
{
$_POST['id_news'] = addslashes($_POST['id_news']);
mysql_query("UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id='" . $_POST['id_news'] . "'");
}
}


if (isset($_GET['supprimer_news'])) // Si on demande de supprimer une news
{

$_GET['supprimer_news'] = addslashes($_GET['supprimer_news']);
mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\'');
}
?>
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>Titre</th>
<th>Date</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
?>
<tr>
<td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['titre']); ?></td>
<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
</tr>
<?php
}
?>
</table>
</body>
</html>

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

08 nov. 2008, 17:13

$_POST['id_news'] = addslashes($_POST['id_news']);
:shock:

Eléphanteau du PHP | 18 Messages

08 nov. 2008, 17:28

Salut albat.
Ou est le pb dans cette commande?

Mammouth du PHP | 686 Messages

08 nov. 2008, 18:00

Euh moi je pense que le soucis c'est que tu peux pas redefinir une variable $_POST comme ca.
a la limite fait
$id_news = addslashes($_POST['id_news']);

Eléphanteau du PHP | 10 Messages

08 nov. 2008, 18:26

Bien sur que si tu peux redéfinir une variable $_POST
Par contre ce qui m'échappe pourquoi utiliser un addslashes sur une valeur numérique ?
De plus ta requete à l'air OK, donc ta table contient bien un champ id ? si oui se nomme t'il bien id ?

Mammouth du PHP | 686 Messages

08 nov. 2008, 18:34

Abon savai pas, a ba ca m'evitera de passer par d'autres variables a l'avenir lol
le maitre a parlé

Eléphanteau du PHP | 10 Messages

08 nov. 2008, 19:12

Abon savai pas, a ba ca m'evitera de passer par d'autres variables a l'avenir lol
le maitre a parlé
Le maitre je dirais pas ca je suis encore loin de maitrisser php la preuve j'ai demander de l'aide ici :D
M'enfin moi perso je préfére creer une variable ca fait plus propre et ca evite les erreurs de concaténation :p

Mammouth du PHP | 686 Messages

08 nov. 2008, 19:21

ca evite les erreurs de concaténation
Tout à fait d'acc avec toi !