Count défectueux PHP/MYSQL
Résolu
Ricky38
Messages postés
4349
Date d'inscription
Statut
Contributeur
Dernière intervention
-
medoc13 Messages postés 65 Date d'inscription Statut Membre Dernière intervention -
medoc13 Messages postés 65 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voilà je récupère une variable et j'utilise pour l'affichage un système de page et je travaille sur 2 tables en même temps.
Mon code:
Voilà sur la première page exemple page 1 de 3 tout s'affiche à merveille exemple si ma variable récupérée est POP et bien ça affiche tout où biensur la colonne genre contient POP. Le problème survient quand je vais sur la 2 ième page ( 2 de 3) là tout est mêlé et je suis certain que le problème vient de ma ligne en gras mais j'ai beau essayé différentes requête je ne trouve pas la bonne.
Si quelqu'un pouvait m'aider à résoudre ce problème je lui en serait reconnaissant :)
Merci d'avance !
voilà je récupère une variable et j'utilise pour l'affichage un système de page et je travaille sur 2 tables en même temps.
Mon code:
<?php $h = $_POST['name']; // how many rows to show per page $rowsPerPage = 10; // by default we show first page $pageNum = 1; // if $_GET['page'] defined, use it as page number if(isset($_GET['page'])) { $pageNum = $_GET['page']; } // counting the offset $offset = ($pageNum - 1) * $rowsPerPage; $requete = mysql_query("SELECT id,nom,genres,origine,images_tn FROM groupes WHERE genres LIKE '%$h%' UNION SELECT id,nom,genres,origine,images_tn FROM artistes WHERE genres LIKE '%$h%' ORDER BY nom LIMIT $offset, $rowsPerPage"); while($donnees = mysql_fetch_array($requete)) { // boucle parcours des resultats $id = $donnees['id']; $nom = $donnees['nom']; $quand = $donnees['quand']; $lieu = $donnees['lieu']; $ville = $donnees['ville']; $origine = $donnees['origine']; $genres = $donnees['genres']; $images = $donnees['images']; $images_tn = $donnees['images_tn']; ?> </p> <p> <p> <p> <center> <table align="center" width="450" border="0" cellpadding="0"> <tr> <td width="52" valign="middle"><form method="post" action="genres_details.php"> <input type="image" border="0" value="Submit" src="<?php echo "$images_tn"; ?>" name="img" border="0"> <input type="hidden" name="img" value="<?php echo "$images_tn"; ?>"> </form></td> <td width="133" valign="middle" class="Style23"><?php echo "$nom"; ?></td> <td width="133" valign="middle" class="Style23"><?php echo "$genres"; ?></td> <td width="133" valign="middle" class="Style23"><?php echo "$origine"; ?></td> </tr> </table> <?php } echo '<br>'; // how many rows we have in database $query = "SELECT COUNT(*) AS numrows FROM groupes WHERE genres LIKE '%$h%' UNION SELECT COUNT(*) AS numrows FROM artistes WHERE genres LIKE '%$h%'"; $result = mysql_query($query) or die('Error, query failed'); $row = mysql_fetch_array($result, MYSQL_ASSOC); $numrows = $row['numrows']; // how many pages we have when using paging? $maxPage = ceil($numrows/$rowsPerPage); $self = $_SERVER['PHP_SELF']; // creating 'previous' and 'next' link // plus 'first page' and 'last page' link // print 'previous' link only if we're not // on page one if ($pageNum > 1) { $page = $pageNum - 1; $prev = " <a href=\"$self?page=$page\">[Précédente]</a> "; $first = " <a href=\"$self?page=1\">[Première Page]</a> "; } else { $prev = ' [Précédente] '; // we're on page one, don't enable 'previous' link $first = ' [Première Page] '; // nor 'first page' link } // print 'next' link only if we're not // on the last page if ($pageNum < $maxPage) { $page = $pageNum + 1; $next = " <a href=\"$self?page=$page\">[Suivante]</a> "; $last = " <a href=\"$self?page=$maxPage\">[Dernière Page]</a> "; } else { $next = ' [Suivante] '; // we're on the last page, don't enable 'next' link $last = ' [Dernière Page] '; // nor 'last page' link } // print the page navigation link echo $first . $prev . " <strong>Page $pageNum de $maxPage</strong> " . $next . $last; ?>
Voilà sur la première page exemple page 1 de 3 tout s'affiche à merveille exemple si ma variable récupérée est POP et bien ça affiche tout où biensur la colonne genre contient POP. Le problème survient quand je vais sur la 2 ième page ( 2 de 3) là tout est mêlé et je suis certain que le problème vient de ma ligne en gras mais j'ai beau essayé différentes requête je ne trouve pas la bonne.
Si quelqu'un pouvait m'aider à résoudre ce problème je lui en serait reconnaissant :)
Merci d'avance !
A voir également:
- Count défectueux PHP/MYSQL
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
- Php alert ✓ - Forum PHP
- Alert PHP - Forum PHP
13 réponses
Salut,
tu peux essayer
// if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}
else
{
$pageNum = 1; // by default we show first page
}
en esperant que ça t'aideras
tu peux essayer
// if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}
else
{
$pageNum = 1; // by default we show first page
}
en esperant que ça t'aideras
salut et merci pour ta réponse
mais j'aimerais savoir si ma requête est bonne car pour le premier affichage j'utilise cette requete et tout va bien mais une fois l'affichage faite il ne me donne pas le choix d'aller sur la 2 ieme page avec cette requete.
parcontre si je mets :
$query = "SELECT COUNT(*) AS numrows FROM groupes";
ça apparait sur la 2 ieme page mes tout est melé et il va chercher d'autres genres aussi
Merci de ton aide
mais j'aimerais savoir si ma requête est bonne car pour le premier affichage j'utilise cette requete et tout va bien mais une fois l'affichage faite il ne me donne pas le choix d'aller sur la 2 ieme page avec cette requete.
parcontre si je mets :
$query = "SELECT COUNT(*) AS numrows FROM groupes";
ça apparait sur la 2 ieme page mes tout est melé et il va chercher d'autres genres aussi
Merci de ton aide
Re salut,
il faut que tu ajoute ALL apres le UNION :
$requete = mysql_query("SELECT id,nom,genres,origine,images_tn FROM groupes WHERE genres LIKE '%$h%'
UNION ALL SELECT id,nom,genres,origine,images_tn FROM artistes WHERE genres LIKE '%$h%' ORDER BY nom LIMIT $offset, $rowsPerPage");
il faut que tu ajoute ALL apres le UNION :
$requete = mysql_query("SELECT id,nom,genres,origine,images_tn FROM groupes WHERE genres LIKE '%$h%'
UNION ALL SELECT id,nom,genres,origine,images_tn FROM artistes WHERE genres LIKE '%$h%' ORDER BY nom LIMIT $offset, $rowsPerPage");
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
essaye ça
UNION ALL => si tu veux tous les resultats
UNION => si tu veux pas de doublons
$query = "(SELECT COUNT(*) FROM groupes WHERE genres LIKE '%$h%') UNION ALL (SELECT COUNT(*) FROM artistes WHERE genres LIKE '%$h%')";
$result = mysql_query($query) or die('Error, query failed');
while($row = mysql_fetch_array($result, MYSQL_ASSOC))){
foreach($row as $key => $val)
{
$nb[]=$val;
}
}
$numrows=$nb[0]+$nb[1];
// how many pages we have when using paging?
$maxPage = ceil($numrows/$rowsPerPage);
UNION ALL => si tu veux tous les resultats
UNION => si tu veux pas de doublons
$query = "(SELECT COUNT(*) FROM groupes WHERE genres LIKE '%$h%') UNION ALL (SELECT COUNT(*) FROM artistes WHERE genres LIKE '%$h%')";
$result = mysql_query($query) or die('Error, query failed');
while($row = mysql_fetch_array($result, MYSQL_ASSOC))){
foreach($row as $key => $val)
{
$nb[]=$val;
}
}
$numrows=$nb[0]+$nb[1];
// how many pages we have when using paging?
$maxPage = ceil($numrows/$rowsPerPage);
merci medoc13
bon la page 1 de ... s'affiche correctement puisque $h = $_POST['name'];
Pour ce qui est de la page 2 et les suivante elle ne tient pas compte du WHERE genres LIKE '%$h%' donc l'affichage me donne d'autres genre.
Comment faire pour qu'il tienne compte de la varriable $h = $_POST['name']; qui vient du haut de ma page.
Merci encore de tes réponse et de ta patience ;)
bon la page 1 de ... s'affiche correctement puisque $h = $_POST['name'];
Pour ce qui est de la page 2 et les suivante elle ne tient pas compte du WHERE genres LIKE '%$h%' donc l'affichage me donne d'autres genre.
Comment faire pour qu'il tienne compte de la varriable $h = $_POST['name']; qui vient du haut de ma page.
Merci encore de tes réponse et de ta patience ;)
il y a deux solution,
soit tu passe ta variable par session, soit avec la methode get
exemple avec get
$next = " <a href=\"$self?page=$page&genre=$genre\">[Suivante]</a> ";
et à la place de
$h = $_POST['name'];
$h = $_GET['genre'];
exemple avec session
session_start();
$_SESSION['genre']=$_POST['name'];
et dans ton script tu mets
if(isset($_POST['name'])){
$h=$_POST['name'];
}
else
{
//pour la methode get
if(isset($_GET['genre'])){
$h=$_GET['genre'];
}
//pour la methode session
if(isset($_SESSION['genre'])){
$h=$_SESSION['genre'];
}
}
j'espere que ce n'est pas trop brouillon a comprendre, et que ça t'aideras
soit tu passe ta variable par session, soit avec la methode get
exemple avec get
$next = " <a href=\"$self?page=$page&genre=$genre\">[Suivante]</a> ";
et à la place de
$h = $_POST['name'];
$h = $_GET['genre'];
exemple avec session
session_start();
$_SESSION['genre']=$_POST['name'];
et dans ton script tu mets
if(isset($_POST['name'])){
$h=$_POST['name'];
}
else
{
//pour la methode get
if(isset($_GET['genre'])){
$h=$_GET['genre'];
}
//pour la methode session
if(isset($_SESSION['genre'])){
$h=$_SESSION['genre'];
}
}
j'espere que ce n'est pas trop brouillon a comprendre, et que ça t'aideras
salut les gars
medoc13, si tu veux conserver une mise en forme, utilise les balises, c'est le quatrieme bouton en haut de la fenetre d'ecriture
tu mets tun texte entre
Ricky, j'ai recupérér ce qui suit et qui n'as pus etre posté sur le forum, si ça peut rendre service .
*****************************
De Ricky
merci encore
Mais j'avoue que je suis pas mal melé.
regarde je te donne mon code :
Avec tous le code que j'ai vu pour ces pages je ne vois plus rien, c'est parce que c'est assez urgent car ça prendrait le bord de la tablette pour le moment loll mais bon je ne peux pas me le permettre. Aurais-tu la gentillesse d'intègrer ton code dans le mien stp. tu serais vraiment gentil.
Merci d'avance
medoc13, si tu veux conserver une mise en forme, utilise les balises, c'est le quatrieme bouton en haut de la fenetre d'ecriture
tu mets tun texte entre
Ricky, j'ai recupérér ce qui suit et qui n'as pus etre posté sur le forum, si ça peut rendre service .
*****************************
De Ricky
merci encore
Mais j'avoue que je suis pas mal melé.
regarde je te donne mon code :
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="submit" name="name" value="Blues"> <input type="submit" name="name" value="Classique"> <input type="submit" name="name" value="Country"> <input type="submit" name="name" value="Dance"> <input type="submit" name="name" value="Disco"> <input type="submit" name="name" value="Electro"> <input type="submit" name="name" value="Folk"> <input type="submit" name="name" value="Funk"> <input type="submit" name="name" value="Gospel"> <input type="submit" name="name" value="Grunge"> <input type="submit" name="name" value="Hip Hop"> <input type="submit" name="name" value="Jazz"> <input type="submit" name="name" value="Métal"> <input type="submit" name="name" value="Musique du monde"> <input type="submit" name="name" value="New Wave"> <input type="submit" name="name" value="Pop"> <input type="submit" name="name" value="Punk"> <input type="submit" name="name" value="Rap"> <input type="submit" name="name" value="Reggae"> <input type="submit" name="name" value="Rythm n'Blues"> <input type="submit" name="name" value="Rock"> <input type="submit" name="name" value="Soul"> <input type="submit" name="name" value="Techno"> </form></div> <div id="date"> <script language="JavaScript"> navvers = navigator.appVersion.substring(0,1); if (navvers > 3) navok = true; else navok = false; today = new Date; jour = today.getDay(); numero = today.getDate(); if (numero<10) numero = "0"+numero; mois = today.getMonth(); if (navok) annee = today.getFullYear(); else annee = today.getYear(); TabJour = new Array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"); TabMois = new Array("janvier","février","mars","avril","mai","juin","juillet","aout","septembre","octobre","novembre","dééembre"); messageDate = TabJour[jour] + " " + numero + " " + TabMois[mois] + " " + annee; </script> <script language="JavaScript"> document.write(messageDate); </script> </div> <div class="Style60" id="Layer1"><a href="index.php" class="Style60">Accueil </a><span class="Style66">|</span> <a href="mailto:zonespectacle@live.fr">Contact</a> </div> <div id="pubaxanti"> <div align="center"><span class="Style60"><a href="index.php">Accueil</a> <span class="Style66">|</span> <a href="mailto:zonespectacle@live.fr">Contact</a> <span class="Style66">|</span> <a href="search.php">Rechercher</a></span><br/> <br/> <a href="https://www.axanti.com/?idaff=3390 " target="_blank"><img src="image/468x60.jpg" alt="Axanti" width="468" height="60" border="0" /></a></div> </div> <div id="donnees"> <?php $h = $_POST['name']; // how many rows to show per page $rowsPerPage = 5; // by default we show first page $pageNum = 1; // if $_GET['page'] defined, use it as page number if(isset($_GET['page'])) { $pageNum = $_GET['page']; } // counting the offset $offset = ($pageNum - 1) * $rowsPerPage; $requete = mysql_query("SELECT id,nom,genres,origine,images_tn FROM groupes WHERE genres LIKE '%$h%' UNION SELECT id,nom,genres,origine,images_tn FROM artistes WHERE genres LIKE '%$h%' ORDER BY nom LIMIT $offset, $rowsPerPage"); while($donnees = mysql_fetch_array($requete)) { // boucle parcours des resultats $id = $donnees['id']; $nom = $donnees['nom']; $quand = $donnees['quand']; $lieu = $donnees['lieu']; $ville = $donnees['ville']; $origine = $donnees['origine']; $genres = $donnees['genres']; $images = $donnees['images']; $images_tn = $donnees['images_tn']; ?> </p> <p> <p> <p> <center> <table align="center" width="450" border="0" cellpadding="0"> <tr> <td width="52" valign="middle"><form method="post" action="genres_details.php"> <input type="image" border="0" value="Submit" src="<?php echo "$images_tn"; ?>" name="img" border="0"> <input type="hidden" name="img" value="<?php echo "$images_tn"; ?>"> </form></td> <td width="133" valign="middle" class="Style23"><?php echo "$nom"; ?></td> <td width="133" valign="middle" class="Style23"><?php echo "$genres"; ?></td> <td width="133" valign="middle" class="Style23"><?php echo "$origine"; ?></td> </tr> </table> <?php } $h = $_POST['name']; echo '<br>'; // how many rows we have in database $query = "(SELECT COUNT(*) FROM groupes WHERE genres LIKE '%$h%') UNION (SELECT COUNT(*) FROM artistes WHERE genres LIKE '%$h%')"; $result = mysql_query($query) or die('Error, query failed'); while($row = mysql_fetch_array($result, MYSQL_ASSOC)){ foreach($row as $key => $val) { $nb[]=$val; } } $numrows=$nb[0]+$nb[1]; // how many pages we have when using paging? $maxPage = ceil($numrows/$rowsPerPage); $self = $_SERVER['PHP_SELF']; // creating 'previous' and 'next' link // plus 'first page' and 'last page' link // print 'previous' link only if we're not // on page one if ($pageNum > 1) { $page = $pageNum - 1; $prev = " <a href=\"$self?page=$page\">[Précédente]</a> "; $first = " <a href=\"$self?page=1\">[Première Page]</a> "; } else { $prev = ' [Précédente] '; // we're on page one, don't enable 'previous' link $first = ' [Première Page] '; // nor 'first page' link } // print 'next' link only if we're not // on the last page if ($pageNum < $maxPage) { $page = $pageNum + 1; $next = " <a href=\"$self?page=$page\">[Suivante]</a> "; $last = " <a href=\"$self?page=$maxPage\">[Dernière Page]</a> "; } else { $next = ' [Suivante] '; // we're on the last page, don't enable 'next' link $last = ' [Dernière Page] '; // nor 'last page' link } // print the page navigation link echo $first . $prev . " <strong>Page $pageNum de $maxPage</strong> " . $next . $last; ?>
Avec tous le code que j'ai vu pour ces pages je ne vois plus rien, c'est parce que c'est assez urgent car ça prendrait le bord de la tablette pour le moment loll mais bon je ne peux pas me le permettre. Aurais-tu la gentillesse d'intègrer ton code dans le mien stp. tu serais vraiment gentil.
Merci d'avance
<div id="donnees"> <?php //pour la version session //pour utiliser la version session décommente ces lignes et commente celle de la methode get /*session_start(); if(isset($_POST['name'])){ $h = $_POST['name']; $_SESSION['genre']=$h; }else{ if(isset($_SESSION['genre'])){ $h = $_SESSION['genre']; } }*/ //pour la version session //pour la version get if(isset($_POST['name'])){ $h = $_POST['name']; }else{ if(isset($_GET['genre'])){ $h = $_GET['genre']; } } //pour la version get // how many rows to show per page $rowsPerPage = 5; // if $_GET['page'] defined, use it as page number if(isset($_GET['page'])) { $pageNum = $_GET['page']; }else{ $pageNum =1; } // counting the offset $offset = ($pageNum - 1) * $rowsPerPage; $requete = mysql_query("SELECT id,nom,genres,origine,images_tn FROM groupes WHERE genres LIKE '%$h%' UNION SELECT id,nom,genres,origine,images_tn FROM artistes WHERE genres LIKE '%$h%' ORDER BY nom LIMIT $offset, $rowsPerPage"); while($donnees = mysql_fetch_array($requete)) { // boucle parcours des resultats $id = $donnees['id']; $nom = $donnees['nom']; $quand = $donnees['quand']; $lieu = $donnees['lieu']; $ville = $donnees['ville']; $origine = $donnees['origine']; $genres = $donnees['genres']; $images = $donnees['images']; $images_tn = $donnees['images_tn']; ?> </p> <p> <p> <p> <center> <table align="center" width="450" border="0" cellpadding="0"> <tr> <td width="52" valign="middle"><form method="post" action="genres_details.php"> <input type="image" border="0" value="Submit" src="<?php echo "$images_tn"; ?>" name="img" border="0"> <input type="hidden" name="img" value="<?php echo "$images_tn"; ?>"> </form></td> <td width="133" valign="middle" class="Style23"><?php echo "$nom"; ?></td> <td width="133" valign="middle" class="Style23"><?php echo "$genres"; ?></td> <td width="133" valign="middle" class="Style23"><?php echo "$origine"; ?></td> </tr> </table> <?php } echo '<br>'; // how many rows we have in database $query = "(SELECT COUNT(*) FROM groupes WHERE genres LIKE '%$h%') UNION (SELECT COUNT(*) FROM artistes WHERE genres LIKE '%$h%')"; $result = mysql_query($query) or die('Error, query failed'); while($row = mysql_fetch_array($result, MYSQL_ASSOC)){ foreach($row as $key => $val) { $nb[]=$val; } } $numrows=$nb[0]+$nb[1]; // how many pages we have when using paging? $maxPage = ceil($numrows/$rowsPerPage); $self = $_SERVER['PHP_SELF']; // creating 'previous' and 'next' link // plus 'first page' and 'last page' link // print 'previous' link only if we're not // on page one if ($pageNum > 1) { $page = $pageNum - 1; $prev = " <a href=\"$self?page=$page\">[Précédente]</a> ";//pour la methode en get tu ecris <a href=\"$self?page=$page&genre=$genres\">[Précédente]</a> $first = " <a href=\"$self?page=1\">[Première Page]</a> ";//pour la methode en get tu ecris <a href=\"$self?page=1&genre=$genres\">[Première Page]</a> } else { $prev = ' [Précédente] '; // we're on page one, don't enable 'previous' link $first = ' [Première Page] '; // nor 'first page' link } // print 'next' link only if we're not // on the last page if ($pageNum < $maxPage) { $page = $pageNum + 1; $next = " <a href=\"$self?page=$page\">[Suivante]</a> ";//pour la methode en get tu ecris <a href=\"$self?page=$page&genre=$genres\">[Suivante]</a> $last = " <a href=\"$self?page=$maxPage\">[Dernière Page]</a> ";//pour la methode en get tu ecris <a href=\"$self?page=$maxPage&genre=$genres\">[Dernière Page]</a> } else { $next = ' [Suivante] '; // we're on the last page, don't enable 'next' link $last = ' [Dernière Page] '; // nor 'last page' link } // print the page navigation link echo $first . $prev . " <strong>Page $pageNum de $maxPage</strong> " . $next . $last; ?> </div>
salut medoc merci bien
mais malheureusement j'ai toujours le même résultat
en fait en arrivant sur le site je clique sur le bouton rockalors la page 1 de ... affiche des données dont le genres contient le mot rock, jusque là ça va,
si je clique sur suivante il m'amène a la page 2 de ... et et l'affichage montre encore des données dont le genres contient le mot rock mais le probleme il m'affiche aussi d'autres genres.
J'espère que je suis clair :)
mais malheureusement j'ai toujours le même résultat
en fait en arrivant sur le site je clique sur le bouton rockalors la page 1 de ... affiche des données dont le genres contient le mot rock, jusque là ça va,
si je clique sur suivante il m'amène a la page 2 de ... et et l'affichage montre encore des données dont le genres contient le mot rock mais le probleme il m'affiche aussi d'autres genres.
J'espère que je suis clair :)