Nombre de résultats par page

Résolu/Fermé
Eternity - 7 mars 2010 à 17:28
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 7 mars 2010 à 20:44
Bonjour,
Alors voila: J'ai fait un beau script de recherche <3 mais le problème c'est qu'il risque d'avoir trop de résultat par page apres une recherche. J'ai cherché un peu partout mais je n'ai pas très bien compris >< ou je n'arrivais pas à l'adapter pour mon code.
Voici mon script: ($global nuked => pour se connecter).
Le site que je fait est un site de vente d'objet virtuel en ligne (objets du jeux acheté avec de l'argent virtuel du dit jeu.)
Et si aussi vous arriviez a comprendre pourquoi quand je clique sur entré quand je suis dans mon formulaire, la page s'actualise, sa m'aiderai beaucoup :p !
Voila le code:


<html>
<body>
<center>
<table border=1>
<tr><td colspan=2 align=center> .: Recherche :.</td></tr>
<tr><td>
<form method="post" action="index.php?file=Page&name=Liste_ventes">
Objet recherché :
</td>
<td>
<input type="text" name="recherche" />
</td>
<tr>
<td>
Mode de recherche :
</td>
<td>
<select name="mode">
<option value="">Type de recherche</option>
<option value="un_mot">Au moins un mot</option>
<option value="expression_exacte">Expression exacte</option>
<option value="tous_les_mots">Tous les mots</option>
</select>
</td>
<tr >
<td height="20" colspan=2 align=center >
<input type="submit" value="Rechercher" name="rechercher" />
</td>
</form>
</tr>
</table>
</center>

<?php
global $nuked;
if (isset($_POST['rechercher'])) 
{
$recherche = mysql_real_escape_string(htmlspecialchars($_POST['recherche'])); 
$mode = mysql_real_escape_string(htmlspecialchars($_POST['mode']));

if ($mode == "tous_les_mots")
{
$and_ou_or = 'AND'; 
}
else
{
$and_ou_or = 'OR'; 
}
if ($mode == "expression_exacte") 
{
$selection_recherche = mysql_query("SELECT * FROM nuked_vente WHERE  classe LIKE '%$recherche%' ORDER BY nom");
}
else 
{
$mots = explode(" ", $recherche); 
$nombre_mots = count ($mots); 
$valeur_requete = '';
for($nombre_mots_boucle = 0; $nombre_mots_boucle < $nombre_mots; $nombre_mots_boucle++) 
{
$valeur_requete .= '' . $and_ou_or . ' classe LIKE \'%' . $mots[$nombre_mots_boucle] . '%\''; 
}
$valeur_requete = ltrim($valeur_requete,$and_ou_or); 
$selection_recherche = mysql_query("SELECT *
FROM nuked_vente
WHERE $valeur_requete ORDER BY nom"); 
}
$nombre_resultats = mysql_num_rows($selection_recherche); 
if ($nombre_resultats == 0) 
{
echo '<br /><center>Aucun résultats.<br />
<br /><a href="index.php?file=Page&name=Liste_ventes">Recommencer</a></center>';
}
else 
{

echo '<br><u>Nombre d\'objet(s) correspondant(s) à votre recherche : ' . $nombre_resultats . '</u><br /><br />'; 
echo '
<table width="75%" style="text-align:center; float: left;" >
<tr>
<td  background="themes/df_counterview/images/menu_hoover.png">Objet</td>
<td  background="themes/df_counterview/images/menu_hoover.png">Prix</td>
<td  background="themes/df_counterview/images/menu_hoover.png">Type de vente</td>
<td  background="themes/df_counterview/images/menu_hoover.png">Durée</td>
</tr>';
while($resultats = mysql_fetch_array($selection_recherche) ) 
{
?>
<tr>
<td background="themes/df_counterview/images/menu.png">
<a href="#" style="TEXT-DECORATION:none;" title="<?php echo $resultats['commentaire']; ?>">
<?php echo stripslashes($resultats['nom']); ?></a><br />
</td>
<td background="themes/df_counterview/images/menu.png"><?php echo $resultats['prix']; ?> PO</td>
<td background="themes/df_counterview/images/menu.png"><?php echo $resultats['typevente']; ?></td>
<td background="themes/df_counterview/images/menu.png"><?php echo $resultats['duree']; ?></td>
</tr>

<?php
}
echo '
</table>
';
}
}
?>

13 réponses

arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 473
7 mars 2010 à 18:02
Pour un affichage page par page: http://www.lephpfacile.com/howto/...

Pour ce qui est de la touche entré, la page n'est pas "réactualisé". Enfin en un sens si.
Quand tu es dans un champ input, la touche entré envoi le formulaire, comme si tu cliquais sur le bouton submit. Dans un textarea, elle permet de passer à la ligne.
0
Ou est le rapport? J'écris dans mon imput et quand j'ai fini d'écrire et que j'appuie sur la touche entrée, sa devrait envoyer le formulaire? non? tandis que la, la page se réactualise (enfin d'après ce que je vois...)
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 473
7 mars 2010 à 18:41
Si ta page de traitement est la même sur celle du formulaire, il peux y avoir une erreur dans le script de traitement qui au final ne l'execute pas.

Exemple:

<?php
if(isset($_POST['envoi']))
{
echo 'Formulaire envoyé';
}
else {
echo'<form method="post" action="form.php">
<p>Test: <input name="message" /></p>
<p><input type="submit" name="envoi" value="Envoyer" /></p>
</form>';
}

si tu envoi ce formulaire, le formulaire disparait et le texte "Formulaire envoyé" s'affiche.
C'est pourtant le même fichier.

Maintenant, glissons une erreur.
<?php
if(isset($_POST['envoi']) && $_POST['envoi']=='Envoyé')
{
echo 'Formulaire envoyé';
}
else {
echo'<form method="post" action="form.php">
<p>Test: <input name="message" /></p>
<p><input type="submit" name="envoi" value="Envoyer" /></p>
</form>';
}

Dans ce deuxième cas, tu retournes au formulaire...
Je te laisse chercher l'erreur.

Vérifie donc sérieusement ton code.
0
Je vois bien l'erreur dans ton exemple, mais j'ai du mal avec le mien >< sinon merci pour ton premier lien.
0
Mon formulaire est relativement clair et propre, je trouve pas l'erreur ...

<center>
<table border=1>
<tr><td colspan=2 align=center> .: Recherche :.</td></tr>
<tr><td>
<form method="post" action="index.php?file=Page&name=Liste_ventes">
Objet recherché :
</td>
<td>
<input type="text" name="recherche" />
</td>
<tr>
<td>
Mode de recherche :
</td>
<td>
<select name="mode">
<option value="">Type de recherche</option>
<option value="un_mot">Au moins un mot</option>
<option value="expression_exacte">Expression exacte</option>
<option value="tous_les_mots">Tous les mots</option>
</select>
</td>
<tr >
<td height="20" colspan=2 align=center >
<input type="submit" value="Rechercher" name="rechercher" />
</td>
</form>
</tr>
</table>
</center>
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 473
7 mars 2010 à 19:30
index.php?file=Page&name=Liste_ventes corresponds à quoi ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
L'Url de ma page
0
L'erreur serait l'oublie du &? (désolé pour le double post, je n'ai pas tilité sur le coup)
0
Eternity, c'est
&amp;
Oublie pas les balise code...
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 473
7 mars 2010 à 19:41
Ce que je voulais dire c'est où est le code traitement du formulaire ?
0
Juste en dessous. Regarde mon premier post.
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 473
7 mars 2010 à 19:50
Vérifie tes conditions une par une.
Voici comment je procède personnellement.
Exemple:
if(isset($var))
{
echo'yes';
[...]
}


La ligne en gras est celle que je rajoute volontaire lors de mes tests pour tester qu'une condition passe bien. Ensuite je l'enlève et je passe à la condition suivante.
Tu pourra ainsi cibler l'erreur plus facilement.
0
Ok, je vais les tester alors
0
J'ai trouvé >< c'est le mode de recherche...
Il prend pas la premiere valeur qui est par defaut mot clef ><
Il faut obligatoirement que l'utilisteur en selectionne une ><
Il y a pas un moyen pour faire passer une valeur par défaut?
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 473
7 mars 2010 à 20:28
Avec quelques de ce genre:
if(isset($var)) //Tu vérifie que la variable est déclaré
	{
	if($var=='valeur1') //Tu test la valeur de la variable
		{
		[...]
		}
	elseif($var=='valeur2') //Tu test la valeur de la variable
		{
		[...]
		}
	elseif($var=='valeur3') //Tu test la valeur de la variable
		{
		[...]
		}
	else {
		$var='valeur_par_defaut'; //Tu appliques une valeur par défaut.
		}
	}


A réadapter suivant ton cas bien entendu.
0
Merci :) je crois que tout est bon
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 473
7 mars 2010 à 20:44
Content d'avoir pu t'aider.
0