IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Recherche, tableau et pagination [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Par défaut Recherche, tableau et pagination
    Bonjour

    D'habitude pour faire un système de pagination, je me sert du tuto sur ce site pour la pagination d'un livre d'or qui fonctionne tres bien..

    Mais la j'effectue une recherche, qui me renvois des resultats sous forme de tableau et je n'arrive pas a afficher une pagination uniquement sur les résultats.

    le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    <?php
    function sql_connexion() {
    	global $mysqli;
    	$mysqli = new mysqli("localhost", "", "", "");
     
    	/* Vérification de la connexion */
    	if(mysqli_connect_errno()) {
    		printf("Échec de la connexion : %s\n", mysqli_connect_error());
    		exit();
    	}
    	// $mysqli->query("SET NAMES 'utf8' ");
    }
    function sql_requete($query) {
    	global $mysqli;
    	$result = $mysqli->query($query);
    	if(!$result) {
    		// Erreur dans la requete
    		echo '<p>ERROR '. $mysqli->errno .'</strong> &gt;&gt; '. $mysqli->error .'</p>';
    		return false;
    	} else {
    		// Tout va bien
    		return $result;
    	}
    }
    if(isset($_GET['q']) && $_GET['q'] != '') {
    	$recherche = stripslashes($_GET['q']);
    } else {
    	$recherche = '';
    }
    ?>
     
    <?php
     
    if($recherche != '') {
    	sql_connexion();
     
    	$query  = "SELECT nom, prix,  image120, idneta, rubrique, keywords, nommarchand, id_prod,   descriptif, url ";
    	$query .= "FROM catalogue " ;
    	$query .= "WHERE nom REGEXP '". addslashes($recherche) ."' ";
    	//$query .=    "OR  REGEXP '". addslashes($recherche) ."' ";
     
    	if ($result = sql_requete($query)) {
    		if($result->num_rows > 0) {
     
     
    			 //echo (int)($result->num_rows > 0);
     
        	echo '<table class="sortable" >';
          echo '<th>image</th>';
        	echo '<th>nom</th>';
    			echo '<th>description</th>';
    			echo '<th>prix</th>';
    			echo '<th>marchand</th>';
    			echo '<th>lien</th>';
     
    			/* Récupère un tableau d'objets */
    			while ($obj = $result->fetch_object()) {
     
    				echo '<tr onmouseover="this.className=\'hover\';" onmouseout="this.className=\'\';">';
    				echo	'<td class="img"><img src="' . htmlspecialchars($obj->image120) . '" alt="" /></td>';
    				echo	'<td class="nom">' . htmlspecialchars($obj->nom) . '</td>';
    				echo	'<td class="des">'. htmlspecialchars($obj->descriptif) .  ' <br><br><div class="note"><a href="avis.php?id_prod='.$obj->id_prod.'">Avis sur le produit</a></div></td>';
    				echo	'<td class="pri">&nbsp;&nbsp;&nbsp;' . htmlspecialchars($obj->prix) . '  €</td>';
    				echo	'<td class="img"> <img src="'.($obj->nommarchand) .'"> </td>';
    					echo	'<td class="lien"><a href="details.php?id_prod=' . htmlspecialchars($obj->id_prod) . ' "target="blank">Voir le produit</a></td>';
     
            echo '</tr>';
     
    			}	
    			echo '</table>';
     
    			/* free result set */
    			$result->close();
    		} else {
    		echo "<td class='essai'>Votre recherche n'a retourn&eacute; aucun r&eacute;sultat.</td>"; 
    		}
    	}
    	/* Fermeture de la connexion */
    	$mysqli->close();
    }
    ?>
    si quelqu'un pouvait me dire comment faire ca serait sympa ..

    merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    il est ou ton systeme de pagination ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Par défaut
    je l'ai enlevé puisqu'il ne marche pas .. mais le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    $messagesParPage=5; //Nous allons afficher 5 messages par page.
     
    //Une connexion SQL doit être ouverte avant cette ligne...
    $retour_total=mysql_query('SELECT COUNT(*) AS total FROM livredor'); //Nous récupérons le contenu de la requête dans $retour_total
    $donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
     
    //Nous allons maintenant compter le nombre de pages.
    $nombreDePages=ceil($total/$messagesParPage);
     
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1    
    }
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
     
    // La requête sql pour récupérer les messages de la page actuelle.
    $retour_messages=mysql_query('SELECT * FROM livredor ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
     
    while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
    {
         //Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design...
         //De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message.
         echo '<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
                    <tr>
                         <td><strong>Ecrit par : '.stripslashes($donnees_messages['pseudo']).'</strong></td>
                    </tr>
                    <tr>
                         <td>'.nl2br(stripslashes($donnees_messages['message'])).'</td>
                    </tr>
                </table><br /><br />';
        //J'ai rajouté des sauts à la ligne pour espacer les messages.   
    }
     
    echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] '; 
         }	
         else //Sinon...
         {
              echo ' <a href="livredor.php?page='.$i.'">'.$i.'</a> ';
         }
    }
    echo '</p>';
    ?>
    enfin ne marche pas sur le code de mon fichier, sinon il fonctionne très bien !

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je ne vois pas le lien entre les deux codes que tu nous montres, ce ne sont pas les memes requetes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Par défaut
    c'est justement la que je bloque, je ne vois pas comment faire pour mettre le fichier de pagination...

    et je ne trouve aucune explication pour paginer un tableau..

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ce n'est pas le tableau qui doit être paginé, c'est la requête en utilisant LIMIT.
    L'affichage se contente de montrer ce que la requête a filtré.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction recherche tableau 3 entrées
    Par emilie31 dans le forum Excel
    Réponses: 3
    Dernier message: 31/07/2010, 06h46
  2. Recherche aide POur pagination et filtre
    Par wyllos dans le forum Langage
    Réponses: 1
    Dernier message: 27/05/2010, 13h40
  3. [XL-2003] Recherche tableau 2 dimensions
    Par kirin54 dans le forum Excel
    Réponses: 3
    Dernier message: 08/02/2010, 10h35
  4. [Recherche] Tableau avec lignes qui se déploient
    Par chris78 dans le forum Débuter
    Réponses: 3
    Dernier message: 09/04/2009, 19h31
  5. Recherche tableau excel
    Par zepeto dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/06/2008, 09h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo