Variable php dans requête sql
Résolu
clastype
Messages postés
330
Date d'inscription
Statut
Membre
Dernière intervention
-
clastype Messages postés 330 Date d'inscription Statut Membre Dernière intervention -
clastype Messages postés 330 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voila j'ai récupérer un script php de pagination pour mon site web. Il fonctionne correctement mais j'aimerai ajouter une variable pour ne prendre qu'une certaine partie dans ma BDD. Je m'explique, voici le code :
Dans les requêtes $retour_messages et retour total, j'ai ajouté la variable "$var" qui insère un paramètre récupéré dans l'adresse de la page par $var = $_GET['categorie'];
Et c'est la que les problèmes arrivent, j'ai cette erreur :
Je pense que le problème se situe au niveau de :
Mais je ne suis sûr de rien.
Merci d'avance de votre aide.
voila j'ai récupérer un script php de pagination pour mon site web. Il fonctionne correctement mais j'aimerai ajouter une variable pour ne prendre qu'une certaine partie dans ma BDD. Je m'explique, voici le code :
$var = $_GET['categorie']; <?php } } else { $messagesParPage=5; //Nous allons afficher 5 messages par page. //Une connexion SQL doit être ouverte avant cette ligne... $retour_total=mysql_query("SELECT COUNT(*) AS total FROM images where categorie IN (Select categorie from images where categorie='$var')"); //Nous récupérons le contenu de la requête dans $retour_total $donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau. $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total. echo $total; //Nous allons maintenant compter le nombre de pages. $nombreDePages=ceil($total/$messagesParPage); if(isset($_GET['page'])) // Si la variable $_GET['page'] existe... { $pageActuelle=intval($_GET['page']); if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages... { $pageActuelle=$nombreDePages; } } else // Sinon { $pageActuelle=1; // La page actuelle est la n°1 } $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire echo $premiereEntree; echo $messagesParPage; // La requête sql pour récupérer les messages de la page actuelle. $retour_messages=mysql_query("SELECT * FROM images where categorie='$var' ORDER BY id DESC LIMIT '$premiereEntree', '$messagesParPage'"); while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle { //Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design... //De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message. ?><table width="400" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><strong><center><?php echo stripslashes($donnees_messages['nom']); ?></center></strong></td> </tr> <tr> <td><center><img src="data/images/<?php echo $donnees_messages['lien']; ?>" width="160px" height="160px" /></center></td> </tr> </table>
Dans les requêtes $retour_messages et retour total, j'ai ajouté la variable "$var" qui insère un paramètre récupéré dans l'adresse de la page par $var = $_GET['categorie'];
Et c'est la que les problèmes arrivent, j'ai cette erreur :
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
Je pense que le problème se situe au niveau de :
$retour_messages=mysql_query("SELECT * FROM images where categorie='$var' ORDER BY id DESC LIMIT '$premiereEntree', '$messagesParPage'");
Mais je ne suis sûr de rien.
Merci d'avance de votre aide.
A voir également:
- Variable php dans requête sql
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Logiciel sql - Télécharger - Bases de données
- Php alert ✓ - Forum PHP
- Variable d'environnement temp - Forum Word
3 réponses
Bonsoir
Les paramètres de LIMIT doivent obligatoirement être numériques et ne doivent donc pas être être encadrés d'apostrophes.
Dans la plupart des cas, sql traduit les chaînes (entre apostrophes) en nombres automatiquement, mais justement PAS dans le cas de LIMIT.
Tu devrais donc écrire :
Et Zep3k!GnO a raison en ce qui concerne l'utilisation de mysql.
... LIMIT '$premiereEntree', '$messagesParPage'
Les paramètres de LIMIT doivent obligatoirement être numériques et ne doivent donc pas être être encadrés d'apostrophes.
Dans la plupart des cas, sql traduit les chaînes (entre apostrophes) en nombres automatiquement, mais justement PAS dans le cas de LIMIT.
Tu devrais donc écrire :
... LIMIT $premiereEntree, $messagesParPage
Et Zep3k!GnO a raison en ce qui concerne l'utilisation de mysql.
Facile, pour voir le message fais appel à mysql_error() https://www.php.net/manual/fr/function.mysql-error.php :
Attention, tu notera que tu utilises "mysql_*" qui est obsolète, il est conseillé de passer par "mysqli_*".
$retour_messages=mysql_query("SELECT * FROM images where categorie='$var' ORDER BY id DESC LIMIT '$premiereEntree', '$messagesParPage'") or die('Error while querying : '.mysql_error());
Attention, tu notera que tu utilises "mysql_*" qui est obsolète, il est conseillé de passer par "mysqli_*".