PHP/MySQL avec formulaire et comparaison

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

5 réponses

  1. 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
    1. 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
      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
        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
      2. 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
        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