Recuperer les resultats d'un formulaire et afficher une liste

Résolu/Fermé
Firefly90 Messages postés 26 Date d'inscription mardi 27 avril 2021 Statut Membre Dernière intervention 10 mai 2021 - 28 avril 2021 à 20:45
jordane45 Messages postés 36600 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 décembre 2022 - 28 avril 2021 à 22:22
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

jordane45 Messages postés 36600 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 décembre 2022 4 420
28 avril 2021 à 21:05
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://forums.commentcamarche.net/forum/affich-37584947-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 )


0
Firefly90 Messages postés 26 Date d'inscription mardi 27 avril 2021 Statut Membre Dernière intervention 10 mai 2021
28 avril 2021 à 21:25
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'); ?>
0
jordane45 Messages postés 36600 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 décembre 2022 4 420
28 avril 2021 à 21:32
Déjà, tu boucles sur $villes... Alors que le résultat de ta recherche se trouve dans $recherches
0
jordane45 Messages postés 36600 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 décembre 2022 4 420 > jordane45 Messages postés 36600 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 décembre 2022
28 avril 2021 à 21:37
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>";
0
Firefly90 Messages postés 26 Date d'inscription mardi 27 avril 2021 Statut Membre Dernière intervention 10 mai 2021
28 avril 2021 à 22:01
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?
0
jordane45 Messages postés 36600 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 décembre 2022 4 420
28 avril 2021 à 22:22
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.
0