Vous n'êtes pas identifié(e).
Bonjour à tous,
j'affiche des fiches produits, tout se passe bien puisque si je rajoute un ' ou un ", le résultat s'affiche quand même.
Mais j'ai voulu rajouter un script pour poser des commentaires, et à l'affichage, cette fois, si je rajoute un ' ou ", la fiche produit s'affiche mais j'ai une erreur sur les commentaires, je vois pas du tout quoi faire.
$_GET['id_produit'] = addslashes ($_GET['id_produit']);
$Requete_SQL2 = "SELECT * FROM commentaire WHERE valid = '1' AND id_produit = $id_produit ORDER BY date DESC ";
mysql_real_escape_string($id_adresse);
$result = mysql_query($Requete_SQL2) or die("Erreur de Sélection dans la base : ". $Requete_SQL2 .'<br />'. mysql_error());
error_reporting(55);
// creation et affichage de la table
while($val=mysql_fetch_array($result))
if($val["valid"] == 1)
{
$date=$val[date];
$login=$val[login];
$com_pos=$val[com_pos];
$com_neg=$val[com_neg];
echo "<span class=\"texteavis\">Avis : </span><span class=\"textenormal\">";
echo stripslashes($com_pos);
Dernière modification par theavengers (13-04-2012 11:21:33)
Hors ligne
J'ai oublié de rajouté l'erreur ...
PS : je ferais la guerre aux étoiles
Dernière modification par theavengers (13-04-2012 11:22:11)
Hors ligne
Bon, j'avance, j'ai rajouté des '
Je n'ai plus de message d'erreur, mais les commentaires ne s'affichent pas.
Hors ligne
Bonjour,
Je pense que tu n'as pas bien compris à quoi servent les quotes et leur rôles dans MySQL. Les quotes, qu'elles soient simples ou doubles servent à délimiter une chaîne de caractère et donc un champ défini comme tel au sein de la table lue. La fonction addslashes de PHP ne sert qu'à échapper des simples quotes ou des doubles quotes dans une chaîne de caractères pour éviter qu'ils soient confondus avec ceux qui servent à délimiter la chaîne de caractères. A partir de là tu comprendras aisément qu'il est parfaitement inutile de mettre des ids (sauf s'ils sont constitués par une chaîne de caractères) entre simple quotes et encore plus de faire un addslashes('id'). Pour les valeurs numériques un simple typage suffit à les protéger en faisant un simple intval() ou floatval() et à partir de là il n'est plus nécessaire de les entourer de simple quote dans ta requête. Par contre pour ton commentaire il faut absoluement faire par exemple au minimum un addslashes dessus et un stripslashes à la lecture pour éviter les erreurs.
Donc ta dernière requête peut s'écrire (elle ne s'en portera que mieux)
Ensuite pour tes commentaires, s'il s'agit de la variable php $com_pos, ton problème ne viens pas de là mais de ton
. En effet, il faut savoir que lorsque tu récupères tes données en php toutes les valeurs dans ton resultset sont typées en chaînes de caractères. Pour les exploiter il te faut les retyper. Donc ici pour le faire directement il te faut écrire
++
Dernière modification par Jc (13-04-2012 14:00:19)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Merci beaucoup pour ces explications. J'avais entre midi et deux intval, mais je ne voyais pas trop la différence. Maintenant effectivement, ça simplifie les choses.
Je vais devoir revoir toutes mes pages car je pense que je me suis laché sur les addslash pour les ids
Pourrais tu me dire la différence entre :
et
J'ai testé les deux, et cela fonctionne, mais c'est la 1er fois que je vois ===
Hors ligne
Oui bien sûr.
l'opérateur === est un opérateur d'égalité stricte. C'est à dire qu'il va vérifier l'égalité de valeur et de type ou dit différemment il va vérifier que les deux valeurs sont strictement identiques, alors que == va vérifier la simple égalité.
Exemple
Dernière modification par Jc (13-04-2012 14:47:59)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Vraiment merci d'avoir pris le temps pour toutes ces explications Je corrige immédiatement.
Hors ligne
Saluton,
J'en profite pour une petite piqûre de rappel contre les conflits inter-galactiques.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Merci Maljuna Kris, je teste touours avec des étoiles et puis de fini avec les variables, mais comme je suis tête en l'air, une piqure de rappel fait toujours du bien
Hors ligne