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

Eléphanteau du PHP | 15 Messages

23 juin 2005, 15:25

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 !

Eléphant du PHP | 260 Messages

23 juin 2005, 16:03

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 ?
Mon jeu : http://www.battle-stars.fr.tc
---
Mon serveur : http://servlan.dyndns.org
---
Bientôt tous mes serveurs OPEN ;)

Eléphant du PHP | 139 Messages

23 juin 2005, 16:10

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 !!!

Eléphant du PHP | 450 Messages

23 juin 2005, 16:11

.... trop beau le site... :shock: :shock:
Alone in the dark , I smile :D

Eléphanteau du PHP | 15 Messages

23 juin 2005, 16:17

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

Eléphant du PHP | 260 Messages

23 juin 2005, 16:27

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 !!
Mon jeu : http://www.battle-stars.fr.tc
---
Mon serveur : http://servlan.dyndns.org
---
Bientôt tous mes serveurs OPEN ;)

Eléphanteau du PHP | 15 Messages

23 juin 2005, 16:36

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)

Eléphant du PHP | 260 Messages

23 juin 2005, 17:02

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 !
Mon jeu : http://www.battle-stars.fr.tc
---
Mon serveur : http://servlan.dyndns.org
---
Bientôt tous mes serveurs OPEN ;)

Eléphanteau du PHP | 15 Messages

23 juin 2005, 17:19

Ok je vais faire ça. Merci de ton aide ! ;)

Eléphanteau du PHP | 15 Messages

23 juin 2005, 17:51

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

Eléphanteau du PHP | 15 Messages

23 juin 2005, 20:21

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>

Mammouth du PHP | 19672 Messages

25 juin 2005, 14:35

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 15 Messages

25 juin 2005, 17:52

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 ;)

Mammouth du PHP | 19672 Messages

25 juin 2005, 18:03

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 :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 15 Messages

25 juin 2005, 18:18

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 !!