Aller au contenu

Résultat recherche


Sujets conseillés

Posté

Bonjour,

J'ai un ensemble de formulaires en php et mysql et dont l'un est un moteur de recherche.

Lors de la recherche j'aimerai que cela m'affiche le nombre de résultat que la recherche à trouver.

Pouvez vous m'aider?

voici le code de ma page de recherche:

CODE
<?php

/* *********************** A T T E N T I O N *************************/

/* Veillez à indiquer le bon chemin vers votre fichier connexion.php */

require("../include/connexionDB.php");

/* Connexion au serveur MySQL */

$connection=mysql_connect ($serveur, $username, $password, $table);

if (!$connection) {

die("Impossible de se connecter au serveur : " . mysql_error());

}

/* Sélection de la base de données */

$db_selected = mysql_select_db($database, $connection);

if (!$db_selected) {

die ("Impossible d'utiliser la base de données : " . mysql_error());

}

?>

<html>

<head>

<title>Rechercher</title>

<link href="css/style2.css" rel="stylesheet" type="text/css">

</head>

<body>

<?php

$query="select * from $table";

$result=mysql_query($query);

$totenreg=mysql_num_rows($result);

if ($totenreg==0)

echo "<td colspan=9 align=center bgcolor='#000000'><h2>IL N'Y A PAS D'ENREGISTREMENT A RECHERCHER</td>";

else if (!(empty($_POST["recherche"])))

{

echo "<table width=100% border=1 align=center>";

echo "<tr bgcolor='#FFFF00'>";

echo "<td colspan=9><h2>XXXX Résultat de la Recherche</td>";

echo "</tr>";

echo "<tr align=center bgcolor=#87CEEB>";

echo "<td><h4 class='h41'>Numéro</td>";

echo "<td><h4 class='h41'>Latitude</td>";

echo "<td><h4 class='h41'>Longitude</td>";

echo "<td><h4 class='h41'>Type</td>";

echo "<td><h4 class='h41'>Nom</td>";

echo "<td><h4 class='h41'>Adresse</td>";

echo "<td><h4 class='h41'>Code Postal</td>";

echo "<td><h4 class='h41'>Ville</td>";

echo "</tr>";

$i=0;

while ($row=mysql_fetch_array($result))

{

if (stristr($row[$_POST["choix"]], $_POST["recherche"]))

{

if ($i==0)

{

echo "<tr bgcolor=#D3D3D3>";

$i++;

}

else

{

echo "<tr bgcolor=#FFFFFF>";

$i--;

}

echo "<td><h5>".$row["id"]."</td>";

echo "<td><h5>".$row["latitude"]."</td>";

echo "<td><h5>".$row["longitude"]."</td>";

echo "<td><h5>".$row["type"]."</td>";

echo "<td><h5>".$row["nom"]."</td>";

echo "<td><h5>".$row["adresse"]."</td>";

echo "<td><h5>".$row["codepostal"]."</td>";

echo "<td><h5>".$row["ville"]."</td>";

echo "</tr>";

}

}

echo "</table>";

}

else

echo "<h4>Veuillez remplir le champ recherche !";

?>

</body>

</html>

Posté

Bonjour,

Après ceci :

$query="select * from $table";
$result=mysql_query($query);

Ajoute :

$nb_resultat = mysql_num_rows($result);

Puis dans ton code, <?=$nb_resultat?> :)

Posté

Bonjour et merci pour cette réponse rapide,

J'ai fait comme indiqué j'ai rajouté

$nb_resultat = mysql_num_rows($result);

qui me semble est identique à

$totenreg=mysql_num_rows($result);

a l'endroit indiqué et ensuite ceci

<?=$nb_resultat?>

à la place des XXX à cet endroit

echo "<td colspan=9><h2>XXXX Résultat de la Recherche</td>";

Mais cela ne donne rien.

Merci pour votre aide.

Posté

Erf, oui, j'avais pas vu ton $totenreg

Juste après le $totenreg=mysql_num_rows($result);, ajoute un "echo $totenreg;"

Juste après.... la ligne en dessous quoi pour voir ce qu'il retourne :)

Posté

C'est toujours le même résultat, c'est le nombre d'enregistrement dans la base qui ressort et non le résultat de la recherche.

Posté

C'est donc au niveau de la requète que ca ne marche pas. Ca affiche le nb d'enregistrement trouvé pour la requète donnée.

Affiches la requète, pour voir ce qu'elle contient avant de l'envoyer à mysql_fetch_row.

Nico.

Posté

Bonjour,

Je n'avais pas regardé ton code....

Mais je ne le comprends pas.

Tu fais un formulaire de recherche, ok, et ensuite tu veux afficher quoi ? Parce que là, ce que tu veux afficher d'après ton code, c'est TOUS les enregistrements de la base :

$query="select * from $table";

Là, effectivement, tu auras tous les enregistrements. Inutile de chercher à compter les enregistrements concernés par la recherche, puisque tu ne cherches pas vis à vis de la base.

Par contre, visiblement, tu mets en surbrillance les champs concernés par la recherche :

echo "<tr bgcolor=#D3D3D3>";

$i++;

Si ca marche, alors rajoutes un compteur :

$cpt++;

que tu affiches plus bas :

echo $cpt;

Et là, tu auras le nombre d'enregistrements concernés par la recherche. Mais à partir du formulaire et non à partir de la table.

Nicolas.

Posté

Merci,

Ca fonctionne et ça me retourne bien le nombre d'enregistrements trouvés.

Je ne voudrai pas abuser mais comment faire pour rechercher à partir d'une liste déroulante

voici mon fichier:

<html>
<head>
<title>Rechercher</title>
<link href="/enreg_form/css/style2.css" rel="stylesheet" type="text/css">
</head>
<body>
<form action='/enreg_form/scripts/recherche.php' target="rechbas" method='post' name="rechercher" enctype="multipart/form-data">
<table width=50% align=center>
<tr>
<td align=rigth><input class='text' type="text" name="recherche" size=50 maxlength=50></td>
<td align=left><input class="bouton" type="submit" name="Rechercher" value="Rechercher"></td>
</tr>
</table>

<table width=60% align=center>
<tr>
<td><input type="radio" name="choix" value="id">Numéro</td>
<td><input type="radio" name="choix" value="civilite" checked>Mr, Mme; Mlle</td>
<td><input type="radio" name="choix" value="nom" checked>Nom</td>
<td><input type="radio" name="choix" value="codepostal">C.P.</td>
<td><input type="radio" name="choix" value="ville">Ville</td>
<td><input type="radio" name="choix" value="type">Statut</td>
<td><input type="radio" name="choix" value="date">Date</td>

</tr>
</table>
</form>
</body>
</html>

Et je voudrai, par exemple à la place du bouton radio Date, pouvoir sélectionner une date dans une liste déroulante.

J'ai fait cela mais ça ne fonctionne pas:

<select name="choix" value="date">
<option selected value='".$row["date"]."'>".$row["date"]."";
if ($row["date"]=="")
{
<option value='07 et 21 juin 2008'>07 et 21 juin 200
<option value='30 août 2008'>30 août 2008
}
</select>

Et merci encore pour votre aide et votre patience.

Posté (modifié)

On ne peut pas mélanger PHP et HTML comme tu le fais.

$row est une variable PHP. Si tu veux l'utiliser dans une page HTML, tu dois entourer ton code de balise PHP du type <?php $row ?>.

De plus si tu veux afficher le contenu de la variable PHP dans du HTML pour l'utiliser tu dois la donner. En clair on aura un truc du genre :

<option selected value='<?php echo $row["date"] etc ... ?>

Modifié par Sanguo
Posté

bon j'ai essayé avec ça mais ça ne fonctionne pas:

<option selected value='<?php".$row["date"]."'>".$row["date"]."";
if ($row["date"]=="")
{
<option value='07 et 21 juin 2008'>07 et 21 juin 200
<option value='30 août 2008'>30 août 2008
}?>

Quel serai le code exact?

Merci d'avance.

Posté

Bonjour et merci pour cette réponse,

Et effectivement j'ai déjà fait comme le tuto du site du zero et maintenant j'ai dans mon formulaire de recherche 3 liste déroulantes qui s'affichent comme il faut.

Et encore merci pour toute l'aide.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...