recherche + affichage par page

Répondre
BIO
le 04/02/2008 à 18:53
BIO
J’ai un soucie avec la recherche combiné avec un affichage page par page
Je fais l’appelle d’une fonction qui me fais affiché la barre de navigation, mon problème c’est quand je clique sur le bouton pour qu’il me renvoie sur la 2éme page par exemple il ne m’affiche rien aussi bien qu’il me faut pas compter tout le nombre d’enregistrement avec « count » aidez moi… j’ai beaucoup essayé mais pas de résultat
Malgré que ce même code marche très bien avec d’autre page qui contient un select simple.
<?php $bdd=@mysql_connect($host,$user,$pass);
@mysql_select_db($base,$bdd);
switch($task)
{

case 2: // recherche dans la base
default:
?>
<table >
<form name='recherche' action='recherche2.php3?task=2' method='post'>
<tr>
<td >
<h3>Rechercher</h3>
</td>
</tr>

<tr>
<td align='left'>Mot&nbsp;du&nbsp;Titre&nbsp;:&nbsp;&nbsp;</td>
<td><input type='text' name='nom'></td>
</tr>

<tr>
<td align='left'>Auteur&nbsp;:&nbsp;&nbsp;</td>
<td><input type='text' name='prenom'></td>
</tr>

<tr>
<td>&nbsp;</td>
<td><input type='submit' name='op2' value='Rechercher'></td>
</tr>
</form>
</table>
<?
if ($op2)
{
$sql = 'SELECT count(*) FROM livres';
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb_total = mysql_fetch_array($resultat);
if (($nb_total = $nb_total[0]) == 0) {
echo 'Aucune r&eacute;ponse trouv&eacute;e';
}
else {
if (!isset($_GET['debut'])) $_GET['debut'] = 0;

$nb_affichage_par_page = 2;

$query="SELECT * FROM $table WHERE id IS NOT NULL";
if ($nom)
{
$query.=" AND titre LIKE '%$nom%'";
};
if ($prenom)
{
$query.=" AND auteur LIKE '%$prenom%'";
};

$query.=" ORDER BY titre ";
$res=mysql_query($query);

while($l=mysql_fetch_object($res))
{

echo"<table width='0%' cellpadding='1' cellspacing='0' border='0' align='center'>



<tr>
<td><b>Auteur:</b></td>
<td>$l->auteur</td>

<td><b>Titre:</b></td>
<td>$l->titre</td>
</tr> ";
echo"<hr size=1 align=center>";};
echo"</table>";
echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>';
} } };

mysql_close;
?>php ?>
LupusMic
le 04/02/2008 à 21:14
LupusMic
On va dire que tu débute, mais bon, ton code est un concentré de ce qu'il ne faut pas faire ^^;

Lignes 1,2 : l'opérateur de mutisme ne doit être utilisé que lorsque tu vérifie le code de retour de la fonction bavarde. ici, tu fais une connexion sans vérifier que tu as bien fait la connexion.

Ligne 8 : certes PHP est un langage de template, mais faut pas exagérer. Évites de telles alternances entre code de traitement (PHP) et code d'affichage (HTML). C'est illisible et impossible à maintenir.

Ligne 18,23,28: pourquoi tant d'espaces insécables ?

Ligne 47: il manque des espaces entre FROM, $table et WHERE.

Ligne 51,55: pourquoi ces points-virgules après les parenthèses fermantes du if ?

Ligne 60: on utilise jamais l tout seul pour les noms de variables, ça se confond trop facilement avec 1.

Ligne 74: HTML non-valide.

Ligne 76: J'espère que tu teste le contenu de $_GET['debut'] dans ta fonction barre_navigation.

Ligne 79: ça marche ça ?

Ligne 80: un petit problème de caractères qui trainent...

Par contre je n'ai pas compris la phrase où tu explique ton problème. Tu peux reformuler ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
BIO
le 05/02/2008 à 00:12
BIO
mon problème est que la barre de navigation s'affiche comme << 1 2 3 >> par exemple mais quand je bascule vers 2 la page n'affiche que la zone de recherche et le reste vide (pas de suite de la recherche).

et a propos du code il marche bien mais j'ai enlevé quelque ligne pour le simplifié. et mercie
Keika
le 05/02/2008 à 05:29
Keika
c'est ce que disais Lupusmic, tu verifies la valeur de $_GET['debut'] ???
Le PHP --> C'est dur !
LupusMic
le 05/02/2008 à 13:59
LupusMic
(Keika) La solution est certainement dans mes remarques, mais libre à lui de les ignorer. Pour ma part, je n'interviendrai plus, vu qu'il ne considère pas mes réponses.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours