PHP/MySQL avec formulaire et comparaison

Fermé
stellou74 Messages postés 22 Date d'inscription mardi 18 février 2014 Statut Membre Dernière intervention 10 avril 2014 - 18 mars 2014 à 18:10
stellou74 Messages postés 22 Date d'inscription mardi 18 février 2014 Statut Membre Dernière intervention 10 avril 2014 - 23 mars 2014 à 15:41
Bonjour,

Alors j'ai un formulaire où un utilisateur doit entrer des villes et quand il exécute le script compare la ville entrée avec la requête SQL et affiche les villes qui correspondent sinon rien.
Je n'arrive pas afficher mes villes. Tout doit être fait en une page.

Voici mon code :
<?php
//déclaration des variables
$ville = addslashes($_POST['ville']);
//connexion à la base de données
$mysqli = new mysqli('localhost', 'root', '', 'projet_villes');
//requète MySQL
$result = $mysqli->query('SELECT ville_nom, population FROM villes');
?>

<form method="POST" action="index.php"> 
	<span>Entrez une ville : </span><input type="text" name="ville">
	<?php
		if ($row['ville_nom'] == $ville) {
			echo $row['ville_nom'] .' : '. $row['population'] .'<br>';
		}
	?>
	<input type="submit" value="Envoyer"> 
</form>
<?php
$result->free();
$mysqli->close();
?>


Merci pour votre aide
A voir également:

5 réponses

ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
18 mars 2014 à 19:00
Bonsoir,
Pour comparer il faut utiliser la clause WHERE dans la requête SQL. Tu n'as pas grand chose à modifier dans ta requête, je te laisse chercher les exemples (c'est comme ça qu'on apprend le mieux), il y en a plein dans le forum PHP de CCM.
Cordialement.
0
Ender-events Messages postés 200 Date d'inscription mercredi 19 décembre 2012 Statut Membre Dernière intervention 23 mai 2014 51
Modifié par Ender-events le 18/03/2014 à 19:02
Un peu de documentation: https://www.php.net/manual/fr/pdo.query.php
Tu me dis si le code marche bien (fais à la va vite)
<?php
//déclaration des variables
$ville = addslashes($_POST['ville']);
//connexion à la base de données
$mysqli = new mysqli('localhost', 'root', '', 'projet_villes');
//requète MySQL
foreach  ($mysqli->query('SELECT ville_nom, population FROM villes') as $row) {
?>

<form method="POST" action="index.php"> 
 <span>Entrez une ville : </span><input type="text" name="ville">
 <?php
  if ($row['ville_nom'] == $ville) {
   echo $row['ville_nom'] .' : '. $row['population'] .'<br>';
  }
 ?>
 <input type="submit" value="Envoyer"> 
</form>
<?php
}
$result->free();
$mysqli->close();
?>


Mon site web: chat.spreadnet.fr. Discussion du projet fr.openclassrooms.com/forum/sujet/site-web-spreadnet-chat-chat-par-themes
0
stellou74 Messages postés 22 Date d'inscription mardi 18 février 2014 Statut Membre Dernière intervention 10 avril 2014 1
18 mars 2014 à 19:35
Ender-events : Cela ne fonctionne pas. J'ai 2 erreurs :
- Notice: Undefined variable: result in C:\wamp\www\PHP inter\index.php on line 21
- Fatal error: Call to a member function free() on a non-object in C:\wamp\www\PHP inter\index.php on line 21

ReDLoG : pourquoi WHERE ?
0
stellou74 Messages postés 22 Date d'inscription mardi 18 février 2014 Statut Membre Dernière intervention 10 avril 2014 1
18 mars 2014 à 19:40
Je l'ai modifié comme ceci mais ça n'affiche toujours rien...

<?php
//déclaration des variables
$ville = addslashes($_POST['ville']);
//connexion à la base de données
$mysqli = new mysqli('localhost', 'root', '', 'projet_villes');
//requète MySQL
$row = $result = $mysqli->query('SELECT ville_nom, population FROM villes');
//transformation en array et affichge avec while
while ($row = $result->fetch_array())
{
	$row['ville_nom'] .' : '. $row['population'] .'<br>';
}
?>

<form method="POST" action="index.php"> 
	<span>Entrez une ville : </span><input type="text" name="ville">
	<?php
		if ($row['ville_nom'] == $ville) {
			echo $row['ville_nom'] .' : '. $row['population'] .'<br>';
		}
	?>
	<input type="submit" value="Envoyer"> 
</form>
<?php
$result->free();
$mysqli->close();
?>
0
Ender-events Messages postés 200 Date d'inscription mercredi 19 décembre 2012 Statut Membre Dernière intervention 23 mai 2014 51
18 mars 2014 à 19:57
On va utiliser WHERE + requête préparer (celle que j'utilise d'habitude).

<?php
	//déclaration des variables
	$ville = addslashes($_POST['ville']);
	//connexion à la base de données
    $bdd = new PDO('mysql:host=localhost;dbname=projet_villes', 'root', '');
	$reponse_ville = $bdd->prepare('SELECT ville_nom, population FROM villes WHERE ville_nom = :ville_nom');
    $reponse_ville->execute(array(
        'ville_nom' =>$ville));

    $donnees_ville = $reponse_ville->fetch();

    if (!$donnees_ville)
    {
        echo 'Cette ville n\'existe pas';
    }
    else
    {
		?>
		<form method="POST" action="index.php"> 
		 <span>Entrez une ville : </span><input type="text" name="ville">
		 <?php
		echo $donnees_ville['ville_nom'] .' : '. $donnees_ville['population'] .'<br>';
		 ?>
		<input type="submit" value="Envoyer"> 
		</form>
		<?php
	}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
stellou74 Messages postés 22 Date d'inscription mardi 18 février 2014 Statut Membre Dernière intervention 10 avril 2014 1
23 mars 2014 à 15:41
ça fonctionne mais ça ne me les affiche pas toutes. ça efface celle entrée précédemment.

Comment faire pour les afficher toutes à la suite ?
0