Page 1 sur 1

mes debuts en php

Posté : 27 juil. 2019, 14:43
par Mimibelette
Bonjour,

Voila, je débute en PHP et je galère.
Bon j'essaye de faire un lien avec une selection par ville selon l'heure du trajet et je tourne en rond.
Il doit probablement avoir plusieurs erreurs.
J'ai fais le tour des variables if et des tableaux multidimensionnels mais j'ai du mal a trouver mes erreurs.
voila mon codes HTML:

Code : Tout sélectionner

<!DOCTYPE html> <html lang="fr"> <head> <meta content="text/html" charset="utf-8" http-equiv="Content-Type"> <title>devoir css</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <form name="contactform" method="post" action="cible.php"> <p>Votre nom : <input type="text" name="nom" /></p> <p>Votre Prénom : <input type="text" name="prenom" /></p> <p>Votre E-mail : <input type="text" name="mail" /></p> <p>Votre Téléphone : <input type="text" name="telephone" /></p> <p>Votre Ville de départ : </p> <select name="travels[]"> <option value="0">Paris</option> <option value="1">Orleans</option> <option value="2">Dublin</option> <option value="3">Nice</option> <option value="4">Tours</option> </select> <input type="submit" name="submit" value="Recherchez" /> </form> </body> </html>
mon code PHP :

Code : Tout sélectionner

<?php echo $_POST['nom']; echo $_POST['prenom']; echo $_POST['mail']; echo $_POST['telephone']; $travels = array ( 'Paris' => 0, ('departure' => 'Paris', 'arrival' => 'Nantes', 'departureTime' => '11:00', 'arrivalTime' =>'12:34', 'driver' => 'Thomas'), 'Orleans' => 1, ('departure'=>'Orleans', 'arrival' => 'Nantes', 'departureTime' => '05:15', 'arrivalTime' =>'09:32', 'driver' => 'Matthieu'), 'Dublin' => 2, ('departure'=> 'Dublin', 'arrival' => 'Tours', 'departureTime' => '07:23', 'arrivalTime' =>'00:50', 'driver' => 'Nathanael'), 'Paris' => 3, ('departure'=> 'Paris', 'arrival' => 'Orleans', 'departureTime' => '03:00', 'arrivalTime' =>'05:26', 'driver' => 'Audrey'), 'Paris' => 4, ('departure'=> 'Paris', 'arrival' => 'Nice', 'departureTime' => '10:00', 'arrivalTime' =>'12:09', 'driver' => 'Audrey'), 'Nice' => 5, ('departure'=> 'Nice', 'arrival' => 'Nantes', 'departureTime' => '10:40', 'arrivalTime' =>'13:00', 'driver' => 'Pollux'), 'Nice' => 6, ('departure' => 'Nice', 'arrival' => 'Tours', 'departureTime' => '11:00', 'arrivalTime' =>'16:10', 'driver' =>'Edouard'), 'Tours' => 7, ('departure' => 'Tours', 'arrival' => 'Amboise', 'departureTime' => '16:00', 'arrivalTime' =>'18:40', 'driver' => 'Priscilla'), 'Nice' => 8, ('departure' => 'Nice', 'arrival' => 'Nantes', 'departureTime' => '12:00', 'arrivalTime' =>'16:00', 'driver' => 'Charlotte'), ); if ($travels == Paris AND $heure < 4) ( echo "3" ) elseif ($travels == Paris AND $heure <10) ( echo "4" ) elseif ($travels == Paris AND $heure <11) ( echo "0" ) if ($travels == Orleans) ( echo "1" ) if ($travels == Dublin) ( echo "2" ) if ($travels == Nice AND $heure <11:10) ( echo "6" ) elseif ($travels == Nice AND $heure <11:00) ( echo "5" ) elseif ($travels == Nice AND $heure <12:10) ( echo "8" ) if ($travels == Tours) ( echo "7" ) foreach( $travels as $clef => $valeur ) { echo $clef } ?>

Re: mes debuts en php

Posté : 29 juil. 2019, 15:53
par Ryle
Hello !

Il y a effectivement pas mal d'erreur dans ton code php ;)

La première : les instructions doivent se terminer par un point-virgule (il t'en manque après tous tes echo). Sans ça php ne sait pas que l'instruction n'est pas terminée et il ne peut pas passer à la suivante
if ($travels == Paris AND $heure < 4)
(
echo "3" ;
)
elseif ($travels == Paris AND $heure <10)
(
echo "4" ;
) ... 
- Quand tu compares une variable à une chaine de caractères, pour que php sache qu'il ne s'agit pas d'une constante ou de quoi que ce soit d'autre, il faut mettre celle-ci entre guillemets ou entre apostrophes
if ($travels == 'Paris' AND $heure < 4)
(
echo "3" ;
)
elseif ($travels == 'Paris' AND $heure <10)
(
echo "4" ;
) ... 
Tu vas également avoir un problème pour comparer les heures : 11 est un nombre, 1100 aussi, mais 11:00 est une chaîne de caractères et il est compliqué de savoir si une chaine de caractères est plus petite ou plus grande qu'une autre. Autant à l'affichage, tu peux utiliser le séparateur, autant pour tes comparaison, il vaut mieux conserver des nombres :
if ($travels == 'Nice' AND $heure <1110)
(
echo "6" ;
)
Ca fonctionnera déjà mieux. Après, même si cela n'a pas d'impact réel dans ton cas, il vaut mieux préférer les opérateurs && et || plutôt que AND et OR. Il y a une différence assez subtile entre les 2, mais il y a une différence, alors autant éviter de prendre des risques et de s'arracher les cheveux le jour où cette différence affectera ton code ;))
if ($travels == 'Paris' && $heure < 4)
(
echo "3" ;
)
elseif ($travels == 'Paris' && $heure <10)
(
echo "4" ;
) ... 
Ah et puis moi j'aime pas ça :
'Nice' => 8, ('departure' => 'Nice', 'arrival' => 'Nantes', 'departureTime' => '12:00', 'arrivalTime' =>'16:00', 'driver' =>  'Charlotte'),
);
S'il y a une virgule à la fin, ça veut dire qu'il devrait y avoir un élément ensuite, si on fait ça proprement, attention à ne pas mettre la dernière virgule (attention par contre à l'ajouter si tu ajoutes un nouvel élément à ton tableau.

Voilà qui devrait résoudre tes erreurs de php. Reste encore un problème à gérer, c'est que tu utilises le même nom de variable "travels" pour ton tableau de trajet que pour le select dans lequel tu demandes sa ville de départ à l'utilisateur.
<select name="travels[]">
<option value="0">Paris</option>
<option value="1">Orleans</option>
<option value="2">Dublin</option>
<option value="3">Nice</option>
<option value="4">Tours</option>
</select>
De plus tu ne reçois qu'une valeur (pas besoin des crochets dans le nom de ton select) et qui plus est, les valeurs que tu reçois sont 0 pour Paris, 1 pour Orléans, etc. Donc dans ton code php il ne faut pas comparer $_POST['travels'] à 'Paris', mais à 0.

Voilà, ça ne résoudra probablement pas tout, mais devrait déjà te permettre de bien avancer ;)