bonjour a tous,
je voudrais récupéré des données qui sont dans une table prédifini, mais par le biais d'un formulaire de recherche.
mais afficher les réponses qui correspondre a la table, mais pas les autres recherches.
si vous pouviez m'expliquer...
Modérateur
Bonjour,

Une table en hêtre ou en pin ? Smiley biggrin

Plaisanterie mise à part, ta question est super mal posée.

De quelle genre de table s'agit-il déjà ? une table dans une base de donnée ?

Ensuite tu dis vouloir afficher les réponses correspondant à la table ! Elles sont forcément dans la table me semble-t-il ! Ça ne serait pas plutôt "les réponses correspondant au formulaire de recherche et pas les autres informations contenues dans la table" que tu voudrais afficher ?

Amicalement,
je me suis mal expliqué désoler,
oui je voudrais récupéré les recherches utilisateurs correspondant aux donnés dans la base.
j ai une table ville avec deux colones city_name et city_text, j'aimerai affiché les recherches en forme de liens apres validations du formulaire.
Modérateur
Bonjour,

Tu as donc une page HTML avec un formulaire dedans. Celui-ci contient une balise <form>, des champs (des <input> probablement) et au moins un bouton de validation (soit un <input> lui aussi ou un <button>). Tes champs vont avoir deux attributs particuliers, "name" et" "value" qui vont contenir les choix de l'internaute au moment où il va cliquer sur le bouton de validation. Par ailleurs la balise <form> doit avoir un attribut "action" dont la valeur est le nom d'un script php, et éventuellement un autre attribut appelé "method" (lui mettre la valeur "post").

Exemple :

<form action="cherche.php" method="post">
<input type="text" name="ville">
<input type="submit" value="Rechercher">
</form>
Souvent le script php dans "action" de la balise <form> est le même que celui du formulaire. Ça permet dans le cas où l'internaute a mal rempli son formulaire de ré-afficher. On aura donc dans le script php des if then else qui détermineront si c'est un premier appel au script php, auquel cas on affiche simplement le formulaire, ou bien si c'est un appel au script php suite à une validation de formulaire auquel cas on affichera soit le résultat de la recherche, soit à nouveau le formulaire en cas d'erreur.

L'exécution de ce script sera déclenché sur le serveur lorsque l'internaute aura appuyé sur le bouton de validation. Dans ce script php, tu vas devoir faire en gros 3 choses :
- récupérer les valeurs entrées par l'internaute dans le formulaire
- interroger la base de donnée et extraire de la table "ville" les informations correspondant à la recherche de l'internaute
- afficher le résultat de la recherche

Les données provenant du formulaire sont rangées automatiquement dans des variables php de la forme $_POST["xxx"] ($_POST étant en fait un tableau) où "xxx" correspondant à l'un des "name" des inputs de ton formulaire, la valeur de la variable $_POST["xxx"] étant ce que l'internaute a mis dans son formulaire. Il est en général prudent de faire un contrôle de ces valeurs (pour empêcher les malveillants de pirater ta base de données). Si par exemple, tu attends un nom de ville (donc à priori que des lettres, - et ') tu peux renvoyer une erreur à l'internaute. Au passage, en vérifiant si $_POST["xxx"] est indéfinie, ça permet de savoir s'il s'agit d'un "premier appel" du script et non d'une exécution du script suite à la validation du formulaire.

Exemple avec le formulaire précédent :
<?php if (isset($_POST["ville"]))
{
    // vérifier ici que $_POST["ville"] ne contient pas de code malicieux
    // si tout va bien, ranger le résultat dans une variable s'appelant par exemple $ville
    // sinon ré-afficher le formulaire et un message d'erreur
}
else
{
    // afficher ici le formulaire
}
?>


Une fois qu'on a bien en main toutes les données fournies par l'internaute et qu'on a vérifié qu'elles n'étaient pas malicieuses, on peut effectuer l'interrogation de la base de données (là, ça dépend un peu de ce que tu utilises, mais en gros, on a une étape de connexion à la base, puis un requête à faire (en général en sql). On obtient en retour un tableau qui contient les données de la table qui correspondent à la recherche de l'internaute.

Il ne reste plus qu'à lire ce tableau et afficher son contenu comme tu le souhaites avec des séries de print php qui vont fabriquer le html approprié.

Voilà pour le principe. Pour les détails, c'est à toi de bâtir ça.

Amicalement,
Modifié par parsimonhi (15 Jan 2016 - 13:27)
merci pour t es réponses.

mais je vais te solicité encore, voila j'aimerais affiné la recherche.

mon code:
	
if($city_name){
	
$search = $mysqli->query('SELECT id_city, city_name, city_text FROM city WHERE city_name = "'.$city_name.'"');

while($row = $search->fetch_array()){
					
	echo '<li>votre recherche est:<a href="city.php">'.$city_name.'</a></li>';
						
					
		}
					
	}else{
			$message = '<p>aucun resultat trouvé.</p>';

		}
			

je t'explique: quand on recherche la ville qui se trouve dans la base de donnée ok on affiche sinon si on recherche une autre ville qui n est pas dans la base on affiche un message
merci pour t es réponses.

mais je vais te solicité encore, voila j'aimerais affiné la recherche.

mon code:


if($city_name){

$search = $mysqli->query('SELECT id_city, city_name, city_text FROM city WHERE city_name = "'.$city_name.'"');

while($row = $search->fetch_array()){

echo '<li>votre recherche est:<a href="city.php">'.$city_name.'</a></li>';


}

}else{
$message = '<p>aucun resultat trouvé.</p>';

}



je t'explique: quand on recherche la ville qui se trouve dans la base de donnée ok on affiche sinon si on recherche une autre ville qui n est pas dans la base on affiche un message
Modérateur
Bonjour,

Teste d'abord si ton $search est vide ou pas. Par exemple :
 if ($search->num_rows)
{
    echo '<ul>';
    while ($row = $search->fetch_array())
    {
        echo '<li>...</li>';
    }
    echo '</ul>';
}
else $message = '<p>Aucun resultat trouvé.</p>';


Amicalement,
non avec un print_r ou var_dump il n'est vide, quand je tape la ville de tour qui n'est pas dans la base pas de message.

avec un var_dump:

object(mysqli_result)[2]
public 'current_field' => null
public 'field_count' => null
public 'lengths' => null
public 'num_rows' => null
public 'type' => null

par contre en meme temps si tu pouvais mexpliqué le var_dump cela serai gentil(jsuis debutant)

avec un print_r:

mysqli_result Object ( [current_field] => 0 [field_count] => 3 Smiley lengths => [num_rows] => 1 Smiley type => 0 )
Modérateur
Bonjour,

Tu n'aurais pas une ligne avec que des "null" dans ta base par hasard ?

Pour ce qui est du var_dump, c'est juste une fonction permettant d'afficher le contenu de ce que tu lui mets en paramètre de manière détaillée.

Amicalement,
Modérateur
Bonjour,

Dans le code php, on teste s'il y a au moins une ligne et on n'affiche un message d'erreur que s'il n'y en a pas. Or, pour une raison inconnue pour l'instant, la requête sql semble avoir récupéré un tableau avec une ligne de ta table. Du coup, php n'affiche pas de message d'erreur.

Amicalement,