Page 1 sur 1

formulaire de contact avec select

Posté : 12 févr. 2019, 14:28
par mbike
Bonjour a tous,
est quelqu’un peut m'aider á résoudre ce problème que voici : example
Réalisation d’une application
Vous devez travailler pour un site de covoiturage, vos 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.
Première tache :
Créez un formulaire de contact qui contient les champs suivants :
–– Nom
–– Prénom
–– Adresse émail
–– Numéro de téléphone
–– Sélection de la ville de départ
Deuxième tache:
Proposez les voyages possibles.
Lorsque l’utilisateur clique sur « Rechercher », les destinations correspondantes à sa ville de départ sont
proposées.
voici ce que j'ai pu réaliser jusqu’à maintenant:

le code HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script src="https://ajax.googleapis.com/ajax/libs/j ... "></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstr ... ap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstr ... "></script>
<link href="http://fonts.googleapis.com/css?family=Lato" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="style.css">
<title>Document</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-lg-10 col-lg-offset-1">
<form id="contact-form" action="handler.php" role="form" method="post">
<div class="row">
<div class="col-md-6">
<label for="fname">Prénom</label>
<input type="text" name="fname" id="fname" class="form-control" placeholder="prenom" value="">
</div>
<div class="col-md-6">
<label for="name">Nom</label>
<input type="text" name="nom" class="form-control" placeholder="nom" value="">
</div>
<div class="col-md-6">
<label for="email">email</label>
<input type="email" name="email" id="email" class="form-control" placeholder="email" value="">
</div>
<div class="col-md-6">
<label for="phone">Téléphone</label>
<input type="tel" name="phone" id="phone" class="form-control" placeholder="téléphone" value="">
</div>
<div class="col-md-12">
<label for="departure">Ville de départ</label>
<select name="departure" id="departure">
<option></option>
<option value="Paris">Paris</option>
<option value="Orleans">Orleans</option>
<option value="Dublin">Dublin</option>
<option value="Nice">Nice</option>
<option value="Tours">Tours</option>
</select>
</div>
<div class="col-md-12">
<input type="submit" name="" class="button1" value="Envoyer">
</div>
</div>
</form>
</div>
</div>
</div>

</body>
</html>



Et le code PHP que voici:

<?php

if (isset($_POST['submit'])) {
$name = $_POST['name'];
$prenom = $_POST['prénom'];
$email = $_POST['email'];
$tel = $_POST['tel'];

}

$name = $_POST['nom'];
$prenom = $_POST['fname'];
$email = $_POST['email'];
$tel = $_POST['phone'];
$departure = $_POST['departure'];




echo $_POST['nom'];
echo "<br>";
echo $_POST['fname'];
echo "<br>";
echo $_POST['email'];
echo "<br>";
echo $_POST['phone'];
echo "<br>";
//echo "Votre ville de départ est : ";
echo "<br>";
echo $_POST['departure'];
echo "<br>";
echo "<br>";
$travels = $_POST['departure'];

$travels = array(
array( 'departure'=> 'Paris', 'arrival'=> 'Nantes', 'departureTime'=>'11:00', 'arrivalTime'=>'11:34', 'driver' =>'Thomas'),
array( 'departure'=> 'Orléans', 'arrival'=> 'Nantes', 'departureTime'=>'05:15', 'arrivalTime'=>'09:32', 'driver' =>'Mathieu'),
array( 'departure'=> 'Dublin', 'arrival'=> 'Tours', 'departureTime'=>'07:23', 'arrivalTime'=>'08:50', 'driver' =>'Nathanael'),
array( 'departure'=> 'Paris', 'arrival'=> 'Orléans', 'departureTime'=>'03:00', 'arrivalTime'=>'05:26', 'driver' =>'Clément'),
array( 'departure'=> 'Paris', 'arrival'=> 'Nice', 'departureTime'=>'10:00', 'arrivalTime'=>'12:09', 'driver' =>'Audrey'),
array('departure'=> 'Nice', 'arrival'=> 'Nantes', 'departureTime'=>'10:40', 'arrivalTime'=>'13:00', 'driver' =>'Pollux'),
array( 'departure'=> 'Nice', 'arrival'=> 'Tours', 'departureTime'=>'11:00', 'arrivalTime'=>'16:10', 'driver' =>'Edouard'),
array( 'departure'=> 'Tours', 'arrival'=> 'Amboise', 'departureTime'=>'16:00', 'arrivalTime'=>'18:40', 'driver' =>'Priscilla'),
array( 'departure'=> 'Nice', 'arrival'=> 'Nantes', 'departureTime'=>'12:00', 'arrivalTime'=>'16:00', 'driver' =>'Charlotte')
);


Est ce que quelqu'un peut m'aider a resoudre ce probleme

Merci d'avance

Re: formulaire de contact avec select

Posté : 12 févr. 2019, 15:44
par Spols
Qu'est-ce qui marche qu'est-ce qui marche pas ? pourquoi ?

Il faut que tu travail un peu plus de ton coté, nous n'allons pas faire ton exercice à ta place.

Re: formulaire de contact avec select

Posté : 12 févr. 2019, 15:53
par mbike
Bonjour merci pour ton feedback,
Je ne demande pas qu’on le fasse à ma place, pas du tout, mais juste me montrer le chemin qui mène vers la solution. Je suis tout à fait nouveau dans ce domaine
Voici ce que j’ai essayé de faire mais cela ne me donne pas le résultat escompté
$departure = $_POST['departure'];
foreach ($travels as $travel => $value ) {
if ( $departure == $travel) $departure++; {
foreach ($value as $k => $a) {
echo $k. ':'. $a . '<br/>';

}
}
}
Merci

Re: formulaire de contact avec select

Posté : 12 févr. 2019, 16:27
par Spols
ok la on peut t'indiquer quelques pistes.

avec un foreach ($travels as $travel => $value)

donc à chaque itération $travel correspond à la clé de l'item, valeur qui a peu d'interet tu ne les renseigne pas lors de la création du tableau il sont donc auto-généré.
donc tu peux te limité à foreach ($travels as $travel)
désormais $travel sera équivalent à un tableau associatif qui possède 4 clés et autant de valeur
tu cherche donc a savoir si ta ville de départ stocké dans $departure équivaut à la valeur de ton sous- tableau avec la clé 'departure'
donc ta condition if est incomplète
et l'itératiopn de ta variable $departure est incohérente vu qu'elle contient le départ recherché et que cette valeur ne doit pas être modifié.
après ta condition tu peux donc géré l'affichage désiré.
Et comme l'a dit un grand sage : toujours commencez par le HTML que l'on veut obtenir

Re: formulaire de contact avec select

Posté : 12 févr. 2019, 16:50
par mbike
Merci de la peine mais j'avoue que cela ne m'a pas permis d'avancer, si vraiment vous connaissez bien le sujet j'aimerais que vous m’écriviez le code qui mène vers la solution. Ainsi je pourrais m'en référer et saurais comment résoudre ce genre de problème, en m’exerçant sur ton exemple.
Contrairement a ce que tu crois ceci n'est pas un devoir ni un examen du genre, je suis en train d'apprendre le PHP et j'essaie de trouver comment résoudre une telle situation.
Merci quand de ta réaction spontanée.

Re: formulaire de contact avec select

Posté : 12 févr. 2019, 17:04
par Spols
au plus je relis ton code (au passage utilise les balise [ php][/php] pour une meilleur visibilité sur le forum) au plus je vois des incohérences

commence étape par étape en vérifiant que tes variables contiennent ce que tu veux.
if (isset($_POST['submit'])) {
$name = $_POST['name'];
$prenom = $_POST['prénom'];
$email = $_POST['email'];
$tel = $_POST['tel'];

}

$name = $_POST['nom'];
$prenom = $_POST['fname'];
$email = $_POST['email'];
$tel = $_POST['phone'];
$departure = $_POST['departure'];
ici je vois plein d'horreur, à quoi sert ton if si tu rempli quand même les même variable juste après et puis ne pense tu pas que tu manque un peux de cohérence avec tes clé du tableau $_POST ?? elle doivent correspondre à ton code html.
echo $_POST['nom'];
echo "<br>";
echo $_POST['fname'];
echo "<br>";
echo $_POST['email'];
echo "<br>";
echo $_POST['phone'];
Pourquoi utilisé le tableaux $_POST alors que tu viens de remplir une série de variable plus utile.

$travels = $_POST['departure'];

$travels = array(
Pareil pourquoi remplir une variable avec une données ne correspondant pas et ensuite l'écraser avec autres choses

rapidement je ferai ceci mais je n'ai rien testé
foreach $travels as $travel) {
if $travel['departure'] == $departure {
var_dump($travel);
}
}
si cela marche remplace le var_dump par ce qu'il te faut.

Re: formulaire de contact avec select

Posté : 12 févr. 2019, 17:17
par mbike
ton code ne marche pas ,
voici le code qui est tout prés du résultat, le seul problème c'est qu'il affiche toutes les destinations, au lieu de la seule destination choisie dans le formulaire

Re: formulaire de contact avec select

Posté : 12 févr. 2019, 17:18
par mbike
$departure = $_POST['departure'];
foreach ($travels as $travel => $value ) {

if ( $departure == $travel) $departure++; {
foreach ($value as $k => $a) {

print $k. ':'. $a . '<br/>';

}
}
}

Re: formulaire de contact avec select

Posté : 12 févr. 2019, 17:20
par mbike
je dois pouvoir afficher comme tel


Ville de départ ; Paris

departure:Paris
arrival:Nantes
departureTime:11:00
arrivalTime:11:34
driver:Thomas

pareil pour les autres
Orléans

departure:Orléans
arrival:Nantes
departureTime:05:15
arrivalTime:09:32
driver:Mathieu

ainsi de suite

Re: formulaire de contact avec select

Posté : 12 févr. 2019, 17:21
par Spols
si tu ne lis pas ce que j'écris il est inutile que je continue.

Re: formulaire de contact avec select

Posté : 12 févr. 2019, 17:23
par mbike
J'ai bien lu mon cher

Re: formulaire de contact avec select

Posté : 13 févr. 2019, 16:03
par mbike
Bonjour à tous
Je tiens à rappeler une chose que l’on a tendance à oublier, ce lieu est fait pour l’entraide, comme son nom l’indique on doit s’entraider. Lisez bien l’intitulé (PHP pour débutants) .
Je suis débutant comme tout le monde l’a été, alors si je m’inscris a ce forum c’est pour trouver de l’aide et non pas de subir des critiques. C’est assez frustrant comme cela. Si tu ne peux pas aider quelqu’un en difficultés, abstiens toi. Mais des propos du genre (on ne va pas faire tes devoirs, travaille un peu…) sont inutiles et blessants.
J’espère bien me faire comprendre .
Mais certains ne le comprennent pas et se prennent pour des professeurs qui se trouveraient face à leurs élèves, jusqu’à se fâcher parfois pour un rien.

Mes respects à tout monde.

Re: formulaire de contact avec select

Posté : 13 févr. 2019, 16:14
par Saian
$travels = array(/*...*/);

if (isset($_POST['departure'])) {
  foreach ($travels as $travel)
    if ($travel['departure'] == $_POST['departure'])
      print_r($travel);
}
PS : les accolades sont facultatives si une seule ligne est concernée par le if ou le foreach mais sinon elles sont obligatoires.

Re: formulaire de contact avec select

Posté : 13 févr. 2019, 17:55
par mbike
Bonjour
J’apprécie beaucoup ton geste et le fait que sois revenu sur ta décision de ne plus continuer à m’aider.
Je comprends maintenant aisément comment il faut afficher les tableaux, malgré que le résultat espéré ne soit pas encore atteint.
Je crois qu’avec encore un peu de recherche j'y parviendrais .
En tout cas merci beaucoup d’avoir pris la peine.
Mes respects