****Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

les utilisateurs devront passer par un formulaire de contact pour la mise en relation. L’utilisateur doit choisir sa ville de départ dans une liste, en fonction de la ville choisie, les différents itinéraires seront proposés.

<?php
error_get_last(-1);
ini_set('display_errors', 1);
$firstName = $_POST['prenom'];
$name = $_POST['nom'];
$email = $_POST['email'];
$phoneNumber =$_POST['telephone'];
$city=$_POST['ville'];
$validation =$_POST['recherche'];
$erreur="";
if (isset($validation))
 {
  if (empty($firstName))
  {
  $erreur = 'Veuillez remplire le champ Prenom';
  }
  elseif (empty($name))
   {
    $erreur='Veuillez remplire le champ nom';
  }
  elseif (empty($email))
  {
    $erreur='Veuillez entrer une adresse email';
  }
  elseif (!is_numeric($phoneNumber))
   {
    $erreur='Veuillez entrer un numero valide';
  }
else
{
  echo '<p> Non :'.''. htmlspecialchars($name).'</p>';
  echo '<p> Prenom :'.''. htmlspecialchars($firstName).'</p>';
  echo '<p> Email :'.''. htmlspecialchars($email).'</p>';
  echo '<p> Telephone :'.''. htmlspecialchars($phoneNumber).'</p>';
  echo '<p> Ville de départ :'.''. htmlspecialchars($city).'</p>';
}
}
echo $erreur;

$travels=[
'id'=>0, [
          'departure' => 'Paris',
          'arrival' => 'Nantes',
          'departureTime' => '11:00',
          'arrivalTime' => '12:34',
          'driver' =>'Thomas'
         ],
'id'=>1, [
          'departure' => 'Orléans',
          'arrival' => 'Nantes',
          'departureTime' => '05:15',
          'arrivalTime' => '09:32',
          'driver' =>'Mathieu'
         ],
'id'=>2, [
          'departure' => 'Dublin',
          'arrival' => 'Tours',
          'departureTime' => '07:23',
          'arrivalTime' => '08:50',
          'driver' =>'Nathanaël'
         ],
'id'=>3, [
          'departure' => 'Paris',
          'arrival' => 'Orléans',
          'departureTime' => '03:00',
          'arrivalTime' => '05:26',
          'driver' =>'Clément'
         ],
'id'=>4, [
          'departure' => 'Paris',
          'arrival' => 'Nice',
          'departureTime' => '10:00',
          'arrivalTime' => '12:00',
          'driver' =>'Audrey'
        ],
'id'=>5, [
          'departure' => 'Nice',
          'arrival' => 'Nantes',
          'departureTime' => '10:40',
          'arrivalTime' => '13:00',
          'driver' =>'Pollux'
         ],
'id'=>6, [
          'departure' => 'Nice',
          'arrival' => 'Tours',
          'departureTime' => '11:00',
          'arrivalTime' => '16:10',
          'driver' =>'Edouard'
         ],
'id'=>7, [
          'departure' => 'Tours',
          'arrival' => 'Amboise',
          'departureTime' => '16:00',
          'arrivalTime' => '18:40',
          'driver' =>'Priscilla'
         ],
'id'=>8, [
          'departure' => 'Nice',
          'arrival' => 'Nantes',
          'departureTime' => '12:00',
          'arrivalTime' => '16:00',
          'driver' =>'Charlotte'
          ],
]; //les destination correspondantes à sa ville de départ sont proposéess.

print_r($travels[2]);
foreach ($travels as  $travel) {
  echo $travel['departure'] .'</br>';
}
 ?>

Ce que je veux

Lorsque l’utilisateur clique sur « Rechercher », les destinations correspondantes à sa ville de départ sont proposées.

Ce que j'obtiens

Array Array Array Array Array Array Array Array Array Array Array Array Array Array

14 réponses


salut

ca devrait être mieux

foreach ($travels as  $travel) {
    foreach ($travels as  $search) {
         echo $search['departure'] .'</br>';
    }
 }

Bonjour,

Ton tableau est bien comme tu l'as mis :

$travels=[
'id'=>0, [
          'departure' => 'Paris',
          'arrival' => 'Nantes',
          'departureTime' => '11:00',
          'arrivalTime' => '12:34',
          'driver' =>'Thomas'
         ],
'id'=>1, [

ou

$travels=[
 [        'id'=>0,
          'departure' => 'Paris',
          'arrival' => 'Nantes',
          'departureTime' => '11:00',
          'arrivalTime' => '12:34',
          'driver' =>'Thomas'
         ],
 [      'id'=>1,
 ...

Si c'est comme tu l'as mis, c'est bizzare, déjà il va écraser à chaque fois l'id et tu as un tableau avec des type de données différentes ce qui n'est pas simple pour les foreach.

Salut,
J'vois pas ou est le problème puisque ton code fontionne ;)

http://syframework.alwaysdata.net/8wo

@plus

Pierre

Lyon
Auteur

Bonjour,
le code fonctionne, le problème, je veux afficher tous le contenu de chaque id individuellemment (id =>1 ou id=>2.)
voici ce que j obtient .( [departure] => Paris [arrival] => Nantes [departureTime] => 11:00 [arrivalTime] => 12:34 [driver] => Thomas ) ArrayArrayArrayArrayArrayArrayArrayArrayArrayArray

le code que j'ai écrit

  print_r($travels[0]);
foreach ($travels as $travel)
{

  echo $travels[0];
}

salut,
il faut faire :

    foreach ($travels[0] as $travel) {
         echo $travel['departure'];
    }

@plus

Pierre

Lyon
Auteur

j'ai essayé et sa donne sa : ParisParisParisParisParisParisParisParisParisParis

comme ça :

    foreach ($travels as  $travel) {
        foreach ($travel as  $search) {
            echo $search['departure'] .'</br>';
        }
    }

@plus

Pierre

Lyon
Auteur

j'ai déjà essayé mais sa fonctionne pas

ce qu'il faut faire :
http://syframework.alwaysdata.net/8wq

<?php
$travels=[
'id'=>0, [
          'departure' => 'Paris',
          'arrival' => 'Nantes',
          'departureTime' => '11:00',
          'arrivalTime' => '12:34',
          'driver' =>'Thomas'
         ],
'id'=>1, [
          'departure' => 'Orléans',
          'arrival' => 'Nantes',
          'departureTime' => '05:15',
          'arrivalTime' => '09:32',
          'driver' =>'Mathieu'
         ],
'id'=>2, [
          'departure' => 'Dublin',
          'arrival' => 'Tours',
          'departureTime' => '07:23',
          'arrivalTime' => '08:50',
          'driver' =>'Nathanaël'
         ],
'id'=>3, [
          'departure' => 'Paris',
          'arrival' => 'Orléans',
          'departureTime' => '03:00',
          'arrivalTime' => '05:26',
          'driver' =>'Clément'
         ],
'id'=>4, [
          'departure' => 'Paris',
          'arrival' => 'Nice',
          'departureTime' => '10:00',
          'arrivalTime' => '12:00',
          'driver' =>'Audrey'
        ],
'id'=>5, [
          'departure' => 'Nice',
          'arrival' => 'Nantes',
          'departureTime' => '10:40',
          'arrivalTime' => '13:00',
          'driver' =>'Pollux'
         ],
'id'=>6, [
          'departure' => 'Nice',
          'arrival' => 'Tours',
          'departureTime' => '11:00',
          'arrivalTime' => '16:10',
          'driver' =>'Edouard'
         ],
'id'=>7, [
          'departure' => 'Tours',
          'arrival' => 'Amboise',
          'departureTime' => '16:00',
          'arrivalTime' => '18:40',
          'driver' =>'Priscilla'
         ],
'id'=>8, [
          'departure' => 'Nice',
          'arrival' => 'Nantes',
          'departureTime' => '12:00',
          'arrivalTime' => '16:00',
          'driver' =>'Charlotte'
          ],
]; //les destination correspondantes à sa ville de départ sont proposéess.

$c = count($travels)-2;
for($b=0;$b<=$c;$b++){
     // print_r($travels[$b]);
     foreach ($travels[$b] as $key => $value) {
       echo $key . "=>" . $value . " ";
     }
     echo "</br>";
}

 ?>

@plus

Pierre

Encore une fois, ton tableau est mal formé, ton 'id' se remplace a chaque déclaration et te met un champ supplémentaire qui n'est pas un tableau.
L'enlever comme Pierre fait avec le count -2 n'est pas très propre (désolé de le dire comme ca Pierre),

<?php
$travels=[
 [        'id'=>0,
          'departure' => 'Paris',
          'arrival' => 'Nantes',
          'departureTime' => '11:00',
          'arrivalTime' => '12:34',
          'driver' =>'Thomas'
         ],
[        'id'=>1,
          'departure' => 'Orléans',
          'arrival' => 'Nantes',
          'departureTime' => '05:15',
          'arrivalTime' => '09:32',
          'driver' =>'Mathieu'
         ],
[        'id'=>2,
          'departure' => 'Dublin',
          'arrival' => 'Tours',
          'departureTime' => '07:23',
          'arrivalTime' => '08:50',
          'driver' =>'Nathanaël'
         ],
[        'id'=>3,
          'departure' => 'Paris',
          'arrival' => 'Orléans',
          'departureTime' => '03:00',
          'arrivalTime' => '05:26',
          'driver' =>'Clément'
         ],
[        'id'=>4,
          'departure' => 'Paris',
          'arrival' => 'Nice',
          'departureTime' => '10:00',
          'arrivalTime' => '12:00',
          'driver' =>'Audrey'
        ],
[        'id'=>5,
          'departure' => 'Nice',
          'arrival' => 'Nantes',
          'departureTime' => '10:40',
          'arrivalTime' => '13:00',
          'driver' =>'Pollux'
         ],
[        'id'=>6,
          'departure' => 'Nice',
          'arrival' => 'Tours',
          'departureTime' => '11:00',
          'arrivalTime' => '16:10',
          'driver' =>'Edouard'
         ],
[        'id'=>7,
          'departure' => 'Tours',
          'arrival' => 'Amboise',
          'departureTime' => '16:00',
          'arrivalTime' => '18:40',
          'driver' =>'Priscilla'
         ],
[        'id'=>8,
          'departure' => 'Nice',
          'arrival' => 'Nantes',
          'departureTime' => '12:00',
          'arrivalTime' => '16:00',
          'driver' =>'Charlotte'
          ],
]; //les destination correspondantes à sa ville de départ sont proposéess.

foreach ($travels as $travel)
{
     foreach ($travel as $key => $val) 
     {
       echo $key . ' : ' . $val . ', ';
     }
     echo '</br>';
}

 ?>

Après le "ca ne fonctionne pas" n'est pas très clair, ce serait bien de dire ce que tu obtiens afin de pouvoir essayer de comprendre.

C'est peut être pas propre, mais ça fonctionne :D
Pour preuve

@plus

Pierre

@eltharin,
ce que tu as fait fonctionne, mais le tableau viens peut être d'une source dont il à pas la main ;)

http://syframework.alwaysdata.net/8ws

Lyon
Auteur

Bonjour, j'ai pris note de vos conseils .
j'ai effectué la suite de mon code . voici ce que j'ai fait.
merci pour votre aide .

$paris = array_merge_recursive($travels[0], $travels[3], $travels[4]);
$orleans = $travels[1];
$dublin = $travels[2];
$nice = array_merge_recursive($travels[5], $travels[6], $travels[8]);
$tours = $travels[7];

if ($city === 'Paris') {
  foreach ($paris as $value) {
    foreach ($value as $search) {
      echo $search . ' ';
    }
    echo '<br>';
  }
}

Ce que j'obtiens
Non :nom

Prenom :prenom

Email :nom@exemple.fr

Telephone :00000

Ville de départ :Paris

Paris Paris Paris
Nantes Orléans Nice
11:00 03:00 10:00
12:34 05:26 12:00
Thomas Clément Audrey

Deuxième essai avec une autre ville

$paris = array_merge_recursive($travels[0], $travels[3], $travels[4]);
$orleans = $travels[1];
$dublin = $travels[2];
$nice = array_merge_recursive($travels[5], $travels[6], $travels[8]);
$tours = $travels[7];

if ($city === 'Orléans') {
  foreach ($orleans as $value) {
    foreach ($value as $search) {
      echo $search . ' ';
    }
    echo '<br>';
  }
}

Ce que j'obtiens
Non :nom

Prenom :prenom

Email :nom@exemple.fr

Telephone :00000

Ville de départ :Orléans

Warning: Invalid argument supplied for foreach() in /Users/../Sites/formulaire/formulaire.php on line 117

Warning: Invalid argument supplied for foreach() in /Users/../Sites/formulaire/formulaire.php on line 117

Warning: Invalid argument supplied for foreach() in /Users/../Sites/formulaire/formulaire.php on line 117

Warning: Invalid argument supplied for foreach() in /Users/../Sites/formulaire/formulaire.php on line 117

Warning: Invalid argument supplied for foreach() in /Users/../Sites/formulaire/formulaire.php on line 117

Ce qui est normal vu que encore une fois, tu n'as pas la même chose au niveau de tes données.
Fais un print_r de ton tableau $paris et $orléans et tu verras que ce n'est pas la même structure.

Concernant ce code, tu as prévu d'avoir toujours le même tableau d'entrée (qui soit dit en passant, je n'ai tjours pas de réponse au fait de savoir si il et bien comme tu l'as écrit à savoir mal formé), car ces lignes :

$paris = array_merge_recursive($travels[0], $travels[3], $travels[4]);
$orleans = $travels[1];
$dublin = $travels[2];
$nice = array_merge_recursive($travels[5], $travels[6], $travels[8]);
$tours = $travels[7];

me font franchement peur.