Des IF dans SELECT ?

Résolu
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010 - 16 déc. 2004 à 20:20
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010 - 18 déc. 2004 à 16:32
Bonsoir à tous

Petit problème de SELECT dans lequel je voudrais mettre des conditions... si c'est possible.

J'ai 30 variables définies par des boutons radio qui se trouvent donc à oui ou non.
Je fais un schmilblick perso pour l'affichage, ça marche pas mal, même si ce n'est certainement pas l'idéal du PHP. Mais je voudrais conserver le résultat de ma requète pour une autre utilisation et là.... plouf plouf !

Exemple:

Code pour une seule option concernée; j'ai 30 options semblables .

Boutons radios

<td>Nom </td>
<td>

</td>
<td>

</td>

Le choix de l'utilisateur fait que $_POST['nom'] se retrouve à OUI (ou à NON)

Je transforme en variable avec
$nom = htmlentities ($_POST['nom']);

Je fais ensuite un requète sur ma base qui a 30 champs avec:
$query_reponse = "SELECT * FROM selections WHERE pseudo='$nom' ";

Tout fonctionne OK jusque là!

Mais après, lors de l'affichage dans une page PHP, je suis obligé de faire des conditions pour afficher ou non le champs concerné selon le choix initial de l'utilisateur (oui ou non) avec:

if($nom=="oui"){echo '<td bgcolor="#CCCCCC">
'.$row['pseudo'].'
</td>';}

Pour eviter cela, il y a peut-être la possibilité de modifier directement la requête elle-même pour n'avoir que les champs concernés, dans le genre:

$query_reponse = "SELECT pseudo si $nom='oui', adresse si $adresse='oui'??(30 fois)??. FROM selections";

Cela me permettrait de conserver $query_reponse pour un autre traitement

Si qqu'un a une idée lumineuse.....

A bientôt
rocknroll2

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)

10 réponses

cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
18 déc. 2004 à 16:32
:big) :big) :big) :big) :big) :big) :big) :big) :big) :big) :big)

Slt à tous,

probleme resolu... j'ai cherché un peu... beucoup et tout est OK avec
mysql_fetch_assoc au lieu de mysql_fetch_array

Si ça peut servir à qqu'un...

A+ pour un autre blème

rocknroll2

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
16 déc. 2004 à 22:10
salut
déjà je suis pas sur que tu ai besoin du htmlentities
fait ça tout simplement : $nom = $_POST['nom'];

pour ta question, je sais qu'il existe une fonction pour faire des
requétes multiples et qui s'appelle "mysqli_multi_query()" mais
je suis désolé je ne sais pas trop comment ça marche.
j'avais vu cette fonction sur nexen.net

bonne chance.

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
17 déc. 2004 à 13:05
Je vais voir, merci Tucsoufle;

Si qu'un a 1 autre idée... je coince toujours !

A+

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
No0ZBeeX Messages postés 14 Date d'inscription jeudi 19 février 2004 Statut Membre Dernière intervention 17 décembre 2004
17 déc. 2004 à 14:23
Bonjour,
Méthodologie:
# Vérification de l'éxistance de tes variables
-> Si oui, tu rajoutes le champs à afficher.
# Affichage des champs récupérés.

$query_reponse = "SELECT ";
if ( isset($_POST['nom']) ){
$query_reponse .= "nom ";
}
*ainsi de suite*
$query_reponse .= "FROM selections WHERE ";
if ( $_POST['nom'] == 'oui' ){ $query_reponse ."pseudo $nom ";
}
*ainsi de suite*
Tu devrais avoir comme retour uniquement les champs qui ont été cochés.
Il ne te reste plus qu'à faire la boucle d'affichage :
while( $Row = mysql_fetch_array($query_reponse) ){ ?>

<tr>
<?
foreach($Row as $key => $value){
echo '<td>' . $value . '</td>';
}
?>
</tr>
<? } ?>

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
17 déc. 2004 à 19:33
slt No0ZBeeX

ouf! cà me parait compliqué à première vue, mais je vais étudier ça de près; je ne comprends pas tout mais je vais assimiler!

Je te tiens au courant et merci pour ta réponse

A+ et bonne prog

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
17 déc. 2004 à 19:55
Reslt No0ZBeeX

J'ai mis mes cellules grise dans ton code...... elles ont chaufées!

Avant tout, une question "générale"...
Quelle raison de faire par exemple:
$query_reponse .= "nom ";
au lieu de
$query_reponse = $query_reponse."nom ";
En fait je ne connais pas encore cette "formulation" de concaténation (puisque je pense que s'en est une... mais je me trompe peut-être!)

Ensuite:

Ta première partie:
$query_reponse = "SELECT ";
if ( isset($_POST['nom']) ){
$query_reponse .= "nom ";
}
pour vérifier l'existence des variables. Est-ce obligatoire (dans ce cas..) puisqu'elles existent toutes mais sont à "oui" ou à "non" car dépendantes de cases d'options (Value="oui" ou Value="non" selon l'état "checked" pour le même "name=..." de l'option).

A+

rocknroll2

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
17 déc. 2004 à 23:43
Re..Re..slt No0ZBeeX

Bon, j'ai étudier ta sol, je l'ai mise en pratique et adaptée àtoutes mes variables.

Cà marche, mais2 fois plus qu'espéré.....
En effet, dans l'affichage, j'ai systématiquement 2 fois la même variable affichée...... ??????????
genre:

Durand Durand homme homme.......

solution éventuelle ? car malgré qques bidouilles, pas moyen !

@+

rocknroll2

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
No0ZBeeX Messages postés 14 Date d'inscription jeudi 19 février 2004 Statut Membre Dernière intervention 17 décembre 2004
18 déc. 2004 à 13:06
Bonjour,
regarde ce que te donne la requete dans le phpmyadmin, je pense que le résultat est en doublon. Pour palier à cela, rajoute distinct :
query_reponse = "SELECT distinct ";

mise à part cela, je ne vois pas pourquoi tu obtiendrais un doublon ^^
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
18 déc. 2004 à 14:57
OKI, je regarde ça.

a+

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
18 déc. 2004 à 15:20
=>No0ZBeeX

en fait, après demande d'affichage un peu différentes, il apparaît que la raison des doublons soit:

Un affichage du champ avec un numéro (la clé?), suivi du même affichage avec le nom du champ réel; exemple:

"0 Durand" suivi de "pseudo Durand"
"1 Jean" suivi de "prenom Jean"
etc....

il me semble avoir vu qque part que mysql_fetch_array donnait un tableau numéroté ET associatif. c'est peut-être un début de piste, mais je n'ai pas de solution !!!!!

A+
rocknroll2

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
Rejoignez-nous