Page 1 sur 2

[mySQL] pb récupération de données + autres petits trucs

Posté : 23 juin 2005, 15:25
par AdRi1
Salut à tous,

J'expose mon problème :
Sur mon site, j'ai fait une partie administration, qui permet d'ajouter des fiches sur les personnages.
Mon systeme permet de trier les persos soit par villages, soit par ordre alphabétique (et dans cet ordre alphabétique on peut classer par noms ou par prénoms).

Voilà la page : cliquez ici

Le tri par village marche nickel (cliquez sur konoha no kuni), mais l'affichage par ordre alphabétique ne donne rien :(
cliquez ici
Quand la variable $lettre n'est pas définie, ça devrait afficher tous les persos, et quand on clique sur une lettre, ça affiche tous les persos dont le nom ou le prénom (ça dépend de l'option choisie) commence par cette lettre

Voici le code de la page qui affiche par ordre alphabétique (désolé si c'est un peu long) :
 <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" bordercolor="#111111" width="700" height="1">
        <tr>
          <td width="100%" style="border-bottom-style: none; border-bottom-width: medium" height="100%">
            <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-top-width:0" bordercolor="#111111" width="100%" bgcolor="#DAD7C0" height="18">
              <tr>
                <td width="100%" background="images/centre_bg.gif"  border="0" style="border-top-style: none; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1; border-right-style: none; border-right-width: 1; border-left-style: none; border-left-width: 1;" height="2">
                  &nbsp;
                  <i>
                    <b>
                      <font color="#000000" face="Verdana" size="2">
                                Personnages
                              </font></b></i>
                        </td>
                      </tr>
                    </table>
                  </td>
                </tr>
                <tr>
                  <td width="100%" style="border-left-style: none; border-left-width: 1; border-right-style: none; border-right-width: 1; border-top-style: none; border-top-width: medium; border-bottom-style: none; border-bottom-width: 1" height="1" bgcolor="#DAD7C0" valign="top">
                    <table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="650" align="center" height="1">
                      <tr>
                        <td width="100%" height="1" valign="top">
                          <table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="117">
                            <tr>
                              <td class="td" width="100%" height="421" valign="top">
                                <table valign="top" align="center">                          
                                   <tr>
                                     <td align="center">
                                     
                                      <?php
                                      if ($classement == 'nom')
                                  {
                                    echo '<a href="?page=persos&tri=alpha&classement=prenom">&raquo; Classer par prénoms</a><br><br>';
                                  }
                                      elseif ($classement == 'prenom')
                                  {
                                    echo '<a href="?page=persos&tri=alpha&classement=nom">&raquo; Classer par noms</a><br><br>';
                                  }
                                      ?>
                                        
                                      </td>
                                    </tr>
                                    <tr>
                                      <td align="center">
                                        <?php
                                        if ($classement == 'nom')
                                  {
                                         for ($lettre='A'; $lettre < 'Z'; $lettre++)
                                        {
                                          echo'<a href="?page=persos&tri=alpha&classement=nom&lettre='.$lettre.'">'.$lettre.'</a> - ';
                                        }
                                        echo '<a href="?page=persos&tri=alpha&classement=nom&lettre=Z">Z</a>';
                                  }
                                        elseif ($classement == 'prenom')
                                  {
                                         for ($lettre='A'; $lettre < 'Z'; $lettre++)
                                        {
                                          echo'<a href="?page=persos&tri=alpha&classement=prenom&lettre='.$lettre.'">'.$lettre.'</a> - ';
                                        }
                                        echo '<a href="?page=persos&tri=alpha&classement=prenom&lettre=Z">Z</a>';
                                  }
                                        ?>
                                        
                                      </td>
                                    </tr>
                                    <tr>
                                      <td>
                                        <br>
                                      </td>
                                    </tr>
                                  </table>

                              
<?php
// connexion vers la base de donnée.
include("admincn/mysql.php");


if (isset($lettre)) {
// Permet de récupérer les données contenues de la base de donnée afin de les faire apparaître.
  if ($classement == 'nom'){
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages WHERE nom LIKE '$lettre%' ORDER BY nom";
  }
  elseif ($classement == 'prenom'){
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages WHERE prenom LIKE '$lettre%' ORDER BY prenom";
  }
$reponse = mysql_query($sql);
while ($personnages = mysql_fetch_array ($reponse))
{
$id = $personnages ['id'];
$nom = $personnages ['nom'];
$prenom = $personnages ['prenom'];
$village = $personnages ['village'];
$grade = $personnages ['grade'];
$mini_image = $personnages ['mini_image'];

if ($classement == 'nom'){
echo '<table valign="top">
        <tr>
          <td>
            <img src="'.$mini_image.'" border="1">
         </td>
         <td valign="middle">
           <a href="?page=perso_fiche&id='.$id.'"><b>'.$nom.' '.$prenom.'</b></a> - '.$grade.' de '.$village.' no kuni
          </td>
       </tr>
      </table>';
}
elseif ($classement == 'prenom'){
echo '<table valign="top">
        <tr>
          <td>
            <img src="'.$mini_image.'" border="1">
         </td>
         <td valign="middle">
           <a href="?page=perso_fiche&id='.$id.'"><b>'.$prenom.' '.$nom.'</b></a> - '.$grade.' de '.$village.' no kuni
          </td>
       </tr>
      </table>';
}
}
}

else {
// Permet de récupérer les données contenues de la base de donnée afin de les faire apparaître.
  if ($classement == 'nom'){
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages WHERE nom ORDER BY nom";
  }
  elseif ($classement == 'prenom'){
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages WHERE prenom ORDER BY prenom";
  }
$reponse = mysql_query($sql);
while ($personnages = mysql_fetch_array ($reponse))
{
$id = $personnages ['id'];
$nom = $personnages ['nom'];
$prenom = $personnages ['prenom'];
$village = $personnages ['village'];
$grade = $personnages ['grade'];
$mini_image = $personnages ['mini_image'];

if ($classement == 'nom'){
echo '<table valign="top">
        <tr>
          <td>
            <img src="'.$mini_image.'" border="1">
         </td>
         <td valign="middle">
           <a href="?page=perso_fiche&id='.$id.'"><b>'.$nom.' '.$prenom.'</b></a> - '.$grade.' de '.$village.' no kuni
          </td>
       </tr>
      </table>';
}
elseif ($classement == 'prenom'){
echo '<table valign="top">
        <tr>
          <td>
            <img src="'.$mini_image.'" border="1">
         </td>
         <td valign="middle">
           <a href="?page=perso_fiche&id='.$id.'"><b>'.$prenom.' '.$nom.'</b></a> - '.$grade.' de '.$village.' no kuni
          </td>
       </tr>
      </table>';
}
}
}

mysql_close();
?>
                              
                              </td>
                            </tr>
                          </table>
                        </td>
                      </tr>
                    </table>
                  </td>
                </tr>     
              </tr>
Pourquoi rien ne s'affiche, contrairement au tri par villages ?
Je viens tout juste de commencer le php (1 semaine), donc mon code doit être super lourd, est-il possible de l'alléger ?

Dernières choses : comment, via une interface d'administration, puis-je modifier mes données ? Et vous avez dû remarqué que quand on clique sur le nom et le prénom d'un personnage, ça ne donne rien, alors que ça devrait afficher sa fiche détaillée, comme ici. Je pense que mon problème vient de la récupération de la variable $id... Pour info, j'ai bien mis dans le formulaire d'ajout de fiche un champ caché nommé id...

Merci d'avance !

Posté : 23 juin 2005, 16:03
par waf_wafe
Alors plusieurs remarque :
1.tu connais le php depuis 1 semaine et c'est toi qui a fait le site :shock:
2.As-tu deja essayer d'afficher ta variable $lettre avant ta requete SQL pour voir ce qu'elle contenait !
3.As-tu deja essayer d'afficher ta requete pour voir si la sintaxe etait bonne ?

Posté : 23 juin 2005, 16:10
par psaikopat
c net 1 semaine et tu arrive a faire ça????

ALORS LA CHAPEAU !!
Attend moi je fais du PHP tout les jours, je suis incappable de te sortir un truc comme ça!!!

Moi je suis entrain de me faire un site mais attention c'est que des <div> lol !!
En tout cas tu me filera des cours si possible car en 1 semaine sortir ça!! Je le redis CHAPEAU !!!

Posté : 23 juin 2005, 16:11
par castelli
.... trop beau le site... :shock: :shock:

Posté : 23 juin 2005, 16:17
par AdRi1
1.tu connais le php depuis 1 semaine et c'est toi qui a fait le site :shock:
==> on m'a donné des tips pour le code (notament pour la boucle for), ça m'a facilité la tache ^^

2.As-tu deja essayer d'afficher ta variable $lettre avant ta requete SQL pour voir ce qu'elle contenait !
==> oui, enfin je pense, je l'affiche bien dans les liens des lettres de l'alphabet.

3.As-tu deja essayer d'afficher ta requete pour voir si la sintaxe etait bonne ?

==> Ca me renvoit pas d'erreur, donc elle est bonne ma syntaxe, nan?
Sinon, je vois pas comment faire ce que tu me demandes :?

Merci ;)

edit : ah j'avais pas vu les autres réponses ^^ Bé merci beaucoup, c'est mon bébé xD

Posté : 23 juin 2005, 16:27
par waf_wafe
Essaye sa :
if ($classement == 'nom'){ 
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages WHERE nom LIKE '".$_GET['$lettre%']."' ORDER BY nom"; 
  } 
  elseif ($classement == 'prenom'){ 
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages WHERE prenom LIKE '".$_GET['$lettre%']."' ORDER BY prenom"; 
  } 
$reponse = mysql_query($sql)or die("erreur dans la requete");
'pi il est vraiment long ton code ... fiuu

EDIT>tu dois être un boss sur toshop !!

Posté : 23 juin 2005, 16:36
par AdRi1
Ah ouii merci c'était presque ça, c'était ".$_GET['$lettre']."% et non pas ".$_GET['$lettre%']." ( la variable c'est $lettre et pas $lettre% ^^ )

Bon maintenant ça affiche tout, peu importe la lettre ^^"

(je redonne le lien : cliquez ici)

Posté : 23 juin 2005, 17:02
par waf_wafe
Il faudrait que tu arrives a cibler ton erreur.
La je vais partir;
alors testes tes varibles et met des or die().
:wink:
Voila ! @poulf !

Posté : 23 juin 2005, 17:19
par AdRi1
Ok je vais faire ça. Merci de ton aide ! ;)

Posté : 23 juin 2005, 17:51
par AdRi1
Mouarf, je l'ai fait, et ça renvoit toujours aucune erreur :/

Je remets le code modifié :
            <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" bordercolor="#111111" width="700" height="1">
        <tr>
          <td width="100%" style="border-bottom-style: none; border-bottom-width: medium" height="100%">
            <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-top-width:0" bordercolor="#111111" width="100%" bgcolor="#DAD7C0" height="18">
              <tr>
                <td width="100%" background="images/centre_bg.gif"  border="0" style="border-top-style: none; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1; border-right-style: none; border-right-width: 1; border-left-style: none; border-left-width: 1;" height="2">
                  &nbsp;
                  <i>
                    <b>
                      <font color="#000000" face="Verdana" size="2">
                                Personnages
                              </font></b></i>
                        </td>
                      </tr>
                    </table>
                  </td>
                </tr>
                <tr>
                  <td width="100%" style="border-left-style: none; border-left-width: 1; border-right-style: none; border-right-width: 1; border-top-style: none; border-top-width: medium; border-bottom-style: none; border-bottom-width: 1" height="1" bgcolor="#DAD7C0" valign="top">
                    <table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="650" align="center" height="1">
                      <tr>
                        <td width="100%" height="1" valign="top">
                          <table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="117">
                            <tr>
                              <td class="td" width="100%" height="421" valign="top">
                                <table valign="top" align="center">                          
                                   <tr>
                                     <td align="center">
                                     
                                      <?php
                                      if ($classement == 'nom')
                                  {
                                    echo '<a href="?page=persos&tri=alpha&classement=prenom">&raquo; Classer par prénoms</a><br><br>';
                                  }
                                      elseif ($classement == 'prenom')
                                  {
                                    echo '<a href="?page=persos&tri=alpha&classement=nom">&raquo; Classer par noms</a><br><br>';
                                  }
                                      ?>
                                        
                                      </td>
                                    </tr>
                                    <tr>
                                      <td align="center">
                                        <?php
                                        if ($classement == 'nom')
                                  {
                                         for ($lettre='A'; $lettre < 'Z'; $lettre++)
                                        {
                                          echo'<a href="?page=persos&tri=alpha&classement=nom&lettre='.$lettre.'">'.$lettre.'</a> - ';
                                        }
                                        echo '<a href="?page=persos&tri=alpha&classement=nom&lettre=Z">Z</a>';
                                  }
                                        elseif ($classement == 'prenom')
                                  {
                                         for ($lettre='A'; $lettre < 'Z'; $lettre++)
                                        {
                                          echo'<a href="?page=persos&tri=alpha&classement=prenom&lettre='.$lettre.'">'.$lettre.'</a> - ';
                                        }
                                        echo '<a href="?page=persos&tri=alpha&classement=prenom&lettre=Z">Z</a>';
                                  }
                                        ?>
                                        
                                      </td>
                                    </tr>
                                    <tr>
                                      <td>
                                        <br>
                                      </td>
                                    </tr>
                                  </table>

                              
<?php
// connexion vers la base de donnée.
include("admincn/mysql.php");


if (isset($lettre)) {
// Permet de récupérer les données contenues de la base de donnée afin de les faire apparaître.
  if ($classement == 'nom'){
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages WHERE nom LIKE '".$_GET['$lettre']."%' ORDER BY nom";
  }
  elseif ($classement == 'prenom'){
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages WHERE prenom LIKE '".$_GET['$lettre']."%' ORDER BY prenom";
  }
$reponse = mysql_query($sql) or die("erreur dans la requete");

while ($personnages = mysql_fetch_array ($reponse))
{
$id = $personnages ['id'];
$nom = $personnages ['nom'];
$prenom = $personnages ['prenom'];
$village = $personnages ['village'];
$grade = $personnages ['grade'];
$mini_image = $personnages ['mini_image'];

if ($classement == 'nom'){
echo '<table valign="top">
        <tr>
          <td>
            <img src="'.$mini_image.'" border="1">
         </td>
         <td valign="middle">
           <a href="?page=perso_fiche&id='.$id.'"><b>'.$nom.' '.$prenom.'</b></a> - '.$grade.' de '.$village.' no kuni
          </td>
       </tr>
      </table>';
}
elseif ($classement == 'prenom'){
echo '<table valign="top">
        <tr>
          <td>
            <img src="'.$mini_image.'" border="1">
         </td>
         <td valign="middle">
           <a href="?page=perso_fiche&id='.$id.'"><b>'.$prenom.' '.$nom.'</b></a> - '.$grade.' de '.$village.' no kuni
          </td>
       </tr>
      </table>';
}
}
}

else {
// Permet de récupérer les données contenues de la base de donnée afin de les faire apparaître.
  if ($classement == 'nom'){
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages ORDER BY nom";
  }
  elseif ($classement == 'prenom'){
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages ORDER BY prenom";
  }
$reponse = mysql_query($sql) or die("erreur dans la requete");
while ($personnages = mysql_fetch_array ($reponse))
{
$id = $personnages ['id'];
$nom = $personnages ['nom'];
$prenom = $personnages ['prenom'];
$village = $personnages ['village'];
$grade = $personnages ['grade'];
$mini_image = $personnages ['mini_image'];

if ($classement == 'nom'){
echo '<table valign="top">
        <tr>
          <td>
            <img src="'.$mini_image.'" border="1">
         </td>
         <td valign="middle">
           <a href="?page=perso_fiche&id='.$id.'"><b>'.$nom.' '.$prenom.'</b></a> - '.$grade.' de '.$village.' no kuni
          </td>
       </tr>
      </table>';
}
elseif ($classement == 'prenom'){
echo '<table valign="top">
        <tr>
          <td>
            <img src="'.$mini_image.'" border="1">
         </td>
         <td valign="middle">
           <a href="?page=perso_fiche&id='.$id.'"><b>'.$prenom.' '.$nom.'</b></a> - '.$grade.' de '.$village.' no kuni
          </td>
       </tr>
      </table>';
}
}
}

mysql_close();
?>
                              
                              </td>
                            </tr>
                          </table>
                        </td>
                      </tr>
                    </table>
                  </td>
                </tr>     
              </tr>
edit : j'ai enlevé les WHERE nom et WHERE prenom qui étaient dans le else, et qui servaient à rien

Posté : 23 juin 2005, 20:21
par AdRi1
En fait j'avais une erreur du côté du else, ça m'affichait "Erreur dans la requête" quand j'allais sur cette url : http://adri1du94.free.fr/Captainaruto/? ... &tri=alpha (donc quand $classement n'était pas définie). J'ai modifié le code et ya plus cette erreur.

Mais bon ça change toujours pas mon problème, quand je clique sur n'importe quelle lettre, j'ai quand même tous les persos qui s'affichent (à noter qu'il n'y a qu'un perso pour l'instant, mais ça revient au même ^^ )
Voilà le code modifié :
      <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" bordercolor="#111111" width="700" height="1">
        <tr>
          <td width="100%" style="border-bottom-style: none; border-bottom-width: medium" height="100%">
            <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-top-width:0" bordercolor="#111111" width="100%" bgcolor="#DAD7C0" height="18">
              <tr>
                <td width="100%" background="images/centre_bg.gif"  border="0" style="border-top-style: none; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1; border-right-style: none; border-right-width: 1; border-left-style: none; border-left-width: 1;" height="2">
                  &nbsp;
                  <i>
                    <b>
                      <font color="#000000" face="Verdana" size="2">
                                Personnages
                              </font></b></i>
                        </td>
                      </tr>
                    </table>
                  </td>
                </tr>
                <tr>
                  <td width="100%" style="border-left-style: none; border-left-width: 1; border-right-style: none; border-right-width: 1; border-top-style: none; border-top-width: medium; border-bottom-style: none; border-bottom-width: 1" height="1" bgcolor="#DAD7C0" valign="top">
                    <table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="650" align="center" height="1">
                      <tr>
                        <td width="100%" height="1" valign="top">
                          <table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="117">
                            <tr>
                              <td class="td" width="100%" height="421" valign="top">
                                <table valign="top" align="center">                          
                                   <tr>
                                     <td align="center">
                                     
                                      <?php
                                      if ($classement == 'nom')
                                  {
                                    echo '<a href="?page=persos&tri=alpha&classement=prenom">&raquo; Classer par prénoms</a><br><br>';
                                  }
                                      elseif ($classement == 'prenom')
                                  {
                                    echo '<a href="?page=persos&tri=alpha&classement=nom">&raquo; Classer par noms</a><br><br>';
                                  }
                                      ?>
                                        
                                      </td>
                                    </tr>
                                    <tr>
                                      <td align="center">
                                        <?php
                                        if ($classement == 'nom')
                                  {
                                         for ($lettre='A'; $lettre < 'Z'; $lettre++)
                                        {
                                          echo'<a href="?page=persos&tri=alpha&classement=nom&lettre='.$lettre.'">'.$lettre.'</a> - ';
                                        }
                                        echo '<a href="?page=persos&tri=alpha&classement=nom&lettre=Z">Z</a>';
                                  }
                                        elseif ($classement == 'prenom')
                                  {
                                         for ($lettre='A'; $lettre < 'Z'; $lettre++)
                                        {
                                          echo'<a href="?page=persos&tri=alpha&classement=prenom&lettre='.$lettre.'">'.$lettre.'</a> - ';
                                        }
                                        echo '<a href="?page=persos&tri=alpha&classement=prenom&lettre=Z">Z</a>';
                                  }
                                        ?>
                                        
                                      </td>
                                    </tr>
                                    <tr>
                                      <td>
                                        <br>
                                      </td>
                                    </tr>
                                  </table>

                              
<?php
include("admincn/mysql.php");


if (!isset($lettre)) {  //si $lettre n'est pas définie, alors on affiche tous les persos
  if ($classement == 'prenom'){  //si $classement = prenom, alors on classe les persos par prenoms, et les prenoms devant les noms
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages ORDER BY prenom";
  }
  else {   //si $classement est différent de prenom, alors on classe les persos par noms, et les noms devant les prenoms
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages ORDER BY prenom";
  }
$reponse = mysql_query($sql) or die("erreur dans la requete");
while ($personnages = mysql_fetch_array ($reponse))
{
$id = $personnages ['id'];
$nom = $personnages ['nom'];
$prenom = $personnages ['prenom'];
$village = $personnages ['village'];
$grade = $personnages ['grade'];
$mini_image = $personnages ['mini_image'];

if ($classement == 'nom'){
echo '<table valign="top">
        <tr>
          <td>
            <img src="'.$mini_image.'" border="1">
         </td>
         <td valign="middle">
           <a href="?page=perso_fiche&id='.$id.'"><b>'.$nom.' '.$prenom.'</b></a> - '.$grade.' de '.$village.' no kuni
          </td>
       </tr>
      </table>';
}
elseif ($classement == 'prenom'){
echo '<table valign="top">
        <tr>
          <td>
            <img src="'.$mini_image.'" border="1">
         </td>
         <td valign="middle">
           <a href="?page=perso_fiche&id='.$id.'"><b>'.$prenom.' '.$nom.'</b></a> - '.$grade.' de '.$village.' no kuni
          </td>
       </tr>
      </table>';
}
}
}


else { //si $lettre n'est PAS pas définie, alors elle est forcément définie ^__^
  if ($classement == 'nom'){
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages WHERE nom LIKE '".$_GET['$lettre']."%' ORDER BY nom";
  }
  elseif ($classement == 'prenom'){
$sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages WHERE prenom LIKE '".$_GET['$lettre']."%' ORDER BY prenom";
  }
$reponse = mysql_query($sql) or die("erreur dans la requete");

while ($personnages = mysql_fetch_array ($reponse))
{
$id = $personnages ['id'];
$nom = $personnages ['nom'];
$prenom = $personnages ['prenom'];
$village = $personnages ['village'];
$grade = $personnages ['grade'];
$mini_image = $personnages ['mini_image'];

if ($classement == 'nom'){
echo '<table valign="top">
        <tr>
          <td>
            <img src="'.$mini_image.'" border="1">
         </td>
         <td valign="middle">
           <a href="?page=perso_fiche&id='.$id.'"><b>'.$nom.' '.$prenom.'</b></a> - '.$grade.' de '.$village.' no kuni
          </td>
       </tr>
      </table>';
}
elseif ($classement == 'prenom'){
echo '<table valign="top">
        <tr>
          <td>
            <img src="'.$mini_image.'" border="1">
         </td>
         <td valign="middle">
           <a href="?page=perso_fiche&id='.$id.'"><b>'.$prenom.' '.$nom.'</b></a> - '.$grade.' de '.$village.' no kuni
          </td>
       </tr>
      </table>';
}
}
}

mysql_close();
?>
                              
                              </td>
                            </tr>
                          </table>
                        </td>
                      </tr>
                    </table>
                  </td>
                </tr>     
              </tr>

Posté : 25 juin 2005, 14:35
par Cyrano
Ok, alors première chose: essaye de séparer correctement PHP et HTML et fais une indentation correcte, c'est beaucoup plus facile a lire:
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" bordercolor="#111111" width="700" height="1">
  <tr>
    <td width="100%" style="border-bottom-style: none; border-bottom-width: medium" height="100%">
      <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-top-width:0" bordercolor="#111111" width="100%" bgcolor="#DAD7C0" height="18">
        <tr>
          <td width="100%" background="images/centre_bg.gif" border="0" style="border-top-style: none; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1; border-right-style: none; border-right-width: 1; border-left-style: none; border-left-width: 1;" height="2">
            &nbsp;
            <i>
            <b>
            <font color="#000000" face="Verdana" size="2">
            Personnages
            </font></b></i>
          </td>
        </tr>
      </table>
    </td>
  </tr>
  <tr>
    <td width="100%" style="border-left-style: none; border-left-width: 1; border-right-style: none; border-right-width: 1; border-top-style: none; border-top-width: medium; border-bottom-style: none; border-bottom-width: 1" height="1" bgcolor="#DAD7C0" valign="top">
      <table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="650" align="center" height="1">
        <tr>
          <td width="100%" height="1" valign="top">
            <table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="117">
              <tr>
                <td class="td" width="100%" height="421" valign="top">
                  <table valign="top" align="center"> 
                    <tr>
                      <td align="center">
<?php
if ($classement == 'nom')
{
?>
                        <a href="?page=persos&tri=alpha&classement=prenom">» Classer par prénoms</a><br><br>
<?php
}
elseif ($classement == 'prenom')
{
?>
                        <a href="?page=persos&tri=alpha&classement=nom">» Classer par noms</a><br><br>
<?php
}
                                      ?>
                      </td>
                    </tr>
                    <tr>
                      <td align="center">
<?php
if ($classement == 'nom')
{
    for ($lettre='A'; $lettre < 'Z'; $lettre++)
    {
?>
                        <a href="?page=persos&tri=alpha&classement=nom&lettre=<?php echo($lettre); ?>"><?php echo($lettre); ?></a> - 
<?php
    }
?>
                        <a href="?page=persos&tri=alpha&classement=nom&lettre=Z">Z</a>
<?php
}
elseif ($classement == 'prenom')
{
    for ($lettre='A'; $lettre < 'Z'; $lettre++)
    {
?>
                        <a href="?page=persos&tri=alpha&classement=prenom&lettre=<?php echo($lettre); ?>"><?php echo($lettre); ?></a> - 
<?php
    }
?>
                        <a href="?page=persos&tri=alpha&classement=prenom&lettre=Z">Z</a>
<?php
}
                                        ?>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <br>
                      </td>
                    </tr>
                  </table>
<?php
include("admincn/mysql.php");


if (!isset($lettre))
{
    //si $lettre n'est pas définie, alors on affiche tous les persos
    if ($classement == 'prenom')
    {
        //si $classement = prenom, alors on classe les persos par prenoms, et les prenoms devant les noms
        $sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages ORDER BY prenom";
    }
    else
    {
        //si $classement est différent de prenom, alors on classe les persos par noms, et les noms devant les prenoms
        $sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages ORDER BY prenom";
    }
    $reponse = mysql_query($sql) or die("erreur dans la requete");
    while ($personnages = mysql_fetch_array ($reponse))
    {
        $id = $personnages ['id'];
        $nom = $personnages ['nom'];
        $prenom = $personnages ['prenom'];
        $village = $personnages ['village'];
        $grade = $personnages ['grade'];
        $mini_image = $personnages ['mini_image'];

        if ($classement == 'nom')
        {
?>
                  <table valign="top">
                    <tr>
                      <td>
                        <img src="<?php echo($mini_image); ?>" border="1">
                      </td>
                      <td valign="middle">
                        <a href="?page=perso_fiche&id=<?php echo($id); ?>"><b><?php echo($nom." ".$prenom); ?></b></a> - <?php echo($grade); ?> de <?php echo($village); ?> no kuni
                      </td>
                    </tr>
                  </table>';
<?php
        }
        elseif ($classement == 'prenom')
        {
?>
                  <table valign="top">
                    <tr>
                      <td>
                        <img src="<?php echo($mini_image); ?>" border="1">
                      </td>
                      <td valign="middle">
                        <a href="?page=perso_fiche&id=<?php echo($id); ?>"><b><?php echo($prenom." ".$nom); ?></b></a> - <?php echo($grade); ?> de <?php echo($village); ?> no kuni
                      </td>
                    </tr>
                  </table>';
<?php
        }
    }
}


else
{
    //si $lettre n'est PAS pas définie, alors elle est forcément définie ^__^
    if ($classement == 'nom')
    {
        $sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages WHERE nom LIKE '".$_GET['$lettre']."%' ORDER BY nom";
    }
    elseif ($classement == 'prenom')
    {
        $sql = "SELECT nom,prenom,village,grade,mini_image FROM personnages WHERE prenom LIKE '".$_GET['$lettre']."%' ORDER BY prenom";
    }
    $reponse = mysql_query($sql) or die("erreur dans la requete");

    while ($personnages = mysql_fetch_array ($reponse))
    {
        $id = $personnages ['id'];
        $nom = $personnages ['nom'];
        $prenom = $personnages ['prenom'];
        $village = $personnages ['village'];
        $grade = $personnages ['grade'];
        $mini_image = $personnages ['mini_image'];

        if ($classement == 'nom'){
?>
                  <table valign="top">
                    <tr>
                      <td>
                        <img src="<?php echo($mini_image); ?>'" border="1">
                      </td>
                      <td valign="middle">
                        <a href="?page=perso_fiche&id=<?php echo($id); ?>"><b><?php echo($nom." ".$prenom); ?></b></a> - <?php echo($grade); ?> de <?php echo($village); ?> no kuni
                      </td>
                    </tr>
                  </table>
<?php
        }
        elseif ($classement == 'prenom')
        {
?>
                  <table valign="top">
                    <tr>
                      <td>
                        <img src="<?php echo($mini_image); ?>'" border="1">
                      </td>
                      <td valign="middle">
                        <a href="?page=perso_fiche&id=<?php echo($id); ?>"><b><?php echo($prenom ." ". $nom); ?></b></a> - <?php echo($grade); ?> de <?php echo($village); ?> no kuni
                      </td>
                    </tr>
                  </table>
<?php
        }
    }
}

mysql_close();
?>
                </td>
              </tr>
            </table>
          </td>
        </tr>
      </table>
    </td>
  </tr> 
</tr>
Ensuite, pour trouver la source du problème, il faut savoir où chercher: tu dis que le tri par lettre ne marche pas : comment récupères-tu ce paramètre ? c'est là qu'il faut chercher et à partir de là il faut que tu vérifies si tu fais une requête correcte.

On dirait qu'il manque le début du code PHP, celui du début de fichier où tu récupères les paramètres d'url...

PS: je laisse le sujet ici, c'est pas un problème de SQL, mais bien un problème de PHP

Posté : 25 juin 2005, 17:52
par AdRi1
Aaaah oui il faut mettre $_GET['lettre'], et non $_GET['$lettre'] !! Ca marche maintenant ! :D

Par contre, j'arrive toujours pas à récupérer l'id... J'arrive à récupérer le nom le prénom, etc, mais pas l'id, c'est pas logique :(

Et merci pour le code j'y vois plus clair, jvais faire comme ça désormais ;)

Posté : 25 juin 2005, 18:03
par Cyrano
Essaye de visualiser le cheminement de ta donnée: l'id arrive de quelque part... ou n'arrive pas.

1 Soit elle arrive quelque part: où et à quel moment la récupérer ?

2 Soit elle n'arrive pas: remonte plus haut dans la chronologie de ton code jusqu'à l'endroit où tu fais une requête pour la récupérer: est-ce que tu as bien précisé dans ta requête le champ que tu veux récupérer incluant l'id? Si oui, alors GOTO 1, sinon.... peut-être qu'ajouter un champ dans la requête ne serait pas superflu :?:

Posté : 25 juin 2005, 18:18
par AdRi1
C'est ça marche, c'était parce que j'avais ommis le champ id dans mes requêtes ^^
Je croyais que c'était pas nécessaire en fait

Merci de ton aide, Cyrano !!