PHP/MySQL avec formulaire et comparaison

stellou74 Messages postés 25 Statut Membre -  
stellou74 Messages postés 25 Statut Membre -
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   Statut Membre Dernière intervention   57
 
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 248 Statut Membre 51
 
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 25 Statut Membre 1
 
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 25 Statut Membre 1
 
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 248 Statut Membre 51
 
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 25 Statut Membre 1
 
ç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