[RESOLU] problème sélection ligne d'un tableau

Eléphant du PHP | 166 Messages

16 janv. 2017, 12:33

Bonjour
Je suis nouveau dans le forum PHPFrance.
Je suis débutant en HTML et PHP (formation que j'effectue actuellement en cours du soir).
Mon but est d'avancer/d'apprendre, de pouvoir être aider dans les premiers temps et qui sais, pouvoir aider moi-même par la suite sur le forum (beaucoup de travail en perspective).
Voila j'ai un souci avec une recherche dans un tableau.

Code : Tout sélectionner

<body> <form action="index.php" method="post"> <!-- IDENTITE Client --> <p>Nom : <input type="text" name="nom" placeholder="entrez votre Nom" id="m1"></p> <p>Prénom : <input type="text" name="prenom" placeholder="entrez votre Prénom" id="m2"></p> <p>N° de tel : <input type="tel" name="telephone" placeholder="N° de telephone" id="m3"></p> <!-- Selection ville de départ --> <p>Ville de départ : <select name="Vdepart"> <option value="paris">Paris</option> <option value="orleans">Orléans</option> <option value="dublin" selected>Dublin</option> <option value="nice">Nice</option> <option value="tours">Tours</option> </select></p> <!-- Bouton "Recherche" de la ville de départ --> <p>Recherche : <input type="submit" value="Rechercher" name="cherche" id="m4"></p> </form> <?php // Déclaration du Tableau($voyages) // $voyages = array ( 0 => array('Départ' => 'Paris', 'Arrivé' => 'Nantes', 'HeureDep' => '11:00', 'HeureAriv' => '12:34', 'Conducteur' => 'Thomas'), 1 => array('Départ' => 'Orléans', 'Arrivé' => 'Nantes', 'HeureDep' => '05:15', 'HeureAriv' => '09:32', 'Conducteur' => 'Mathieu'), 2 => array('Départ' => 'Dublin', 'Arrivé' => 'Tours', 'HeureDep' => '07:23', 'HeureAriv' => '08:50', 'Conducteur' => 'Nathanael'), 3 => array('Départ' => 'Paris', 'Arrivé' => 'Orléans', 'HeureDep' => '03:00', 'HeureAriv' => '05:26', 'Conducteur' => 'Clément'), 4 => array('Départ' => 'Paris', 'Arrivé' => 'Nice', 'HeureDep' => '10:00', 'HeureAriv' => '12:09', 'Conducteur' => 'Audrey'), 5 => array('Départ' => 'Nice', 'Arrivé' => 'Nantes', 'HeureDep' => '10:40', 'HeureAriv' => '13:00', 'Conducteur' => 'Pollux'), 6 => array('Départ' => 'Nice', 'Arrivé' => 'Tours', 'HeureDep' => '11:00', 'HeureAriv' => '16:10', 'Conducteur' => 'Edouard'), 7 => array('Départ' => 'Tours', 'Arrivé' => 'Amboise', 'HeureDep' => '16:00', 'HeureAriv' => '18:40', 'Conducteur' => 'Priscilla'), 8 => array('Départ' => 'Nice', 'Arrivé' => 'Nantes', 'HeureDep' => '12:00', 'HeureAriv' => '16:00', 'Conducteur' => 'Charlotte'), ); //Je teste pour savoir si j'ai quelque chose dans POST if(!empty($_POST['Vdepart'])) // si quelque chose, je place dans une variable { $villedepart = $_POST['Vdepart']; } // j'effectue une recheche dans le tableau($voyages) // foreach ($voyages as $element) { if ($element == $villedepart) { echo $element; var_dump($element); } } ?>
Je sélectionne une ville de départ dans mon formulaire, ensuite je lance la recherche et cela doit me trouver les villes correspondantes à ma sélection. Je bloque là ?? en lançant une bcle ForEach sur le tableau, je n'arrive pas a isoler la ligne correspondante a ma sélection ??
Je fais un var-dump pour voir se que contient $element, mais là vide ??? je pense que je ne fais pas la bonne manip.

Mammouth du PHP | 1967 Messages

16 janv. 2017, 12:54

Tu as un tableau de tableau, donc quand tu fais foreach ($voyages as $element)
$element est un tableau (ton var_dump te le précise)

tu dois donc tester $element['Départ'] == $villedepart.

PS je te conseille d'éviter les accents dans les index de tes tableaux. Il ne devrait jamais être utilisé pour l'affichage, donc une valeur sure sans accent ou caractère bizarre est plus indiqué
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 166 Messages

16 janv. 2017, 13:09

if(!empty($_POST['Vdepart']))
// si quelque chose, je place dans une variable
{
$villedepart = $_POST['Vdepart'];
}
// j'effectue une recheche dans le tableau($voyages) //
foreach ($voyages as $element)
{
if ($element['Depart'] == $villedepart)
{
echo $element;
var_dump($element);
}
}[/code]
j'ai donc mis se code, mais a l'affichage du navigateur je n'ai que mon formulaire, et rien ne se passe, le var_dump n'affiche rien non plus.

Mammouth du PHP | 1967 Messages

16 janv. 2017, 14:33

Tu as changé tes index de ton tableau ou tu as oublié l'accent à Départ dans la condition ?
met ton var_dump avant la condition pour savoir si c'est le !empty ou le == qui bloque.

un echo $element ne te donnera rien d"autre que "Array" donc c'est probablement pas ce que tu veux
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 166 Messages

16 janv. 2017, 14:49

Oui J'ai enlevé l'accent à Depart.
Ensuite mon code avec le var_dump :

Code : Tout sélectionner

if(!empty($_POST['Vdepart'])) // si quelque chose, je place dans une variable { $villedepart = $_POST['Vdepart']; } // j'effectue une recheche dans le tableau($voyages) // foreach ($voyages as $element) { if ($element['Depart'] == $villedepart) { var_dump($element['Depart']); } }
n'afiche rien.
par contre si le var_dump je le met :

Code : Tout sélectionner

if(!empty($_POST['Vdepart'])) // si quelque chose, je place dans une variable { $villedepart = $_POST['Vdepart']; } // j'effectue une recheche dans le tableau($voyages) // foreach ($voyages as $element) { if ($element['Depart'] == $villedepart) { echo $element['Depart']; } var_dump($element['Depart']); }
cela m'affiche toutes les destination de départ. Ce n'est pas se que je veux. je veux uniquement c'elles qui seront dans $villedepart??

Mammouth du PHP | 2703 Messages

16 janv. 2017, 15:24

0 => array('Départ' => 'Paris'
<option value="paris">Paris</option>
donc comparaison de paris et Paris. le résultat est normal.

Eléphant du PHP | 166 Messages

16 janv. 2017, 15:52

là je cale...
Je résume mon code :
dans <option> je sélectionne par exemple "Dublin".
Je met ensuite "Dublin" dans $villedepart.
Ensuite avec le FOREACH je scan mon tableau, et dès que je trouve "Dublin", j'affiche...

or 1tu veux me dire que dans tous les cas, étant donné que dans <option> j'ai déjà des villes de renseigner, mon FOREACH va trouver automatiquement toutes les villes de Départ est que le résultat est normal ? c'est ça ?

Mammouth du PHP | 1967 Messages

16 janv. 2017, 16:10

Non le problème vient de ta typo, Paris est différent de paris (majuscule ou non) donc il faut être sur de comparer la même chose

je conseille de tout mettre en minuscule, comme ca pas de question sinon dans ta comparaison tu peux aussi mettre un strtolower de chaque cté pour rendre ta comparaison insensible à la casse
Modifié en dernier par Spols le 16 janv. 2017, 16:30, modifié 1 fois.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 166 Messages

16 janv. 2017, 16:22

Merci. Trouvé.
C'est bien la typo, je n'ai pas appliqué les règles pourtant bien décrites dans mes courts.
Impeccable ça fct.