[RESOLU] Formulaire Php

Eléphanteau du PHP | 28 Messages

08 févr. 2017, 12:23

Bonjour, alors voilà je suis censé faire un système pour que lorsque je choisisse la ville ou j'habite dans mon formulaire select, on m'affiche les destinations qui ont dans le tableau comme valeur 'departure' la même valeur que le choix dans le select.

Je m'explique, je choisis Paris comme étant ma ville, lorsque j'envoie le formulaire on va m'afficher tout ce qui est departuretime, arrvialtime .. correspondant à departure=Paris.

Si ma ville de départ est Paris je vais afficher tout les id 0,3,4.

Je ne veux pas utiliser de base de donnée ou autre sql juste rester dans le basique et je veux conserver mon tableaux je pense pas qu'il y est des modifications à faire mais plutôt des ajouts

Si c’est pas très clair voilà ou en est mon code :

(On m'avait conseiller de placer "if($travels['id'] ['departure'] == $_POST['departure'])" juste après mon tableau $tavels mais celà ne fonctionne pas.)

Ps: Soyez indulgent je suis vraiment débutant :lol:
<form action="formulaire.php" method="post">
<p><input type="text" name="nom">Votre nom </p>
<p><input type="text" name="prenom">Votre prénom </p>
<p><input type="text" name="email">Votre email</p>
<p><input type="tel" name="numero">Votre Numéro</p>
<label for="ville">Dans quel ville habitez-vous ? </label><br />
<select name="choix">
<option value="Paris">Paris</option>
<option value="orleans">Orléans</option>
<option value="dublin">Dublin</option>
<option value="nice">Nice</option>
<option value="tours">Tours</option>
</select>
<input type="submit" name="validation">
</form>

<?php 

if (isset($_POST['validation']))
{
	if ( (empty($_POST['nom']))
	OR
	(empty($_POST['prenom']))
	OR
	(empty($_POST['email']))
	OR
	(empty($_POST['numero'])))
	{
	echo '<br>Tous les champs doivent être remplis';
	}
	
	else	{
		
	
	
		$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:09','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'=>'Endouard'],
	'id' =>7,['departure'=>'Tours','arrival'=>'Amboise','departureTime'=>'16:00','arrivalTime'=>':18h40','driver'=>'Priscilla'],
	'id' =>8,['departure'=>'Nice','arrival'=>'Nantes','departureTime'=>'12:00','arrivalTime'=>'16:00','driver'=>'Charlotte'],
	];
	
	

		
		{echo '<br>Départ de ' , $travels ['id'] ['departure'];
		echo ' en direction de ' , $travels ['id'] ['arrival'];
		echo ' à' , $travels ['id'] ['departureTime'];
		echo ' pour arriver à ' , $travels ['id'] ['arrivalTime'];
		echo ' ,votre chauffeur/euse sera  ' , $travels ['id'] ['driver'];}
		
	
	
	}
	}

?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 févr. 2017, 15:08

salut,

Utilise la structure foreach pour parcourir le tableau et afficher ce qui correspond à $_POST['choix'].

pour ce qui est de la base de données, ce n'est pas complexe et surtout c'est très pratique pour mettre a jour les données sans devoir modifier le code php pour ajouter un trajet.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 28 Messages

08 févr. 2017, 21:57

Je suis un peu perdu dû coups que devra Etre ma ligne de code ? Cordialement,

Mammouth du PHP | 1967 Messages

09 févr. 2017, 09:43

la structure de ton tableau n'est pas bonne, tu auras du mal à retrouver tes petits
$travels= [
 0 => ['departure'=>'Paris','arrival'=>'Nantes','departureTime'=>'11:00','arrivalTime'=>'12:34','driver'=>'Thomas'],
 1 => ['departure'=>'Orléans','arrival'=>'Nantes','departureTime'=>'05:15','arrivalTime'=>'09:32','driver'=>'Mathieu'],
 2 => ['departure'=>'Dublin','arrival'=>'Tours','departureTime'=>'07:23','arrivalTime'=>'08:50','driver'=>'Nathanaël'],
 3 => ['departure'=>'Paris','arrival'=>'Orléans','departureTime'=>'03:00','arrivalTime'=>'05:26','driver'=>'Clément'],
 4 => ['departure'=>'Paris','arrival'=>'Nice','departureTime'=>'10:00','arrivalTime'=>'12:09','driver'=>'Audrey'],
 5 => ['departure'=>'Nice','arrival'=>'Nantes','departureTime'=>'10:40','arrivalTime'=>'13:00','driver'=>'Pollux'],
 6 => ['departure'=>'Nice','arrival'=>'Tours','departureTime'=>'11:00','arrivalTime'=>'16:10','driver'=>'Endouard'],
 7 => ['departure'=>'Tours','arrival'=>'Amboise','departureTime'=>'16:00','arrivalTime'=>':18h40','driver'=>'Priscilla'],
 8 => ['departure'=>'Nice','arrival'=>'Nantes','departureTime'=>'12:00','arrivalTime'=>'16:00','driver'=>'Charlotte'],
  ];
  
  

    foreach($travel in $travels){
if ($travel["departure"] == $_POST["departure"]) 
    {echo '<br>Départ de ' , $travel['departure'];
    echo ' en direction de ' , $travel['arrival'];
    echo ' à' , $travel['departureTime'];
    echo ' pour arriver à ' , $travel['arrivalTime'];
    echo ' ,votre chauffeur/euse sera  ' , $travel['driver'];}
}
    
  
  
  }
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 28 Messages

09 févr. 2017, 10:13

Merci, mais cela ne fonctionne pas en réalité c'est un exercice qui ma été donné et le tableau et une source pour l'exercice donc il faudrait que je réalise cela avec le tableau ci-dessus.

Cordialement,

Mammouth du PHP | 1967 Messages

09 févr. 2017, 10:49

La structure du tableau donné est absurde quoi qu'il arrive
Il y a plusieurs réassignation de la clé id avec une nouvelle valeur.

Si il faut vraiment garder cette structure, une astuce peut t'aider.
cet index "id" n'a en fait aucune utilité chaque sous tableau est mis dans le tableau dans index, donc php lui atrtribue un index numérique en partant de 0 et en incrémentant à chaque insertion. il suffit donc juste de supprimer l'index "id" qui ne sert à rien et boucler sur le tableau restant.

Mais signale à celui qui t'a donné cet exercice le problème de structure de celui-ci
unset($travels["id"]);
foreach($travel in $travels){
if ($travel["departure"] == $_POST["departure"]) 
    {echo '<br>Départ de ' , $travel['departure'];
    echo ' en direction de ' , $travel['arrival'];
    echo ' à' , $travel['departureTime'];
    echo ' pour arriver à ' , $travel['arrivalTime'];
    echo ' ,votre chauffeur/euse sera  ' , $travel['driver'];}
}
    
  
  
  }
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 28 Messages

09 févr. 2017, 11:02

D'accord, je ferais remonter à celui qui ma donné l’exercice mais le in de mon foreach ne semble pas fonctionnez, on m'affiche : "syntax error, unexpected 'in' (T_STRING)"

Mammouth du PHP | 1967 Messages

09 févr. 2017, 11:07

oui pardon c'est foreach($travels as $travel){
qu'il fallait. Je confondais avec un autre language
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 28 Messages

09 févr. 2017, 11:09

Étrange, "Undefined variable: travel " / "Invalid argument supplied for foreach()"

Code actuel :
else	{


	
	
		$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:09','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'=>'Endouard'],
	'id' =>7,['departure'=>'Tours','arrival'=>'Amboise','departureTime'=>'16:00','arrivalTime'=>':18h40','driver'=>'Priscilla'],
	'id' =>8,['departure'=>'Nice','arrival'=>'Nantes','departureTime'=>'12:00','arrivalTime'=>'16:00','driver'=>'Charlotte'],
	];
	
	unset($travels["id"]);
foreach($travel as $travels){
if ($travel["departure"] == $_POST["departure"]) 
    {echo '<br>Départ de ' , $travel['departure'];
    echo ' en direction de ' , $travel['arrival'];
    echo ' à' , $travel['departureTime'];
    echo ' pour arriver à ' , $travel['arrivalTime'];
    echo ' ,votre chauffeur/euse sera  ' , $travel['driver'];}
}
    
  
  
  }

Eléphanteau du PHP | 28 Messages

09 févr. 2017, 11:20

J'ai rien dis j'ai oublié le "s" du premier travel dans ma boucle ça marche après des jours de recherches merci beaucoup pour ton aide :D

Eléphanteau du PHP | 28 Messages

09 févr. 2017, 11:23

Tiens et bizarrement lorsque je retire le "unset($travels["id"]);" cela fonctionne !

Mammouth du PHP | 1967 Messages

09 févr. 2017, 11:26

oui ca marche mais cela devrait t'afficher une NOTICE car il n'y a pas d'index departure dans la valeur lié à id (qui n'est même pas un tableau)
si tu ne vois pas l'erreur, il faudrait que tu fasse afficher toute les erreurs, cela peut t'être d'une grande aide pour le debugage.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 28 Messages

09 févr. 2017, 11:28

Ok je note merci comment est-ce que j'affiche les erreurs ?

Eléphanteau du PHP | 28 Messages

09 févr. 2017, 11:34

Juste si je veux calculer la durée des trajet, comment pourrais-je faire ?

Cela me donne l'heure mais pas les minutes donc après les deux points

Cordialement,

Mammouth du PHP | 1967 Messages

09 févr. 2017, 11:42

Pour le calcule du temps de trajet, tu dois transformer les heures en date plutot qu'en string afin de pouvoir faire un calcul.

Pour les erreurs, cherche du coté de reporting E_ALL
http://php.net/manual/fr/function.error-reporting.php
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube