Probleme de requete

Probleme de requete - PHP - Programmation

Marsh Posté le 14-09-2005 à 21:39:27    

bonsoir à tous,
 
voila j'ai un petit probleme de requete pour faire une pagination, mon script de pagination fonctionne quand je selectionne toute mabase Msql(2 tables sponsor et photosponsor).  
 
Dans mon cas, chacun de mes sponsor ont leur photos avec l'identifiant de mon sponsor pour chaque photos. Sur ma page detail_sponsor, je veux afficher toutes les photos du sponsor séléctionné . Donc j'ai fait une variable pour récuperer la valeur de l'ID du sponsor avec $id = isset($_GET['VARsponsorID']) ? $_GET['VARsponsorID'] : die('Erreur');  .  
 
Et lorsuqe je fais dans ma requete avec la clause WHERE photosponsor.sponsor="'.$id .'"'; , je recois bien la premiere image du sponsor mais les autres liens vers les autres pages ne marche pas,
 
Est ce que ca vient de la requete ou ca vient de ma fonction pour effectuer ma pagination
 
Si kkun avait une petite idée, ce serai sympa
Merci et bonne soirée

Reply

Marsh Posté le 14-09-2005 à 21:39:27   

Reply

Marsh Posté le 14-09-2005 à 21:47:09    

Fait voir ton code, sinon ça va être dur.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 14-09-2005 à 21:52:33    

$id = isset($_GET['VARsponsorID']) ? $_GET['VARsponsorID'] : die('Erreur');  
$select = 'SELECT count(identifiant) FROM photosponsor WHERE photosponsor.sponsor="'.$id .'"';
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
 
verifLimite= verifLimite($limite,$total,$nombre);
if(!$verifLimite)  {
    $limite = 0;
}
 
$select = 'select * FROM photosponsor,sponsor WHERE photosponsor.sponsor="'.$id .'" limit '.$limite.','.$nombre;
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
 
if($total) {
 
    echo '<table align="center">'."\n";
   
    while($row = mysql_fetch_array($result)) {
        echo '<tr align="center">';
        echo '<td ><img src="'.$row['photosponsor'].'"</td>';
        echo '</tr>'."\n";
    }
    echo '</table>'."\n";
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($result);
 
if($total > $nombre) {
    // affichage des liens vers les pages
    affichePages($nombre,$page,$total);
}
 
 
Et g le fichier fonctions.php ou se trouve les liens 1.2.3..... a afficher

Reply

Marsh Posté le 14-09-2005 à 21:58:46    

Ben précise aussi un peu ton problème. :spamafote:
 

Citation :

les autres liens vers les autres pages ne marche pas


 
Ca veut dire quoi, ils ne marchent pas ? Et fait voir la fonction qui les affiche. Ou mieux, essaie de débugger un peu pour localiser un peu mieux le problème déjà...
 
Sinon on sait pas d'où sortent $nombrre, $limite etc.


Message édité par sielfried le 14-09-2005 à 21:59:02

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 14-09-2005 à 22:17:20    

<?php require_once('Connections/fulleyeMiseajour.php');  
require 'administration/fonctions.php';
$id = isset($_GET['VARsponsorID']) ? $_GET['VARsponsorID'] : die('Erreur');  
// on va afficher 5 résultats par page.
$nombre = 1;  
// si limite n'existe pas on l'initialise à zéro
if (!$limite) $limite = 0;  
// on cherche le nom de la page.    
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts["basename"];
 
//=========================================    
// connection à la DB
//=========================================
$link = mysql_connect ($hostname_fulleyeMiseajour,$username_fulleyeMiseajour,$password_fulleyeMiseajour) or die ('Erreur : '.mysql_error() );
mysql_select_db($database_fulleyeMiseajour) or die ('Erreur :'.mysql_error());
 
//=========================================    
// requête SQL qui compte le nombre total  
// d'enregistrements dans la table.
//=========================================
$select = 'SELECT count(identifiant) FROM photosponsor WHERE photosponsor.sponsor="'.$id .'"';
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
     
//=========================================
// vérifier la validité de notre variable  
// $limite;
//=========================================
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite)  {
    $limite = 0;
}
//=========================================
// requête SQL qui ne prend que le nombre  
// d'enregistrement necessaire à l'affichage.
//=========================================
$select = 'select * FROM photosponsor,sponsor WHERE photosponsor.sponsor="'.$id .'" limit '.$limite.','.$nombre;
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
     
?>
<table width="370" border="0" align="center" cellpadding="0" cellspacing="1">
  <tr class="FdHaut" height="20">  
    <td><?php echo $row['nomsponsor']; ?></td>
  </tr>
  <tr>
    <td height="400" align="center">  
      <?
 //=========================================    
// si on a récupéré un resultat on l'affiche.
//=========================================
if($total) {
    // début du tableau
    echo '<table align="center">'."\n";
      // lecture et affichage des résultats sur 2 colonnes    
    while($row = mysql_fetch_array($result)) {
        echo '<tr align="center">';
        echo '<td ><img src="'.$row['photosponsor'].'"</td>';
        echo '</tr>'."\n";
    }
    echo '</table>'."\n";
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($result);
 
 
?>
    </td>
  </tr>
  <tr class="FdHaut" align="center" height="20">  
    <td><?
 //=========================================    
// si le nombre d'enregistrement à afficher  
// est plus grand que $nombre  
//=========================================
if($total > $nombre) {
    // affichage des liens vers les pages
    affichePages($nombre,$page,$total);
}
?>
 
Voila le code, de ma page, maintenant je ne sais pas si il est nul ou pas .... En fait avec ce code je recupere bien la premeire photo ds la BD selon le sponsor choisi mais les liens 1.2.3..... me signale 'erreur' et donc n'affiche rien
J'ai mis les fonctions ds fonctions.php
 
Voila fnctions.php
 
 
    if(isset($_GET['limite']))  
        $limite=$_GET['limite'];    else   $limite=0;
 
function verifLimite($limite,$total,$nombre) {
    // je verifie si limite est un nombre.
    if(is_numeric($limite)) {
         
 
         
        if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {
           
            $valide = 1;
        }    
        else {
           
            $valide = 0;
        }
    }
    else {
           
            $valide = 0;
    }
 
return $valide;
}
 
 
function affichePages($nb,$page,$total) {
        $nbpages=ceil($total/$nb);
        $numeroPages = 1;
        $compteurPages = 1;
        $limite  = 0;
        echo '<table  height="20" border = "0" ><tr>'."\n";
        while($numeroPages <= $nbpages) {
        echo '<td ><a  class="txtDate" href = "'.$page.'?limite='.$limite.'">'.$numeroPages.'</a></td>'."\n";
        $limite = $limite + $nb;
        $numeroPages = $numeroPages + 1;
        $compteurPages = $compteurPages + 1;
            if($compteurPages == 10) {
            $compteurPages = 1;
            }
        }
        echo '</tr></table>'."\n";
}
 
 
Voila si tu comprends kkchose ds cette supercherie lol

Reply

Marsh Posté le 14-09-2005 à 22:57:28    

Utilise les balides cpp quand tu balances du code, stp.
 
A première vue, s'il t'affiche "Erreur" tout seul (essaie de donner des noms plus clairs à tes erreurs...), c'est que ton $_GET['VARsponsorID'] est pas défini.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 15-09-2005 à 00:24:58    

bourin77 a écrit :

Code :
  1. <?php require_once('Connections/fulleyeMiseajour.php');
  2. require 'administration/fonctions.php';
  3. $id = isset($_GET['VARsponsorID']) ? $_GET['VARsponsorID'] : die('Erreur'); 
  4. // on va afficher 5 résultats par page.
  5. $nombre = 1; 
  6. // si limite n'existe pas on l'initialise à zéro
  7. if (!$limite) $limite = 0;
  8. // on cherche le nom de la page.     
  9. $path_parts = pathinfo($_SERVER['PHP_SELF']);
  10. $page = $path_parts["basename"];
  11. //=========================================     
  12. // connection à la DB
  13. //=========================================
  14. $link = mysql_connect ($hostname_fulleyeMiseajour,$username_fulleyeMiseajour,$password_fulleyeMiseajour) or die ('Erreur : '.mysql_error() );
  15. mysql_select_db($database_fulleyeMiseajour) or die ('Erreur :'.mysql_error());
  16. //=========================================     
  17. // requête SQL qui compte le nombre total  
  18. // d'enregistrements dans la table.
  19. //=========================================
  20. $select = 'SELECT count(identifiant) FROM photosponsor WHERE photosponsor.sponsor="'.$id .'"';
  21. $result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
  22. $row = mysql_fetch_row($result);
  23. $total = $row[0];
  24.    
  25. //=========================================
  26. // vérifier la validité de notre variable  
  27. // $limite;
  28. //=========================================
  29. $verifLimite= verifLimite($limite,$total,$nombre);
  30. // si la limite passée n'est pas valide on la remet à zéro
  31. if(!$verifLimite)  {
  32.     $limite = 0;
  33. }
  34. //=========================================
  35. // requête SQL qui ne prend que le nombre  
  36. // d'enregistrement necessaire à l'affichage.
  37. //=========================================
  38. $select = 'select * FROM photosponsor,sponsor WHERE photosponsor.sponsor="'.$id .'" limit '.$limite.','.$nombre;
  39. $result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
  40.    
  41. ?>
  42. <table width="370" border="0" align="center" cellpadding="0" cellspacing="1">
  43.   <tr class="FdHaut" height="20">
  44.     <td><?php echo $row['nomsponsor']; ?></td>
  45.   </tr>
  46.   <tr>
  47.     <td height="400" align="center">
  48.       <?
  49. //=========================================     
  50. // si on a récupéré un resultat on l'affiche.
  51. //=========================================
  52. if($total) {
  53.     // début du tableau
  54.     echo '<table align="center">'."\n";
  55.       // lecture et affichage des résultats sur 2 colonnes     
  56.     while($row = mysql_fetch_array($result)) {
  57.         echo '<tr align="center">';
  58.         echo '<td ><img src="'.$row['photosponsor'].'"</td>';
  59.         echo '</tr>'."\n";
  60.     }
  61.     echo '</table>'."\n";
  62. }
  63. else echo 'Pas d\'enregistrements dans cette table...';
  64. mysql_free_result($result);
  65. ?>
  66.     </td>
  67.   </tr>
  68.   <tr class="FdHaut" align="center" height="20">
  69.     <td><?
  70. //=========================================     
  71. // si le nombre d'enregistrement à afficher  
  72. // est plus grand que $nombre  
  73. //=========================================
  74. if($total > $nombre) {
  75.     // affichage des liens vers les pages
  76.     affichePages($nombre,$page,$total);
  77. }
  78. ?>
  79. Voila le code, de ma page, maintenant je ne sais pas si il est nul ou pas .... En fait avec ce code je recupere bien la premeire photo ds la BD selon le sponsor choisi mais les liens 1.2.3..... me signale 'erreur' et donc n'affiche rien
  80. J'ai mis les fonctions ds fonctions.php
  81. Voila fnctions.php
  82.     if(isset($_GET['limite']))
  83.         $limite=$_GET['limite'];    else   $limite=0;
  84. function verifLimite($limite,$total,$nombre) {
  85.     // je verifie si limite est un nombre.
  86.     if(is_numeric($limite)) {
  87.        
  88.        
  89.         if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {
  90.          
  91.             $valide = 1;
  92.         }   
  93.         else {
  94.          
  95.             $valide = 0;
  96.         }
  97.     }
  98.     else {
  99.          
  100.             $valide = 0;
  101.     }
  102. return $valide;
  103. }
  104. function affichePages($nb,$page,$total) {
  105.         $nbpages=ceil($total/$nb);
  106.         $numeroPages = 1;
  107.         $compteurPages = 1;
  108.         $limite  = 0;
  109.         echo '<table  height="20" border = "0" ><tr>'."\n";
  110.         while($numeroPages <= $nbpages) {
  111.         echo '<td ><a  class="txtDate" href = "'.$page.'?limite='.$limite.'">'.$numeroPages.'</a></td>'."\n";
  112.         $limite = $limite + $nb;
  113.         $numeroPages = $numeroPages + 1;
  114.         $compteurPages = $compteurPages + 1;
  115.             if($compteurPages == 10) {
  116.             $compteurPages = 1;
  117.             }
  118.         }
  119.         echo '</tr></table>'."\n";
  120. }


 
 
Voila si tu comprends kkchose ds cette supercherie lol



---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 15-09-2005 à 00:35:02    

Code :
  1. # //=========================================
  2. # // requête SQL qui ne prend que le nombre   
  3. # // d'enregistrement necessaire à l'affichage.
  4. # //=========================================
  5. # $select = 'select * FROM photosponsor,sponsor WHERE photosponsor.sponsor="'.$id .'" limit '.$limite.','.$nombre;
  6. # $result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
  7. #     // début du tableau
  8. #     echo '<table align="center">'."n";
  9. #       // lecture et affichage des résultats sur 2 colonnes     
  10. #     while($row = mysql_fetch_array($result)) {
  11. #         echo '<tr align="center">';
  12. #         echo '<td ><img src="'.$row['photosponsor'].'"</td>';
  13. #         echo '</tr>'."n";
  14. #     }

Structure des tables photosponsor et sponsor ?
 
edit : non finalement, c'est tellement bien foutu que je pige même pas où tu retrouves ton erreur :/


Message édité par Master p le 15-09-2005 à 00:39:56

---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 15-09-2005 à 07:26:23    

'</a></td>'."\n"; <===
tu peux me dire l'intérêt de faire ça ? je trouve ca débile
 
'</a></td>\n'; <==== la c'est mieux non ?
 
on dirait un gros manque de connaissances en PHP

Reply

Marsh Posté le 15-09-2005 à 09:20:49    

Les échappements sont pas interprétés s'ils sont pas entourés de doubles quotes, donc pour le coup ce qu'il fait est nécessaire.
 
Enfin, il aura juste un retour à la ligne dans sa source html entre ses lignes et ses tableaux, c'est pas vraiment indispensable. :spamafote:


Message édité par sielfried le 15-09-2005 à 09:21:03

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 15-09-2005 à 09:20:49   

Reply

Marsh Posté le 15-09-2005 à 09:43:43    

ca permet d'avoir un code source propre quand tu veux lire le source et comprendre un peu mieux ton bordel.
 
Mais oki j'avais zappé pour les échappement qui passent pas avec les ""  
mais autant tout mettre en "" c'est bien plus simple non ?
 
Ah nan c'est pas plus simple car faudrait échapper les autres quotes internes

Reply

Marsh Posté le 15-09-2005 à 09:52:41    

gatsusat a écrit :

mais autant tout mettre en "" c'est bien plus simple non ?
Ah nan c'est pas plus simple car faudrait échapper les autres quotes internes


pas plus simple et surtout moins performant car le parser cherche les variables à interpréter.

Reply

Marsh Posté le 15-09-2005 à 10:03:03    

gatsusat a écrit :

ca permet d'avoir un code source propre quand tu veux lire le source et comprendre un peu mieux ton bordel.


 
J'sais bien, mais perso je le fais jamais, par flemme (et parce que j'y pense jamais)... donc je justifiais. [:aztechxx]


Message édité par sielfried le 15-09-2005 à 10:03:26

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 15-09-2005 à 16:48:39    

salut,
tu as raison j'ai défini mes erreurs et j'ai bien l'erreur qui vient de la récuperation de la variable sponsor. $id = isset($_GET['VARsponsorID']) ? $_GET['VARsponsorID'] : die('Erreur');  . Je vais regarder dans des tuto pour récuperer un identifiant car je ne vois pas l'erreur sur $id  
Par contre est ce que ca peut venir de ma fonction de pagination dans le lien ?
 

Reply

Marsh Posté le 15-09-2005 à 16:58:46    

c'est pas comme cela qu'on utilise die
 
http://fr.php.net/manual/fr/function.exit.php
 
die est un alias de la fonction exit()
 
sinon le mieux c'est de faire ceci :  
 

Code :
  1. $id = isset($_GET['VARsponsorID']) ? $_GET['VARsponsorID'] : "";


 
puis faire le test tout bidon :  

Code :
  1. if $id<>"" {
  2.   fait ce qu'il y a à faire
  3. }
  4. else {
  5.   faire autre chose
  6. }
  7. end if


 
ceci dans le cas ou id est une string, si tu veux t'en servir comme un nombre, tu peux mettre -1 comme valeur à ID par exemple
 
edit :
 
dans le cas ou tu voudrais avoir un die(machin chose)
faudrait faire ceci directement :  

Code :
  1. $id = $_GET['VARsponsorID'] or die("Erreur" );


Message édité par gatsusat le 15-09-2005 à 17:04:40
Reply

Marsh Posté le 15-09-2005 à 21:17:23    

en fait je recupere bien le nombre de photo correspondant aux sponsor choisi. Donc je pense que ca ne vient pas de $id je vais essayer de voir ma page de fonctions.php
Peut etre que ca vient de la ...........  
BIZARRE

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed