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 :

tenir une requete? [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
    Octobre 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 208
    Par défaut tenir une requete?
    Bonjour,
    j'ai un cas que personne n'arrive à résoudre...Voilà:
    j'ai un formulaire d'où part une requête.j'aimerais que cette requête soit suivi sur le code suivant de page en page. hors elle n'est pas "tenue".les pages suivantes n'affichent plus la demande mais le premier enregistrement de la base.comment faire pour qu'elle soit renouvellée sur toute les pages,sachant que lorsque je renseigne le select de maniere fixe et determiné,ça fonctionne,les bons resultats s'affichent de page en page...Je suis en local avec wamp php5...merci beaucoup!

    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
     
    <html>
    <head>
    <title>Script de pagination automatique en php</title>
    <!-- Styles CSS -->
    <style type="text/css">
    html {font-size: 1.4em;}
    .pagination a {color: black;}
    .pagination a:hover {color: red; text-decoration: none;}
    .pagination a:visited {color: red; text-decoration: none;}
    </style>
    </head>
    <body>
    <?php
    //==============================================================================
    // Configuration à modifier avec vos propres paramètres
    //==============================================================================
     
    // Connexion à la base de données
    $host = "localhost";
    $user = "root";
    $pass = "";
    $data = "youresto"; // Nommer ici la base de données
    $connect = mysql_connect($host, $user, $pass)
      or die("Connexion au serveur impossible !");
    $db = mysql_select_db($data, $connect)
      or die("Sélection de la base impossible !");
     
    $recherche = $_POST['recherche'];
    // Paramétrage de la requête (ne pas modifier le nom des variable)
    $table = "jos_restaurante"; // Table à sélectionner dans la base
    $champ = "city"; // Champ de la table à afficher pour tester ce script
    $champ2 = "title";
    $sql = "SELECT city,title FROM $table WHERE $champ LIKE '".'$recherche'."%'"; // Requête initiale (à compléter si nécessaire)
     
    $parpage = 20; // Nombre d'enregistrements par page à afficher
     
    //==============================================================================
    // Déclaration et initialisation des variables (ici ne rien modifier)
    //==============================================================================
     
    // On définit le suffixe du lien url qui affichera les pages
    // $_SERVEUR['PHP_SELF'] donne l'arborescence de la page courante
    $url = $_SERVER['PHP_SELF']."?limit=";
     
    $total = mysql_query($sql); // Résultat total de la requête $sql
    $nblignes = mysql_num_rows($total); // Nbre total d'enregistrements
     
    // On calcule le nombre de pages à afficher en arrondissant
    // le résultat au nombre supérieur grâce à la fonction ceil()
    $nbpages = ceil($nblignes/$parpage);
     
    //==============================================================================
    // Exemple d'affichage HTML
    //==============================================================================
     
    // On teste en affichant la valeur des variables (facultatif)
    echo "<p>La table <b>".$table."</b> compte ".$nblignes." <b>".$champ."</b>.";
    echo "<br />\n"."On affiche <b>".$parpage." enregistrements</b> par page, ";
    echo "soit un total de <b>".$nbpages." pages</b>.</p>\n";
     
    // Si une valeur 'limit' est passée par url, on vérifie la validité de
    // cette valeur par mesure de sécurité avec la fonction validlimit()
    // cette fonction retourne automatiquement le résultat de la requête
    $result = validlimit($nblignes,$parpage,$sql);
     
    // On affiche le résultat de la requête
    // On crée donc ici son propre tableau pour lequel on souhaite une pagination
    while ($ligne = mysql_fetch_array($result)) {
      echo $ligne[$champ]."\n",$ligne[$champ2]."<br />\n";
    }
     
    // Menu de pagination que l'on place après la requête
    echo "<div class='pagination'>";
    echo pagination($url,$parpage,$nblignes,$nbpages);
    echo "</div>";
     
    mysql_free_result($result); // Libère le résultat de la mémoire
     
    //==============================================================================
    // Fonctions à copier de préférence dans un fichier 'include/fonctions.inc.php'
    //==============================================================================
     
    function pagination($url,$parpage,$nblignes,$nbpages)
    {
      // On crée le code html pour la pagination
      $html = precedent($url,$parpage,$nblignes); // On crée le lien precedent
      // On vérifie que l'on a plus d'une page à afficher
      if ($nbpages > 1) {
        // On boucle sur les numéros de pages à afficher
        for ($i = 0 ; $i < $nbpages ; ++$i) {
          $limit = $i * $parpage; // On calcule le début de la valeur 'limit'
          $limit = $limit.",".$parpage; // On fait une concaténation avec $parpage
          // On affiche les liens des numéros de pages
          $html .= "<a href=".$url.$limit.">".($i + 1)."</a> | " ;
        }
      }
      // Si l'on a qu'une page on affiche rien
      else {
        $html .= "";
      }
      $html .= suivant($url,$parpage,$nblignes); // On crée le lien suivant
      // On retourne le code html
      return $html;
    }
    function validlimit($nblignes,$parpage,$sql)
    {
      // On vérifie l'existence de la variable $_GET['limit']
      // $limit correspond à la clause LIMIT que l'on ajoute à la requête $sql
      if (isset($_GET['limit'])) { 
        $pointer = split('[,]', $_GET['limit']); // On scinde $_GET['limit'] en 2
        $debut = $pointer[0];
        $fin = $pointer[1];
        // On vérifie la conformité de la variable $_GET['limit']
        if (($debut >= 0) && ($debut < $nblignes) && ($fin == $parpage)) {
          // Si $_GET['limit'] est valide on lance la requête pour afficher la page
          $limit = $_GET['limit']; // On récupère la valeur 'limit' passée par url
          $sql .= " LIMIT ".$limit.";"; // On ajoute $limit à la requête $sql
          $result = mysql_query($sql); // Nouveau résultat de la requête
        }
        // Sinon on affiche la première page
        else {
          $sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
          $result = mysql_query($sql); // Nouveau résultat de la requête
        }
      }
      // Si la valeur 'limit' n'est pas connue, on affiche la première page
      else {
        $sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
        $result = mysql_query($sql); // Nouveau résultat de la requête
      }
      // On retourne le résultat de la requête
      return $result;
    }
    function precedent($url,$parpage,$nblignes)
    {
      // On vérifie qu'il y a au moins 2 pages à afficher
      if ($nblignes > $parpage) {
        // On vérifie l'existence de la variable $_GET['limit']
        if (isset($_GET['limit'])) {
          // On scinde la variable 'limit' en utilisant la virgule comme séparateur
          $pointer = split('[,]', $_GET['limit']);
          // On récupère le nombre avant la virgule et on soustrait la valeur $parpage
          $pointer = $pointer[0]-$parpage;
          // Si on atteint la première page, pas besoin de lien 'Précédent'
          if ($pointer < 0) {
            $precedent = "";
          }
          // Sinon on affiche le lien avec l'url de la page précédente
          else {
            $limit = "$pointer,$parpage";
            $precedent = "<a href=".$url.$limit."><</a> | ";
          }
        }
        else {
          $precedent = ""; // On est à la première page, pas besoin de lien 'Précédent'
        }
      }
      else {
      $precedent = ""; // On a qu'une page, pas besoin de lien 'Précédent'
      }
      return $precedent;
    }
    function suivant($url,$parpage,$nblignes)
    {
      // On vérifie qu'il y a au moins 2 pages à afficher
      if ($nblignes > $parpage) {
        // On vérifie l'existence de la variable $_GET['limit']
        if (isset($_GET['limit'])) {
          // On scinde la variable 'limit' en utilisant la virgule comme séparateur
          $pointer = split('[,]', $_GET['limit']);
          // On récupère le nombre avant la virgule auquel on ajoute la valeur $parpage
          $pointer = $pointer[0] + $parpage;
          // Si on atteint la dernière page, pas besoin de lien 'Suivant'
          if ($pointer >= $nblignes) {
            $suivant = "";
          }
          // Sinon on affiche le lien avec l'url de la page suivante
          else {
            $limit = "$pointer,$parpage";
            $suivant = "<a class='pagination' href=".$url.$limit.">></a>";
          }
        }
        // Si pas de valeur 'limit' on affiche le lien de la deuxième page
        if (@$_GET['limit']== false) {
          $suivant = "<a href=".$url.$parpage.",".$parpage.">></a>";
        }
      }
      else {
      $suivant = ""; // On a qu'une page, pas besoin de lien 'Suivant'
      }
      return $suivant;
    }
    // Fin du script
    ?>
    </body>
    </html>

  2. #2
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    Salut,

    Va falloir pensé à utiliser des variables de session. La doc ICI

    Et pour ton problème :
    Ajoute à la première ligne de ton fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php 
    // On indique à PHP, l'utilisation des sessions
    session_start();
    ?>
    Et remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $recherche = $_POST['recherche'];
    Par ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // On teste l'existence des données envoyées en POST
    if(isset($_POST['recherche']))
    	$_SESSION['recherche'] = $_POST['recherche'];
    $_recherche = $_SESSION['recherche'];

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 208
    Par défaut
    a priori ça a dejà été fait sans resultat..;je vais réessayer

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 208
    Par défaut
    nope!
    J'ai un parse error sur le debut du script et si je fais une session balisée php j'ai un message "session dejà ouverte,session ignorée" et pas de résultats trouvé
    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
     
    <?php
    session_start()
    //==============================================================================
    // Configuration à modifier avec vos propres paramètres
    //==============================================================================
    // Connexion à la base de données
    $host = "localhost";
    $user = "root";
    $pass = "";
    $data = "youresto"; // Nommer ici la base de données
    $connect = mysql_connect($host, $user, $pass)
      or die("Connexion au serveur impossible !");
    $db = mysql_select_db($data, $connect)
      or die("Sélection de la base impossible !");
     
    if(isset($_POST['recherche']))
    	$_SESSION['recherche'] = $_POST['recherche'];
    $recherche = $_SESSION['recherche'];
     
    // Paramétrage de la requête (ne pas modifier le nom des variable)
    $table = "jos_restaurante"; // Table à sélectionner dans la base
    $champ = "city"; // Champ de la table à afficher pour tester ce script
    $champ2 = "title";
    $sql = "SELECT city,title FROM $table WHERE $champ LIKE '".'$recherche'."%'"; // Requête initiale (à compléter si nécessaire)
    et pourquoi $_recherche au lieu de $recherche??

  5. #5
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    Citation Envoyé par chanteur06 Voir le message
    et pourquoi $_recherche au lieu de $recherche??
    Erreur de syntaxe ;-) n'en tient pas compte! IL s'agit bien de $recherche.

    Si les sessions sont déjà ouvertes.... retire la première ligne : session_start();

    Attention que le parse error provient peut-être de l'absence du point virgule à la fin de la ligne session_start();

    ++

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 208
    Par défaut
    il me semblait bien pour la syntaxe...mais tou evolue tellement vite lol

    toujours rien...point virgule apres session,rien
    session retirée,rien
    pas de résultats....

    La table jos_restaurante compte 0 city.
    On affiche 20 enregistrements par page, soit un total de 0 pages.


    une soluce à l'horizon? quelqu'un trouvera t il?

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

Discussions similaires

  1. Ne pas tenir compte des accent dans une requete
    Par prat038 dans le forum SQL
    Réponses: 8
    Dernier message: 07/09/2009, 13h34
  2. Ne pas tenir compte des accents dans une requete
    Par zamanika dans le forum Installation
    Réponses: 8
    Dernier message: 08/11/2004, 19h49
  3. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53
  4. [VB6] [Excel] Résultat d'une requete ds une feuille
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/01/2003, 17h52
  5. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22

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