Recuperer les resultats d'un formulaire et afficher une liste [Résolu]

Signaler
Messages postés
10
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021
-
Messages postés
32227
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 avril 2021
-
Bonjour,
j'ai crée un formulaire de recherche en PHP.
et je voudrais recupérer et afficher tout ce que l'utilisateur entre dans le formulaire.
En sachant que je recupère les villes dans ma table user_search ou j'ai l'id de session et mon id ville.
voila mon code

<?php require('inc_connexion.php'); ?>
<?php require('inc_identification_user.php'); ?>
<?php
if(session_status() == PHP_SESSION_NONE){
session_start();
}
?><html>
<link rel="stylesheet" type="text/css" href="style.css" />
<div id="container">
<h2>Rechercher une ville : </h2>
<!-- zone de connexion -->
<form method="POST" action="">
<input type="text" name="ville_nom">
<input type="SUBMIT" value="Search!">
</form>
</div>
</html>
<?php
//On definie la variable
if (isset($_POST['ville_nom'])) {
$ville_nom = $_POST['ville_nom'];}
{
if (empty($ville_nom))
{
echo "<p>" . "Veuillez saisir une ville !" . "</p>";
}
else
{
// la requete mysql de recherche
$result = $mysqli->query('SELECT ville_id, ville_nom FROM villes WHERE ville_nom LIKE "' . $ville_nom . '"');
while ($donnees = $result->fetch_array())
{
// ici tu fais ton insert
$sql = "INSERT INTO user_search (ville_id,ville_nom,user_id)
VALUES ('". $donnees['ville_id']."', '". $donnees['ville_nom']."','". $_SESSION['user_id']."')";
$mysqli->query($sql);
$villes[$donnees['ville_id']] = $donnees['ville_nom'];
}
}
}
?>
</div>
</div>
<div>
<p>Vos précédentes recherches :</p>
<?php
$result = $mysqli->query('SELECT ville_id From user_search where user_id like "%'. $user_id .'%" ');
$recherches = array();
while ( $row = $result->fetch_array())
{
$recherches[] = $row['ville_id'];
}?>
<ul>
<?php foreach ($villes as $id => $ville) : ?>
<li><a href="ville.php?id=<?php echo $id ?>"><?php echo $ville ?></a></li>
<?php endforeach ?>
</ul>
<?php require('inc_footer.php'); ?>

3 réponses

Messages postés
32227
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 avril 2021
3 436
Bonjour,

Déjà.. comme je te l'ai déjà demandé ... merci de préciser le langage dans les balises de code.
Explications, à lire entièrement, disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Je t'invite également à appliquer ce qui est indiqué ici :
https://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code
histoire que ton code soit plus facilement compréhensible et maintenable.

Et enfin... et bien... quelle est la question au juste ?
Car tu demandes :
je voudrais récupérer et afficher tout ce que l'utilisateur entre dans le formulaire.

C'est à dire ? Afficher ce que l'utilisateur a écrit dans le formulaire ? Donc le contenu des variables POST ?
Ou alors, afficher toutes les recherches précédentes de l'utilisateur ?
Ce n'est pas clair ....
Il faudrait nous indiquer clairement ce que tu cherches à faire, nous montrer la partie du code concernée .. et nous préciser sur quoi tu bloques exactement ( avec, si il y en a, les messages d'erreurs éventuels )


Messages postés
10
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021

Bonsoir
je veux afficher toutes les recherches précédentes de l'utilisateur car j'arrive a afficher la recherche du formulaire mais je n'arrive pas a récuperer les recherches précedente de l'utilisateur.
En fait, je voudrais récupérer toutes les villes que mon utilisateur a cherché dans la barre de recherche qui sont presente dans ma base user_search.
Voici mes erreurs sur la page :
Notice: Undefined variable: villes in /Applications/MAMP/htdocs//testrecherche.php on line 50

Warning: Invalid argument supplied for foreach() in /Applications/MAMP/htdocs/testrecherche.php on line 50

<?php require('inc_connexion.php'); ?>
<?php require('inc_identification_user.php'); ?>
<html>
<link rel="stylesheet" type="text/css" href="style.css"  />
<div id="container">
<h2>Rechercher une ville : </h2>
<!-- zone de connexion -->
<form method="POST" action="">
<input type="text" name="ville_nom">
<input type="SUBMIT" value="Search!">
</form>
</div>
</html>
<?php
//On definie la variable
if (isset($_POST['ville_nom'])) {
    $ville_nom = $_POST['ville_nom'];}
{
if (empty($ville_nom)) 
{
echo "<p>" . "Veuillez saisir une ville !" . "</p>";
} 
else
{
// la requete mysql de recherche
$result = $mysqli->query('SELECT ville_id, ville_nom FROM villes WHERE ville_nom LIKE "' . $ville_nom . '"');
while ($donnees = $result->fetch_array()) 
{
// ici tu fais ton insert
$sql = "INSERT INTO user_search (ville_id,ville_nom,user_id)
VALUES ('". $donnees['ville_id']."', '". $donnees['ville_nom']."','". $_SESSION['user_id']."')";
$mysqli->query($sql);
$villes[$donnees['ville_id']] = $donnees['ville_nom'];
   }
  }
}
?>
</div>
</div>
		<div>
			<p>Vos précédentes recherches :</p>
<?php
$result = $mysqli->query('SELECT ville_id From user_search where user_id like "%'. $user_id .'%" ');
$recherches = array();
while ( $row = $result->fetch_array())
	{
		$recherches[] = $row['ville_id'];
	}?>
<ul>
<?php foreach ($villes as $id => $ville) : ?>
<li><a href="ville.php?id=<?php echo $id ?>"><?php echo $ville ?></a></li>
<?php endforeach ?>
</ul>
<?php require('inc_footer.php'); ?>
Messages postés
32227
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 avril 2021
3 436
Déjà, tu boucles sur $villes... Alors que le résultat de ta recherche se trouve dans $recherches
Messages postés
32227
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 avril 2021
3 436 >
Messages postés
32227
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 avril 2021

Ton code pourrait plus simplement s'écrire
$result = $mysqli->query('SELECT ville_id, ville_nom From user_search where user_id = "'.$user_id .'" ');
$recherches = array();

echo "<ul>";
while ( $row = $result->fetch_array()){
	echo "<li><a href='ville.php?id=".$row{'ville_id']."'>".$row{'ville_nom']." </a></li>";
}
echo "</ul>";
Messages postés
10
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
29 avril 2021

J'ai reussi a résoudre le problème par contre je viens de voir que ma table user_search enregistre l'utilisateur numero 1 et pas les autres.
je ne sais pas si c'est une erreur sql ou php?
Messages postés
32227
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 avril 2021
3 436
Connecte-toi avec un autre utilisateur
Affiche le contenu des variable de session en utilisant par exemple d'instruction Var_dump
Assure-toi que tu as bien le bon id de ton user
Lance une recherche et regarde ce qui se met en base de données..
Mais là c'est une autre question, pour laquelle je t'invite à créer une nouvelle question sur le forum.

Et pense à mettre celle-ci en résolue.