Problème requete mysql

Eléphanteau du PHP | 18 Messages

08 nov. 2008, 20:22

c'est pour "protèger la variable pour éviter une faille SQL" selon un forum (je ne sais plus lequel). j'ai réutilisé ce que j'y avais vu et si je retire cette ligne, ca ne fonctionnne plus.
Mais mon problème vient de cette fameuse ligne :
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
while $donnees = mysql_fetch_array($retour));
j'ai beau changer un peu tout autour, c'est toujours cette ligne qui me pose pb.

Eléphanteau du PHP | 10 Messages

08 nov. 2008, 20:34

c'est pour "protèger la variable pour éviter une faille SQL" selon un forum (je ne sais plus lequel). j'ai réutilisé ce que j'y avais vu et si je retire cette ligne, ca ne fonctionnne plus.
Mais mon problème vient de cette fameuse ligne :
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
while $donnees = mysql_fetch_array($retour));
j'ai beau changer un peu tout autour, c'est toujours cette ligne qui me pose pb.
une faille sql sur une value numérique jamais vu
tu as regardé si tu avais bien un champ id dans ta table?

Eléphanteau du PHP | 18 Messages

08 nov. 2008, 21:05

oui, et il est en auto increment et de type int

Avatar du membre
ViPHP
ViPHP | 3008 Messages

08 nov. 2008, 22:37

Il te manque une parenthèse ouvrante après le while.

Pour éviter l'injection SQL sur entier, on peut utiliser intval pour s'assurer que la valeur sera numérique.
$id_news = intval($_POST['id_news'])

Eléphanteau du PHP | 10 Messages

08 nov. 2008, 23:20

Il te manque une parenthèse ouvrante après le while.

Pour éviter l'injection SQL sur entier, on peut utiliser intval pour s'assurer que la valeur sera numérique.
$id_news = intval($_POST['id_news'])
justement dans son code donné dans le premier post la parenthése ouvrante est présente

Avatar du membre
ViPHP
ViPHP | 3008 Messages

09 nov. 2008, 00:09

$retour = mysql_query('SELECT * FROM news ORDER BY id DESC') or die(mysql_error());
while ($donnees = mysql_fetch_array($retour));
Rajoute le "or die...etc" et dit l'erreur signalée.

Eléphanteau du PHP | 18 Messages

09 nov. 2008, 02:04

Donc après qqs modifications, je n'ai plus de message d'erreur, les news s'enregistrent dans ma bdd, mais dans mon interface, elles n'apparaissent pas et la date est 01/01/1970 (un peu dépassée).
Voici le code actuel :
<?php
mysql_connect("***", "***", "***");
mysql_select_db("remunerezmoi_news") or die ("erreur connection");
if (isset($_POST['titre']) AND isset($_POST['contenu']))
{
$titre = addslashes($_POST['titre']);
$contenu = addslashes($_POST['contenu']);
if ($_POST['id_news'] == 0)
{

$sql = "INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . time() . "')" or die ("erreur inscription dans bdd");
$req = mysql_query or die ('Erreur SQL : <br/>'.$sql.'<br/><br/>'.mysql_error());
}
else
{
$_POST['id_news'] = addslashes($_POST['id_news']);
$sql = "UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id='" . $_POST['id_news'] . "'" or die ("erreur2");
$req = mysql_query($sql) or die ("erreur3");
}
}


if (isset($_GET['supprimer_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') or die(mysql_error());
while ($donnees = mysql_fetch_array($retour)); 
{
?>
<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>  
J'ai bien les liens "modifier", "supprimer", mais si je veux modifier, tout est vierge.
Modifié en dernier par leuntout le 09 nov. 2008, 13:07, modifié 1 fois.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

09 nov. 2008, 02:32

Il faut nous donner le code de modification alors...

Eléphanteau du PHP | 18 Messages

09 nov. 2008, 13:20

C'était des petites erreurs d'incohérences et des changements d'après les conseils.
Ce qui se passe c'est que les news s'enregistreent bien dans la bdd.
elles s'affichent correctement dans mon index, avec la bonne heure, date, le titre, le contenu.C'est dans le script que j'ai donné plus-haut, qui est cencé me permettre de gérer mes news en les modifiant ou supprimant, que ca merde. Elles n'apparaissent pas et je ne peux rien faire.

Et aucun message d'erreur...

Je ne comprends pas

Avatar du membre
ViPHP
ViPHP | 3008 Messages

09 nov. 2008, 16:03

Que te donne la requête SELECT * FROM news ORDER BY id DESC sous phpmyadmin ?

Eléphanteau du PHP | 18 Messages

09 nov. 2008, 16:24

Je ne sais pas si c'est bien ca que tu demande... :

SELECT *
FROM `news`
LIMIT 0 , 30

Avatar du membre
ViPHP
ViPHP | 3008 Messages

09 nov. 2008, 16:25

Nan ce n'est pas ça, tu vas dans phpmyadmin et tu exécutes la requête en question. Regarde le résultat obtenu.

Eléphanteau du PHP | 18 Messages

09 nov. 2008, 16:35

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ELECT * FROM news ORDER BY id DESC' at line 1

ViPHP
ViPHP | 3607 Messages

09 nov. 2008, 16:40

Hum hum, y manque comme une lettre au début...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

09 nov. 2008, 16:44

Fait attention à ce que tu écris...ça évitera plein de posts inutiles