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 :

Moteur de recherche pdo avec pagination


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut Moteur de recherche pdo avec pagination
    Bonsoir,

    j'utilise ma classe où tout a l'air de bien fonctionner, seul problème j'ai des données d'un formulaire de recherche qui sont effacées dès que je souhaite paginer.
    J'ai donc créé des sessions mais je ne sais pas comment l’intégrer à ma classe.

    j'ai quand même trouvé cela pour la classe que j'utilise :
    Gestion de l'url
    Par défaut, lors du clic sur le lien de la barre, la page se recharge avec le paramètre ?page=X, où X correspond au numéro de page.

    Or, vos pages ne prennent pas tous cette forme.
    Il est donc possible de configurer l'url de sortie à votre guise.

    Attention : il faut indiquer dans l'url le code {i} correspondant au numéro de page.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $Pagination3 = new Pagination();
    $Pagination3->setUrl("/category/foo/url/bar/page/{i}/sort-by/baz");
    $pagination3 = $Pagination3->renderBootstrapPagination();
     
    echo $pagination3;
    voici mon code actuel de la page :
    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
    include '../lib/pagination.class.php';
    $_SESSION['mots_f']=$_POST['search-category'];        
    $_SESSION['lieu_f']=$_POST['search-city'];   
     
     
    $PaginationFinal = new Pagination();
    $PaginationFinal->setCurrentPage($_GET['page']);
    $PaginationFinal->setInnerLinks(12);
    $PaginationFinal->setNbElementsInPage(12);
    $PaginationFinal->setNbMaxElements($nbElements);
    $Pagination3->setUrl("{i}&");
    $paginationFinal = $PaginationFinal->renderBootstrapPagination();
    $page = (!empty($_GET['page']) ? $_GET['page'] : 1);
    $debut = ($page - 1) * 12;	
     
     
    /*affichage apres recherche formulaire*/
     
    							if(isset($_POST['search-category']))
    							{
     
     
     
    							if(!empty($lstAll))
    							{
    								/*si tableau pas vide*/
    							foreach($managerServicePublic->getListBySearch($debut,12,$_SESSION['mots_f'],$_SESSION['lieu_f']) as $lstAll) 
    								{
     
    									$body.='
     
    									<div class="col-md-3">
     
    											<div class="list-mig-like-com com-mar-bot-30">
     
    												<div class="list-mig-lc-con">
     
    													<p style="color:white;font-size:1.0em;">'.$lstAll->getNomServicePublic().'</p>
    													<p style="color:white;font-size:1.0em;">'.$lstAll->getCodePostal().'</p>
    												</div>
    											</div>
    										</a>
    									</div>
    									';
     
     
    								}
     
    										$body.='
    										<br /><br />
    										<div class="center">
     
     
    										'.$paginationFinal.'
     
    										</div>
     
    									<br />';
     
    							}
    la classe :
    http://www.maxprudhomme.fr/projects/Pagination/

    merci pour votre aide.

  2. #2
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut Moteur de recherche avec pagination pdo
    j'ai effectué ces modificaiton mais le search-city me renvoi pas que le code postal tappé par le recherche du visiteurs je ne comprend pas ?

    peut etre a cause de la classe on dirait qu'il me renvoi les limites dans la variable session search ciy.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $path = $_SERVER['PHP_SELF']; // $path = /home/httpd/html/index.php
    $file = basename ($path);
    $PaginationFinal = new Pagination();
    $PaginationFinal->setCurrentPage($_GET['page']);
    $PaginationFinal->setInnerLinks(12);
    $PaginationFinal->setNbElementsInPage(12);
    $PaginationFinal->setNbMaxElements($nbElements);
    $PaginationFinal->setUrl($file."?{i}&search-category='".$_SESSION['mots_f']."'&search-city='".$_SESSION['lieu_f']."'");
    $paginationFinal = $PaginationFinal->renderBootstrapPagination();
    $page = (!empty($_GET['page']) ? $_GET['page'] : 1);
    $debut = ($page - 1) * 12;
    j'ai fais un teste avec mairie et cp 31.

    VOICI L'ADRESSE URL RENVOYE LORSQUE JE survol un bouton de pagination :

    https://xxxxservices-publics-list-an...-city=%2731%27

    merci pour votre aide.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    les variables de SESSION n'ont pas besoin d'être passées en parmamètre, puisqu'elles sont toujours disponibles.

    Ce que tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $search_category = ( isset($_POST['search_category'] )? $_POST['search_category'] : ( isset($_SESSION['search_category']) )? $_SESSION['search_category'] : '' );
     
    $search_city = ( isset($_POST['search_city'] )? $_POST['search_city'] : ( isset($_SESSION['search_city']) )? $_SESSION['search_city'] : '' );

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    search-category='".$_SESSION['mots_f']."'&search-city='".$_SESSION['lieu_f']
    : il faut que tu utilises le MEME NOM pour tes variables / paramètres.
    Sinon, tu risques la confusion...

    Attention aussi avec search-category / search_category... Ce n'est pas pareil.
    Soit plus RIGOUREUSE. Ça t'évitera des cheveux blancs...

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    merci pour ce code voici ce que j'ai fais par rapport a tes indications par contre mon formulaire les noms des inputs sont search-category et search-city.

    J'ai donc modifier ainsi qu'en pense tu ?

    Par contre à la 2 pages ils ne passent toujours pas les parametres du input donc la page est vide.

    les sessions sont vides me conserve l'ancienne recherche.


    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
    $_SESSION['search-category']=$_POST['search-category'];        
    $_SESSION['search-city']=$_POST['search-city'];  
     
    $search_category = ( isset($_POST['search-category'] )? $_POST['search-category'] : ( isset($_SESSION['search-category']) )? $_SESSION['search-category'] : '' );
     
    $search_city = ( isset($_POST['search-city'] )? $_POST['search-city'] : ( isset($_SESSION['search-city']) )? $_SESSION['search-city'] : '' );
     
     
    $body.='	
     
     
    		<form action="" method="post">
            </fieldset>
            <div class="inner-form">
              <div class="input-field first-wrap">
                <input id="search-category" name="search-category" type="text"   placeholder="mairie, gendarmerie..." onfocus="this.placeholder=\'\'" onblur="this.placeholder=\'mairie, gendarmerie...\'" />
              </div>
              <div class="input-field second-wrap">
                <input id="search-city" name="search-city" type="text"   placeholder="code postal..." onfocus="this.placeholder=\'\'" onblur="this.placeholder=\'code postal...\'" />
              </div>
              <div class="input-field third-wrap">
                <input type="submit" value="Rechercher" class="btn-search">
              </div>
            </div>
          </form>
    </div>		
    							<div style="padding:30px;">	
     
    								';
    if (is_numeric($search_city))
    {
    	$nbElements=$managerServicePublic->countBySearchByCp($search_category,$search_city);	
    }	
    else
    {
    	$nbElements=$managerServicePublic->countBySearchByVille($search_category,$search_city);	
    }	
     
     
    $PaginationFinal = new Pagination();
    $PaginationFinal->setCurrentPage($_GET['page']);
    $PaginationFinal->setInnerLinks(12);
    $PaginationFinal->setNbElementsInPage(12);
    $PaginationFinal->setNbMaxElements($nbElements);
    $paginationFinal = $PaginationFinal->renderBootstrapPagination();
    $page = (!empty($_GET['page']) ? $_GET['page'] : 1);
    $debut = ($page - 1) * 12;	
     
     
    /*affichage apres recherche formulaire*/
     
    							if(isset($_POST['search_category']))
    							{ 
     
     
    							$lstAll=$managerServicePublic->getListBySearch($debut,12,$search_category,$search_city);
     
     
     
     
    							if(!empty($lstAll))
    							{
    								/*si tableau pas vide*/
    							foreach($managerServicePublic->getListBySearch($debut,12,$search_category,$search_city) as $lstAll) 
    								{
     
    									$body.='
     
    									<div class="col-md-3">
     
    											<div class="list-mig-like-com com-mar-bot-30">
     
     
    													<p style="color:white;font-size:1.0em;">'.$lstAll->getNomServicePublic().'</p>
    													<p style="color:white;font-size:1.0em;">'.$lstAll->getCodePostal().'</p>
    												</div>
    											</div>
    										</a>
    									</div>
    									';
     
     
    								}
     
    										$body.='
    										<br /><br />
    										<div class="center">
     
     
    										'.$paginationFinal.'
     
    										</div>
     
    									<br />';
     
    							}
    Ce qui est aussi génant est que sur la 1 page c'est un post qui arrive et sur les autres pages ca sera un session ou un get donc mon affichage avec mes fonctions PDO ne sera plus fonctionnelles.

    Quelqu'un peut m'aider ?
    MERCI

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    J'ai tente de m'inspirer de faire partie par partie mais toujours aucune session rempli a la 2 eme page.

    je comprend bien que c'est la recuperation du post dans a partir de la 2 page qui pose probleme.

    quelqu'un peu m'aider ?

    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
    /*SI TRANSMISSION POST*/
    if(isset($_POST['search-category'] ))
    {	
    $search_category=$_POST['search-category'];
    }
    else
    {
    $_SESSION['search-category']=$_POST['search-category'];	
    $search_category = $_SESSION['search-category'];
    }	
     
    if(isset($_POST['search-city'] ))
    {	
    $search_city=$_POST['search-city'];
    }
    else
    {
    $_SESSION['search-city']=$_POST['search-city'];	
    $search_city = $_SESSION['search-city'];
    }	
     
     
    if(isset($search_category)and ($search_city))
    { 
     
    $lstAll=$managerServicePublic->countBySearchByVille($search_category,$search_city);
     
    if(!empty($lstAll))
    {
    if (is_numeric($search_city))
    {
    	$nbElements=$managerServicePublic->countBySearchByCp($search_category,$search_city);
     
    }	
    else
    {
    	$nbElements=$managerServicePublic->countBySearchByVille($search_category,$search_city);	
     
    	}	
     
    $PaginationFinal = new Pagination();
    $PaginationFinal->setCurrentPage($_GET['page']);
    $PaginationFinal->setInnerLinks(12);
    $PaginationFinal->setNbElementsInPage(12);
    $PaginationFinal->setNbMaxElements($nbElements);
    $paginationFinal = $PaginationFinal->renderBootstrapPagination();
    $page = (!empty($_GET['page']) ? $_GET['page'] : 1);
    $debut = ($page - 1) * 12;	
     
    /*si tableau pas vide*/
    foreach($managerServicePublic->getListBySearch($debut,12,$search_category,$search_city) as $lstAll) 
    {
     
    $body.='<div class="col-md-3">
    <a href="services-publics-annuaire-details.php?sub='.$lstAll->getNomServicePublic().'&id='.$lstAll->getIdServicePublic().'">
     
    <p style="color:white;font-size:1.0em;">'.$lstAll->getNomServicePublic().'</p>
    													<p style="color:white;font-size:1.0em;">'.$lstAll->getCodePostal().'</p>
    												</div>
    											</div>
    										</a>
    									</div>
    									';
     
     
    								}
     
    										$body.='
    										<br /><br />
    										<div class="center">';
     
     
    									// L'affichage de la barre de navigation
    										$body.=''.$paginationFinal.'';
     
    									 $body.='	</div>
     
    									<br />';
     
    							}else
    								{
     
    									$body.='<p>Aucun résultat trouvé.</p>';
    								}
    }
    Merci pour votre aide.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ce que tu écris n'est pas logique...
    ET améliore l'INDENTATION !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // -------------
    if(isset($_POST['search-category'] ))
    {	
       $_SESSION['search-category'] = $_POST['search-category'];	
    }
    $search_category = $_SESSION['search-category'];
    // ------------- 
    if(isset($_POST['search-city'] ))
    {	
       $_SESSION['search-city'] = $_POST['search-city'];	
    }
    $search_city = $_SESSION['search-city'];
    // -------------

  7. #7
    Invité
    Invité(e)
    Par défaut
    Si tu veux un peu plus de logique, utilise UNE SEULE SESSION, sous forme d'array :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION['search']['search-category']
    $_SESSION['search']['search-city']

Discussions similaires

  1. [MySQL] moteur de recherche boucle avec like et and
    Par Overstone dans le forum PHP & Base de données
    Réponses: 24
    Dernier message: 09/02/2009, 17h36
  2. integration moteur de recherche perl avec easyphp
    Par sculpteur dans le forum Web
    Réponses: 0
    Dernier message: 27/09/2007, 15h28
  3. moteur edition/rechercher pb avec ff (document.layers ?)
    Par jocoat dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/09/2007, 09h11
  4. Moteur de recherche interne avec zope/python
    Par tunix dans le forum Zope
    Réponses: 3
    Dernier message: 01/05/2006, 15h45

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