eviter la selection du dernier champ d'une table

Micka
Invité n'ayant pas de compte PHPfrance

07 mars 2006, 15:40

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

Mammouth du PHP | 768 Messages

07 mars 2006, 15:46

$requete = "SELECT * FROM table ";
N'utilise pas * (c'est une habitude à ne pas prendre)
utilise plutot
$requete = "SELECT blabla1, blabla2, blabla3 FROM table";
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 mars 2006, 15:46

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>

Eléphant du PHP | 312 Messages

07 mars 2006, 15:47

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 =)
Modifié en dernier par Hermès le 07 mars 2006, 15:51, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 mars 2006, 15:50

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

Micka
Invité n'ayant pas de compte PHPfrance

07 mars 2006, 16:14

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++ ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 mars 2006, 16:24

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... :)

Micka
Invité n'ayant pas de compte PHPfrance

07 mars 2006, 16:29

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

Micka
Invité n'ayant pas de compte PHPfrance

07 mars 2006, 16:30

[RESOLU]