Page 1 sur 1

eviter la selection du dernier champ d'une table

Posté : 07 mars 2006, 15:40
par Micka
voila j'ai une table qui contient 4 champs.
je les affiches par l'intermédiaire d'un select, mais je ne souhaite pas voir afficher le dernier enregistrement.

voici mon code


<select name="blabla">
// Connexion à la base de donnée
$connexion = mysql_connect('***','***','');

// requete
$requete = "SELECT * FROM table ";

// execution de la requete
$resultat = mysql_db_query('****', $requete, $connexion);

// Fermeture de la connexion
mysql_close($connexion);

while ($a_resultat = mysql_fetch_array($resultat )) { 
    echo "<option value=\"".$a_resultat['blabla1'].$a_resultat['blabla2']."\">".$a_resultat['blabla1'].$a_resultat['blabla2']."</option>"; 
}
</select>[/php]


merci de votre aide

Re: eviter la selection du dernier champ d'une table

Posté : 07 mars 2006, 15:46
par mario
$requete = "SELECT * FROM table ";
N'utilise pas * (c'est une habitude à ne pas prendre)
utilise plutot
$requete = "SELECT blabla1, blabla2, blabla3 FROM table";

Posté : 07 mars 2006, 15:46
par Ryle
bah suffit de pas l'afficher dans le echo.... nan ? :)
<select name="blabla"> 
<?
// Connexion à la base de donnée 
$connexion = mysql_connect('***','***',''); 
// requete 
$requete = "SELECT * FROM table "; 
// execution de la requete 
$resultat = mysql_db_query('****', $requete, $connexion); 
// Fermeture de la connexion 
mysql_close($connexion); 

while ($a_resultat = mysql_fetch_array($resultat )) { 
    echo "<option value=\"".$a_resultat['blabla1'].$a_resultat['blabla2']."\">".$a_resultat['blabla1']."</option>"; 
}  
?>
</select>

Posté : 07 mars 2006, 15:47
par Hermès
tu utilises une variable de sauvegarde :
while ($a_resultat = mysql_fetch_array($resultat )) {
  if (isset($temp)) {
    echo "<option value=\"".$temp['blabla1'].$temp['blabla2']."\">".$temp['blabla1'].$temp['blabla2']."</option>";
  }
  $temp = $a_resultat;
}
Autrement dit, au premier passage dans la boucle, rien n'est affiché mais $temp prend la valeur de $a_resultat.
Ensuite, à chaque cycle, on affiche $temp du cycle d'avant et $temp prend la valeur du cycle en court.

A la fin de la boucle, $temp vaut la valeur du dernier cycle valide mais n'est pas affiché.

Edit : au vu des deux réponses au-dessus, j'ai l'impression de pas avoir du tout répondu à la question moi =)

Posté : 07 mars 2006, 15:50
par Ryle
Mario > Posté le: 07 Mar 2006, 14:46:08
Ryle > Posté le: 07 Mar 2006, 14:46:22

Je demande humblement pardon d'avance, mais....

RAAAAAAAAAAAAAAHHHHHHHHHHH !!!!!!!!!! ;)

bon.. faut que je m'entraine à taper plus vite moi :)

Posté : 07 mars 2006, 16:14
par Micka
en enlevent les echo ,je n'est plus d'affichage.

et si je passé par un for plutot qu'un while avec une condition tant que i=0;i<4;i++ ?

Posté : 07 mars 2006, 16:24
par Ryle
Je ne disais pas d'enlever le "echo", juste de ne pas mettre le champ que tu ne voulais pas afficher dedans :)

Mais finalement je crois que Hermès est plus proche de ce que tu voulais faire...

Juste histoire de se mettre d'accord sur les termes, les champs d'une table ce sont les colonnes, les enregistrements ce sont les lignes.

Si ce sont des lignes que tu parles et que tu souhaites pas afficher la derniere, tu as la solution d'Hermès.
Si tu sais qu'il y en aura toujours 4, tu peux effectivement faire une boucle for (de 0 à 3 si tu ne veux pas le dernier) voire même, d'ajouter un "LIMIT 0, 3" à la fin de ta requête sql pour qu'il ne te ramène que les 3 premières lignes.

Si ce sont des colonnes, remplace l'étoile du "SELECT *" par les noms des colonnes (c'est toujours plus mieux) et soit tu ne ramène pas ta 4ème colonne, soit tu ne l'utilise pas dans ton echo :)

voili voilo... :)

Posté : 07 mars 2006, 16:29
par Micka
Merci Ryle.

effectivement tu as raison je parlé bien d'eregistrement, je vais reviser mon vocabulaire et utiliser tout simplement un LIMIT.

je me sans un peu con sur le coup.

Merci beaucoup

Posté : 07 mars 2006, 16:30
par Micka
[RESOLU]