Des IF dans SELECT ?

[Résolu]
Signaler
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010
-
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010
-
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

Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010

: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
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
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
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010

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
;)
Messages postés
14
Date d'inscription
jeudi 19 février 2004
Statut
Membre
Dernière intervention
17 décembre 2004

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>
<? } ?>
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010

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
;)
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010

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
;)
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010

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
;)
Messages postés
14
Date d'inscription
jeudi 19 février 2004
Statut
Membre
Dernière intervention
17 décembre 2004

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 ^^
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010

OKI, je regarde ça.

a+

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010

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