bryce_30 Posté(e) le 23 décembre 2005 Partager Posté(e) le 23 décembre 2005 salut à tous, je suis en train de réaliser un site web, et j'ai un souci sur une de mes pages... Voici le lien. en bas de ma page, j'ai mis des bouton suivant et précédent afin d'aller a la page suivante ou précédente. seulement voilà ça ne fonctionne pas... voici mon code source : <?php @mysql_connect("$cfg_hote","$cfg_user","$cfg_password"); //connexion au serveur SQL $select_base=@mysql_selectdb("$cfg_base"); //Selection de la base de donnees qui porte le meme nom que votre login if (!$select_base) //Si la connexion echoue { echo "<font color=\"#CC0000\"><b>Mauvaise configuration!!! </b></font><br> Vérifiez que votre login et mot de passe sont bien saisi pour la connexion à la base <b>$cfg_base</b>"; } else //Sinon { // Declaration des variables pour indiuer les limites de la requete MYSQL $npp=$_GET['npp']; $nbf=$_GET['nbf']; $requete = "SELECT * FROM `$cfg_table` WHERE 1 ORDER BY `ref` LIMIT $npp,$nbf"; //requete pour afficher la table complete $resultat_sql = mysql_query($requete) or die('Erreur SQL !<br>'.$requete.'<br>'.mysql_error()); $nombreligne =mysql_num_rows($resultat_sql); //nombre de lignes de la table echo "Il y a ".$nombreligne." enregistrements dans la bases de données.<br><br>"; // Creation de la table et de la premiere ligne echo "<table border=\"1\"> <tr> <th>Réf</th> <th>Titre du Film</th> <th>Année de parution</th> <th>Durée</th> <th>Genre</th>"; // Affichage des donnees de la base // On utilise une boucle pour parcourir toutes les lignes $i = 0; while ($i<$nombreligne) { /* La commande mysql_result permet de lire un champ on commence par creer des variables avec les valeurs pour plus de lisibilite du code*/ $ref = mysql_result($resultat_sql,$i,"ref"); $TitreFilm = mysql_result($resultat_sql,$i,"TitreFilm"); $AnneParution = mysql_result($resultat_sql,$i,"AnneParution"); $Duree = mysql_result($resultat_sql,$i,"Duree"); $Genre = mysql_result($resultat_sql,$i,"Genre"); // Il faut ensuite afficher ces valeurs dans le code HTML echo "<tr><td>$ref</td> <td><a href='index.php3?page=info_mov&id=$ref'>$TitreFilm</a></td> <td>$AnneParution</td> <td>$Duree</td> <td>$Genre</td>"; // ne pas oublier d'incrementer i pour la boucle while $i++; } // il ne reste plus qu'a fermer le tableau echo "</table>"; echo "<form action='index.php3?page=test&npp=$npp&nbf=$nbf' method='post' name='next'>"; $npp=$npp+30; echo "<input type='submit' name='suivant' value='Suivant'> </form> <form action='index.php3?page=test&npp=$npp&nbf=$nbf' method='post' name='previous'>"; $npp=$npp-30; echo "<input type='submit' name='précédent' value='Précédent'> </form>"; } ?> c'est à cause de ma variable $npp, mais j'arrive pas résoudre le problème... (en même temps sinon je poserai de question ! ) je sais que mes commande pour ajouter ou soustraire 30 à $npp ne sont pas a la bonne place, mais je sais ou les mettre ... Comment puis je faire ? merci d'avance ! PS : bonnes fêts à tous !!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 23 décembre 2005 Partager Posté(e) le 23 décembre 2005 Normal. $npp=$_GET['npp']; $nbf=$_GET['nbf']; echo "<form action='index.php3?page=test&npp=$npp&nbf=$nbf' method='post' name='next'>"; Tu utilises un formulaire en POST, mais tu veux des variables GET. Moralité? ça foire :) Au passage, fait un isset sur tes variables GET avant de t'en servir... un jour le comportement de php (renvoie NULL) ne sera peut-être pas aussi sympathique. Lien vers le commentaire Partager sur d’autres sites More sharing options...
bryce_30 Posté(e) le 23 décembre 2005 Auteur Partager Posté(e) le 23 décembre 2005 merci pour le get !!! par contre le isset je sais pas comment ça marche... et aussi maintenant ça fonctionne encore moins ! lol alors doit pas y avoir que ça ! edit : j'ai remplacer les get par post... mais ça ne marche pas non plus... il retourne des valeurs vide à npp et nbf ! donc j'ai besoin du isset ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 24 décembre 2005 Partager Posté(e) le 24 décembre 2005 -> $truc = isset($_GET['truc']) ? (int) $_GET['variable get']: 0; Ca ne fait que regarder dans la table des index du tableau si l'index existe ou non. Lien vers le commentaire Partager sur d’autres sites More sharing options...
bryce_30 Posté(e) le 24 décembre 2005 Auteur Partager Posté(e) le 24 décembre 2005 meme avec le isset ça marche pas... ça m'efface la moitié de mon lien et me retourne ça avec la méthode get : http://echoriath.free.fr/BDD_LISTE_DE_FILMS/index.php3?npp=Suivant ou ça : http://echoriath.free.fr/BDD_LISTE_DE_FILMS/index.php3?npp=Pr%C3%A9c%C3%A9dent comme lien... alors que par la méthode post, j'ai ça qui s'affiche : Erreur SQL !SELECT * FROM `collection` WHERE 1 ORDER BY `ref` LIMIT , 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 '' at line 1 et ça dans l'adresse : http://echoriath.free.fr/BDD_LISTE_DE_FILMS/index.php3?page=test&npp=0&nbf=30 EDIT : donc ça veut dire que je n'arrive pas a récupérer les valeur de $npp et $nbf dans l'adresse pour les passer en paramètre dans ma requête SQL... ça m'énerve !!!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
copper Posté(e) le 24 décembre 2005 Partager Posté(e) le 24 décembre 2005 Je pense que c'est mieux d'utiliser des champs hidden pour ce genre de chose un truc dans le genre : echo '<input type="hidden" name="nbf" value="$nbf">'; echo '<input type="hidden" name="nbp" value="$nbp">'; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 24 décembre 2005 Partager Posté(e) le 24 décembre 2005 Hemf, désolé :) depuis que je code objet (vi, c'est possible) en php 4/5, j'ai crée ma propre classe Database qui - si elle ne résoud rien - permet d'éviter le problème d'injection SQL. ie: j'écris plus mysql_query( ... ) mais SELECT * FROM table LIMIT $d:1 OFFSET $d:2 Ce qui est ensuite traîter automatiquement et transformé. Pour ton truc : $requete = "SELECT * FROM `$cfg_table` WHERE 1 ORDER BY `ref` LIMIT $npp,$nbf"; vire le "WHERE 1", sert à rien... $npp c'est quoi ? nombre de page? $npf ? nombre par page? L'erreur SQL que tu as, c'est du à une initialisation à vide de tes variables $npp et $npf, ce qui est compréhensible : par défaut, l'utilisateur n'a pas cliqué sur Suivant/Précédent, donc ça n'existe pas (=null en php) et (string) null == '' en php = chaîne vide. Pour cela, faut utiliser isset() comme je te l'ai montré pour vérifier que tes variables GET sont bien définies, et les utiliser, ou dans le cas où elles sont non définies de les définir avec tes valeurs par défaut (0, 30). Ton problème est simple : echo "<form action='index.php3?page=test&npp=$npp&nbf=$nbf' method='post' name='next'>"; $npp=$npp+30; echo "<input type='submit' name='suivant' value='Suivant'> </form> <form action='' method='post' name='previous'>"; $npp=$npp-30; echo "<input type='submit' name='précédent' value='Précédent'> </form>"; Essaye plutôt ça : <?php $basehref = 'index.php3?page=test&npp=%d&nbf=%d'; ?> <a href="<?php printf($basehref, $npp-30, $nbf); ?>">Précédent</a> <a href="<?php printf($basehref, $npp+30, $nbf); ?>">Suivant</a> 1. quand tu fais des formulaires, utilises les! un champ <input /> avec comme valeur pour name = npp revient au même que de demander au navigateur de passer la variable npp dans l'url (si t'es en mode GET) 2. ça ne sert à rien d'incrémenter une variable après l'avoir affiché, surtout quand ça modifie le comportement de ton script (puisque Précédent revient en fait au suivant) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.