PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 03-03-2010 18:21:03

debe
Membre
Inscription : 25-06-2009
Messages : 87

une seule fois le même champ apres requete

bonjour,
j'avais posté un message qui avait eu satisfaction concernant la création d'une base pour gérer des baby sitter.

j'ai donc une table  avec comme colonne id_dispo | id_baby | vac (qui prends 1 ou 0 si vacances scolaires ou pas | jour (qui peut prendre la valeur 1 2 3 ou 4 en fonction du jour de la semaine) | journee (qui prend 0 ou 1 ) | soir (qui prend 0 ou 1)

si je ressort en concaténation de ma table $vac.$jour.$journee.$soir
j'ai un truc du style 1010

j'ai au niveau de ma requete, des cases à cocher tabulaires qui me ramene aussi des truc du genre 1010 en faisant
[code php] foreach ($dispo as $valeur)
{
    echo $valeur;   
} [/code]

par contre, lorsque je lie les deux, j'ai autant de fois de résultats que de case cochées
[code php]
foreach ($dispo as $valeur)
{
    $datedispo[] = $valeur;   
}

$sql_dispo = "SELECT distinct(baby_sitter.nom) AS nom,dispo.vac AS vac,dispo.jour AS jour,dispo.journee AS journee,dispo.soir AS soir FROM dispo INNER JOIN baby_sitter WHERE dispo.id_baby = baby_sitter.id_baby";
$req_dispo = mysql_query($sql_dispo) or die('Erreur SQL !<br>'.$sql_dispo.'<br>'.mysql_error());
while ($data = mysql_fetch_assoc ($req_dispo))
{
        $id_baby = $data['id_baby'];
        $vac = $data['vac'];
        $jour = $data['jour'];
        $journee = $data['journee'];
        $soir = $data['soir'];
        $disponibilite = $vac.$jour.$journee.$soir;   
       
        if (in_array($disponibilite, $datedispo))
        {
        echo $data[nom].'<br>';
        }
[/code]
me ramene,
nom1
nom1
nom1
nom2
nom2
etc....
or, évidemment, je ne veux que nom1 , nom2

Hors ligne

#2 04-03-2010 08:29:52

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : une seule fois le même champ apres requete

Saluton,
C'est que tu as une mauvaise interprétation de DISTINCT.
Cette option agit sur l'ensemble des colonnes de la ligne de résultat, le n-uplet, et non, comme certains le croient souvent, sur la colonne qui suit DISTINCT dans la clause SELECT de la requête.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 04-03-2010 09:30:42

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : une seule fois le même champ apres requete

ok. as tu une piste pour poursuivre car je suis bloqué pour n'afficher qu'une seule fois le nom ?

peut être que c'est l'ensemble de la requete qui n'est pas bien pensée, mais j'avoue que, après 2h de prise de tete hier, je ne suis pas plus avancé ce matin et je me sens dans une impasse

merci pour ta réponse

Hors ligne

#4 04-03-2010 09:51:14

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : une seule fois le même champ apres requete

Saluton,
Avant ta boucle tu initialises un array

$retenus=array();

Dans ta boucle, au lieu d'afficher les noms retenus, tu les stockes dans un array

$retenus[]=$data['nom'];

En sortie de boucle tu appliques la fonction array_unique() à ce tableau.
Ensuite, tu en fais ce que bon te semble.
Si tu avais sélectionné aussi l'identifiant de la babby-sitter dans la table, tu aurais pu utilisé cet identifiant comme index pour le tableau $retenus, ce qui t'évitais d'utiliser array_unique.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 04-03-2010 11:00:45

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : une seule fois le même champ apres requete

merci, ça fonctionne. mais l'initialisation avant la boucle semble ne servir à rien
si je mets   $retenus[]=$data['nom']; dans la boucle ça marche avec ou sans initialisation auparavant.

Hors ligne

#6 04-03-2010 11:07:35

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : une seule fois le même champ apres requete

Oui, mais quand on ne veut pas coder comme un goret on déclare ses tableaux avant de leur affecter une valeur.
Si tu mets error_reporting sur E-ALL, tu verras que PHP tousse quand même.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#7 04-03-2010 11:47:42

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : une seule fois le même champ apres requete

d'accord, c'était une question pas une contradiction, je ne me serais pas permis smile

je n e l'ai pas fais sur les autre, je m'y mets

Hors ligne

Pied de page des forums