Exercice à résoudre

Tinush
Invité n'ayant pas de compte PHPfrance

15 déc. 2014, 11:41

Bonjour,
Je bloque sur l'exercice suivant surtout sur les listes déroulantes !
Je compte sur vous pour m'aider à le résoudre :wink: !



> Nombre d’habitants des capitales Européennes
Initialiser le tableau suivant, qui donne le nombre d’habitants de quelques capitales européennes.


Ville Nombres d’habitants
Londre 8 416 535
Berlin 3 517 424
Madrid 3 207 247
Rome 2 863 322
Paris 2 249 975
Bucarest 1 883 425
Varsovie 1 724 404
Prague 1 243 201
Stockholm 897 700
Lisbonne 547 733
Dublin 527 612
Bruxelles 168 576

1- Créer une page exercice1.php , qui proposera une liste déroulante dynamique (issue des données du tableaux) : à la sélection d’une valeur dans la liste, afficher le message qui rappelle le nom de la ville sélectionnée et son nombre d’habitants correspondant.

2- Créer une page exercice2.php, qui n’affichera que les capitales dont le nombre d’habitants est supérieur à 2 millions.

Mammouth du PHP | 1966 Messages

15 déc. 2014, 12:13

As tu au moins commencer à créer ta page exercice1.php ? Montre la nous.

Une liste déroulante se fait avec une balise select et des balise option à l'intérieur pour chaque choix.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Tinush
Invité n'ayant pas de compte PHPfrance

15 déc. 2014, 12:22

J'ai trouver la solution au premier exercice mais pas au deuxième !


<?php

$capitale = array(
1 => array("Berlin", "8 416 535"),
2 => array("Londres", "3 517 424"),
3 => array("Madrid", "3 207 247"),
4 => array("Rome", "2 863 322"),
5 => array("Paris", "2 249 975"),
6 => array("Bucarest", "1 883 425"),
7 => array("Varsovie", "1 724 404"),
8 => array("Prague", "1 243 201"),
9 => array("Stockholm", "897 700"),
10 => array("Lisbonne", "547 733"),
11 => array("Dublin", "527 612"),
12 => array("Bruxelles", "168 576"),

);

?>

<meta charset="utf-8">
<title>Les Capitales Européennes</title>

<h1>Les Capitales Européennes</h1>

<form method="post" action="exercice1.php">

<select name="capitale" id="capitale" onchange="submit()">
<option value="0">-- choisir la capitale --</option>

<?php
foreach ($capitale as $key => $value) {
$selected="";
if($_POST['capitale'] == $key) { $selected = "selected"; }
echo '<option value="'.$key.'" '.$selected.'>'.$value[0].'</option>';
}
?>

</select>

</form>

<br>

<?php

if(isset($_POST['capitale'])) {
if($_POST['capitale'] == 0){
echo 'Choisissez une Capitale Européennes pour connaitre son nombre d habitants.';
}
else {
$choice = $capitale[$_POST['capitale']];
echo 'Vous avez choisi : '.$choice[0].'<br>Il y a '.$choice[1].' habitants dans cette ville. ';
}
}

?>

Mammouth du PHP | 1966 Messages

15 déc. 2014, 12:31

une condition if sur l'affichage de tes options suffira

Mais as tu compris pourquoi cela fonctionne pour ton premier exercice ? sans bouton submit je doute qu'il sois vraiment fonctionnel

PS utilise les balise php sur le forum pour montrer ton code
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Mammouth du PHP | 2278 Messages

15 déc. 2014, 14:07

Si, il est fonctionnel grace au onchange ="submit".
Je trouve le code un peu cochon avec beaucoup de choses inutiles
<!-- Il manque une bonne partie du prologue HTML-->
<meta charset="utf-8">
<title>Les Capitales Européennes</title>
<?php
	$capitales = array
	(
	1 => array("Berlin", "8 416 535"),
	2 => array("Londres", "3 517 424"),
	3 => array("Madrid", "3 207 247"),
	4 => array("Rome", "2 863 322"),
	5 => array("Paris", "2 249 975"),
	6 => array("Bucarest", "1 883 425"),
	7 => array("Varsovie", "1 724 404"),
	8 => array("Prague", "1 243 201"),
	9 => array("Stockholm", "897 700"),
	10 => array("Lisbonne", "547 733"),
	11 => array("Dublin", "527 612"),
	12 => array("Bruxelles", "168 576"),
	);
?>

<h1>Les Capitales Européennes</h1>
<!--ajout de fieldset pour l'esthétique-->
<fieldset>
	<legend>Avoir des détails sur  une capitale</legend>
	<form method="post" action="exercice1.php">
		<!-- Suppression du onchange = "submit()" qui fonctionnait mais
		 empêchait les boutons de jouer leur rôle-->
		<select name="capitale" id="capitale"">

		<?php
			foreach ($capitales as $key => $value)
			{
				echo '<option value="'.$key.'" '.$selected.'>'.$value[0].'</option>';
			}
		?>
		</select>
		<!-- formaction est une propriété des boutons qui se sbstitue à action= de la clause <form> -->
		<button formaction = "exercice1.php" type ="submit">Choisir cette ville</button>
</fieldset>

<fieldset>
	<legend>Connaitre les villes de plus de 2 000 000  d'habitants</legend>
 		<button formaction = "exercice2.php" type ="submit">Connaitre</button>
</form>
</fieldset>

<?php

if(isset($_POST['capitale'])) {
$choice = $capitales[$_POST['capitale']];
echo '<fieldset>Vous avez choisi : '.$choice[0].'<br>Il y a '.$choice[1].' habitants dans cette ville. </fieldset>';

}

?>
Pour exercice2.php, il faudrait savoir si vous avez appris les sessions ou pas. IL faudrait avoir les populatins au moins sans espaces, ou utiliser str_replace
Sans quoi l suffit d'un foreach sur le tableau avec un if à l'intérieur
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD