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 :

Autoriser la recherche dans une bdd avec des mots contenant une apostrophe


Sujet :

PHP & Base de données

  1. #21
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonsoir CinePhil

    voila le résultat avec votre programmation direct dans sql

    Analyse statique :

    6 erreurs trouvées lors de l'analyse.

    Caractère inattendu. (near ":" at position 99)
    Caractère inattendu. (near ":" at position 131)
    Caractère inattendu. (near ":" at position 160)
    Caractère inattendu. (near ":" at position 191)
    Caractère inattendu. (near ":" at position 219)
    Caractère inattendu. (near ":" at position 247)
    Requête SQL : Documentation

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT categorie, selection, infos,motscles, ville,Rech1 FROM coordonnees WHERE categorie LIKE :recherche OR selection LIKE :recherche OR infos LIKE :recherche OR motscles LIKE :recherche OR ville LIKE :recherche OR Rech1 LIKE :recherche LIMIT 0, 25

    MySQL a répondu: Documentation

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':recherche
    OR selection LIKE :recherche
    OR infos LIKE :recherche
    OR mo' at line 3
    A titre d'information: MYSQL version 5.6.15 sur l'hébergeur

    claudine

  2. #22
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Claudine, dans la requête écrite dans le programme PHP, il faut remplacer les paramètres :recherche par le terme recherché, en le mettant entre apostrophes, pour tester la requête dans MySQL.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT categorie, selection, infos,motscles, ville,Rech1 
    FROM coordonnees 
    WHERE categorie LIKE '%terme_recheché%' OR selection LIKE '%terme_recheché%' OR infos LIKE '%terme_recheché%' OR motscles LIKE '%terme_recheché%' OR ville LIKE '%terme_recheché%' OR Rech1 LIKE '%terme_recheché%'

    C'est ce que fait l'instruction PHP $prep->bindValue
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #23
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour CinePhil,

    Si je remplace %terme_recherché%' par 'resto', il m'affiche correctement dans sql les 2 lignes correspondantes;
    Ce qui veut dire que je n'avais rien compris au terme "recherche" et que vous ne mesurez pas l'étendue du savoir qui nous séparent! Pitié.
    Mais maintenant comment adapter correctement dans le programme copié/coller pour enfin obtenir les lignes correctes dans mon tableau


    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
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
     
    <<!DOCTYPE html >
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     
     
    <title>search sans ville.php  sous PDO</title>
    <head>
     
     
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    <style type="text/css">
    		#popup
               {
    			padding: 10px;
    			background-color: #CCC;
    			width: 700px;
    		}
     
    		#popup.floatable 
               {
    			position: fixed;			
    		}
    	</style>
     
     
    <script type="text/javascript">
    function showPopup(evt, text) 
    { 
        var top = evt.clientY + document.body.scrollTop; 
        var left = evt.clientX + document.body.scrollLeft; 
        var p = document.getElementById("popup"); 
     
        p.innerHTML = text; 
        p.style.top = top; 
        p.style.left = left; 
        p.style.display = "inline"; 
    } 
     function hidePopup() 
    { 
        document.getElementById("popup").style.display = "none"; 
    } 
    </script> 
     
     
    <style> 
    .popup
    { 
        position:absolute; 
        z-index : 2; 
        display : none; 
        border-style:solid; 
        border-width:1px; 
        border-color:#909090; 
        background:#f0f0f0;
        padding:25px;
        border-radius:25px;
        margin-top:15px;
        width:800px;
    }
    table
     .hasInfo
    {
        cursor: pointer;
    }
     
     
    <\table> 
    </style> 
     
    <div id="popup" class="popup" onClick="hidePopup()"></div> 
     
     
    <script language="javascript"> 
    function show_info(text)
     {
    	var ele = document.getElementById('info');
    	ele.innerHTML = text;
     } 
    </script> 
     
     
     
     
    <?php
     
     
    echo'<strong>Faites votre choix dans la liste :<br>
    Un clic sur nosINFOS.clic ou NotreHoraire.clic vous donne les renseignements fournis par les adhérents.</strong>';
     
     
    try
     {
         $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
     
     
    $bdd= new PDO ("mysql:host=localhost;dbname=XXXXX",'XXXXX','XXXXXXX', $pdo_options)  ;
     
     
         $h=$_POST['vosdonnees'];
     
     
         $v=$_POST['ville'];
     
     
     
     
                 //on recupère tout le contenu de la table coordonnées
     
     
                 $sql="
    
    
    	SELECT categorie, selection, infos,motscles, ville,Rech1
    	FROM coordonnees
    	WHERE categorie LIKE :recherche
    		OR selection LIKE :recherche 
    		OR infos LIKE :recherche
    		OR motscles LIKE :recherche
    		OR ville LIKE :recherche
    		OR Rech1 LIKE :recherche 
    	  
    	             ";
     
     
    	             $prep=$bdd->prepare($sql);
     
    	             $prep->bindValue(':recherche','%'.$h.'%',PDO::PARAM_STR);//
     
    	             $prep->execute();
     
     
     
    	             $reponse=$prep->fetch (PDO::FETCH_ASSOC);
     
     
     
     
     
     }// Fin du try 
     
      catch(PDO_EXCEPTION $e)
     {
     
           echo'<br/>ERREUR PDO	dans'.$e->getFile().'L'.$e->getLine().':'.$e->getMessage();
     
     }		
     
     
     //on affiche les donnees dans le tableau  
     
     
     
     
       echo '<table bgcolor="FFFFFF">'."\n";
     
            // premiere ligne on affiche les titres selection,nom,prenom,etc... dans les colonnes
     
               echo '<tr>';
                     echo '<td bgcolor="#669999"><b><u>selection</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>nom</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>prenom</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>MaPage</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>Ouverture</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>ville</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>SiteWeb</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>numtel</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>adresse</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>province</u></b></td>';
     
               echo '</tr>'."\n";
     
            // lecture et affichage des resultats 
     
            foreach($reponse as $key=>$donnees)   
     
           {
     
               echo '<tr>';
     
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["selection"].'</td>';
     
                     echo '<td bgcolor="#90EE90">'.$donnees["nom"].'</td>';
     
                     echo '<td bgcolor="#90EE90">'.$donnees["prenom"].'</td>';
     
                     echo'<td bgcolor="#CCCCCC"onClick="showPopup(event, \'' . addslashes($donnees['infos']) . '\')">'.$donnees["MaPage"].'</a></td>'; 
     
    	             echo'<td bgcolor="#CCCCCC"onClick="showPopup(event, \'' . addslashes($donnees['horaire']) . '\')">'.$donnees["Ouverture"].'</a></td>'; 
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["ville"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["SiteWeb"].'</td>';
     
       				 echo '<td bgcolor="#9ACD32">'.$donnees["numtel"].'</td>';
     
                     echo '<td bgcolor="#9ACD32">'.$donnees["adresse"].'</td>';
     
                     echo '<td bgcolor="#9ACD32">'.$donnees["province"].'</td>';	
     
               echo '</tr>'."\n";
     
     
            } // fin foreach($reponse as $key=>$donnees) 
     
            echo '</table>'."\n";
     
    	    //Fin du tableau
     
    	if($donnees['categorie']==0 and $donnees['selection']==0 and $donnees['infos']==0)
     
       {
    	   echo 'Pas d\'enregistrements dans cette table...';
       }
     
     
    //on affiche le résultat
     
     
     
     
     
     
     
     
    ?>
    <center>
    <input type="button" value= "Nouvelle recherche"
    onClick="document.location.href= document.referrer"/>
    </center>
    </head>
    Comment expliquer que si j'introduit $h='resto', j'obtiens toutes ses erreurs?
    Remerciements
    Claudine





  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour jreaux62,

    Heureuse de vous lire , vous qui m'avez tant aidée et je compte vous retrouver plus tard pour un dernier sujet(c'est promis) que vous aviez déjà traité et qui me cause pas mal de problèmes (formInscriptionAjax.php) dès que je le mets sur l'hébergeur alors qu'il fonctionne normalement sur mon serveurEasyPHP. Bref un sujet à la fois et merci pour tout.

    A bientôt
    Claudine

  5. #25
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $h=$_POST['vosdonnees'];
    $v=$_POST['ville'];
     
    // ...
     
    "OR ville LIKE :recherche ";
     
    // ...
     
    $prep->bindValue(':recherche','%'.$h.'%',PDO::PARAM_STR);
    Votre variable $v=$_POST['ville'] ne sert à rien dans votre code. Ne voulez vous pas chercher sur la ville en utilisant cette variable ?

    Si oui, il faudrait alors modifier la ligne OR ville LIKE :recherche en OR ville LIKE :ville et ajouter sous $prep->bindValue(':recherche','%'.$h.'%',PDO::PARAM_STR); cette ligne : $prep->bindValue(':ville','%'.$v.'%',PDO::PARAM_STR);
    Rappel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT categorie, selection, infos,motscles, ville,Rech1
    Ceci ne donnera que les informations concernant la catégorie, la sélection, les infos, les mots clés, la ville et "rech1". Ça ne pourra donc pas remplir les colonnes de votre tableau nom, prenom, MaPage, Ouverture, SiteWeb, numtel, adresse et province.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse=$prep->fetch (PDO::FETCH_ASSOC);
    fetch ne renvoie qu'une ligne de résultat. Pour avoir toutes les lignes retournées par la requête, il faut utiliser : $reponse=$prep->fetchAll (PDO::FETCH_ASSOC);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($donnees['categorie']==0 and $donnees['selection']==0 and $donnees['infos']==0)
    {
    	echo 'Pas d\'enregistrements dans cette table...';
    }
    Soit la requête retourne des lignes et dans les données categorie, selection et infos, il y aura quelque chose qui peut être la valeur zéro, soit elle ne retourne rien.
    Dans ton cas, puisque tu "fetchAll" le résultat de la requête, si tu veux savoir s'il n'y a aucune ligne de résultat, tu peux compter le nombre d'éléments du tableau $reponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(count($reponse) == 0)
    {
    	echo 'Pas de résultat à cette recherche...';
    }
    else
    {
    	foreach($reponse as $key=>$donnees) // ...
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #26
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour CinePhil,
    j'ai apporté toutes les modifications au code ci-dessous. Il a une grande amélioration, puisque enfin j'ai des lignes venant de la bdd, mais gros problèmes car si je tape un mot quelconque ou rien:il y a affichage de toutes les lignes de la bdd. Par contre si je tape un mot contenu dans la bdd tel que 'vitrier' et une ville(silly), il m'affiche toutes lignes de la bdd contenant Silly mais pas nécessairement en rapport avec "vitrier"
    complexe à résoudre?
    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
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
     
     
    <!DOCTYPE html >
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     
    <title>search sans ville.php  sous PDO</title>
    <head>
     
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    <style type="text/css">
    		#popup
               {
    			padding: 10px;
    			background-color: #CCC;
    			width: 700px;
    		}
     
    		#popup.floatable 
               {
    			position: fixed;			
    		}
    	</style>
     
    <script type="text/javascript">
    function showPopup(evt, text) 
    { 
        var top = evt.clientY + document.body.scrollTop; 
        var left = evt.clientX + document.body.scrollLeft; 
        var p = document.getElementById("popup"); 
     
        p.innerHTML = text; 
        p.style.top = top; 
        p.style.left = left; 
        p.style.display = "inline"; 
    } 
     function hidePopup() 
    { 
        document.getElementById("popup").style.display = "none"; 
    } 
    </script> 
     
    <style> 
    .popup
    { 
        position:absolute; 
        z-index : 2; 
        display : none; 
        border-style:solid; 
        border-width:1px; 
        border-color:#909090; 
        background:#f0f0f0;
        padding:25px;
        border-radius:25px;
        margin-top:15px;
        width:800px;
    }
    table
     .hasInfo
    {
        cursor: pointer;
    }
     
    <\table> 
    </style> 
     
    <div id="popup" class="popup" onClick="hidePopup()"></div> 
     
    <script language="javascript"> 
    function show_info(text)
     {
    	var ele = document.getElementById('info');
    	ele.innerHTML = text;
     } 
    </script> 
     
     
    <?php
     
    echo'<strong>Faites votre choix dans la liste :<br>
    Un clic sur nosINFOS.clic ou NotreHoraire.clic vous donne les renseignements fournis par les adhérents.</strong>';
     
    try
     {
         $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
     
    $bdd= new PDO ("mysql:host=localhost;dbname=XXXX",'XXXXXX','XXXXX', $pdo_options)  ;
     
         $h=$_POST['vosdonnees'];
     
         $v=$_POST['ville'];    //finp4
     
    /*$bdd= new PDO ("mysql:host=localhost;dbname=JF96_clients" , 'USER_MYSQL', 'SON_MOT_DE_PASSE', $pdo_options)  ;*/
     
     
                 //on recupère tout le contenu de la table coordonnées
     
                 $sql="
    SELECT categorie, selection,infos, nom,  MaPage, Ouverture,horaire, ville,SiteWeb, numtel, adresse,  province, motscles ,Rech1
    /*SELECT categorie, selection, infos,motscles, ville,Rech1*/
    	FROM coordonnees
    	WHERE categorie LIKE :recherche
    		OR selection LIKE :recherche 
    		OR infos LIKE :recherche
    		OR motscles LIKE :recherche
    		OR ville LIKE :ville
    		OR Rech1 LIKE :recherche 
    	  
    	             ";
     
     
    	             $prep=$bdd->prepare($sql);
     
    	             $prep->bindValue(':recherche','%'.$h.'%',PDO::PARAM_STR);//
     
                 $prep->bindValue(':ville','%'.$v.'%',PDO::PARAM_STR);
     
    	             $prep->execute();
     
     
     
    	             $reponse=$prep->fetchAll (PDO::FETCH_ASSOC);
     
     
     
     
     }// Fin du try 
     
      catch(PDO_EXCEPTION $e)
     {
     
           echo'<br/>ERREUR PDO	dans'.$e->getFile().'L'.$e->getLine().':'.$e->getMessage();
     
     }		
     
     //on affiche les donnees dans le tableau  
     
     
       echo '<table bgcolor="FFFFFF">'."\n";
     
            // premiere ligne on affiche les titres selection,nom,prenom,etc... dans les colonnes
     
               echo '<tr>';
                     echo '<td bgcolor="#669999"><b><u>selection</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>nom</u></b></td>';
     
                //     echo '<td bgcolor="#669999"><b><u>prenom</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>MaPage</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>Ouverture</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>ville</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>SiteWeb</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>numtel</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>adresse</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>province</u></b></td>';
     
               echo '</tr>'."\n";
     
            // lecture et affichage des resultats 
     
            foreach($reponse as $key=>$donnees)   
     
           {
     
               echo '<tr>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["selection"].'</td>';
     
                     echo '<td bgcolor="#90EE90">'.$donnees["nom"].'</td>';
     
                  //   echo '<td bgcolor="#90EE90">'.$donnees["prenom"].'</td>';
     
                     echo'<td bgcolor="#CCCCCC"onClick="showPopup(event, \'' . addslashes($donnees['infos']) . '\')">'.$donnees["MaPage"].'</a></td>'; 
     
    	             echo'<td bgcolor="#CCCCCC"onClick="showPopup(event, \'' . addslashes($donnees['horaire']) . '\')">'.$donnees["Ouverture"].'</a></td>'; 
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["ville"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["SiteWeb"].'</td>';
     
       				 echo '<td bgcolor="#9ACD32">'.$donnees["numtel"].'</td>';
     
                     echo '<td bgcolor="#9ACD32">'.$donnees["adresse"].'</td>';
     
                     echo '<td bgcolor="#9ACD32">'.$donnees["province"].'</td>';	
     
               echo '</tr>'."\n";
     
     
            } // fin foreach($reponse as $key=>$donnees) 
     
            echo '</table>'."\n";
     
    	    //Fin du tableau
     
    	/*if($donnees['categorie']==0 and $donnees['selection']==0 and $donnees['infos']==0)*/
     if(count($reponse) == 0)
    {
    	echo 'Pas de résultat à cette recherche...';
    }
    else
     
    	foreach($reponse as $key=>$donnees) // ...
     
     
     
     
    ?>
    <center>
    <input type="button" value= "Nouvelle recherche"
    onClick="document.location.href= document.referrer"/>
    </center>
    </head>
    Sincères remerciements pour votre aide efficace
    Claudine

  7. #27
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    bonjour CinePhil

    J'ai revérifier en tapant directement dans SQl: il m"affiche tout correctement
    En appliquant recherche; php il m'affiche toute la bdd que selectionne un ou rien element de recherche dans mon formulaire: donc $h ne fonctionne pas!
    Par contre, si j'y ajoute une recherche par ville, il m'affiche toute les lignes de la bdd contenant la ville ; Ce qui veut dire que $v fonctionne;

    Bref, si vous ne pouvez trouver la solution pour me dépanner: faites le moi savoir et je clôture la discussion; dommage pour tout ce travail inutile de votre part.

    Claudine

  8. #28
    Invité
    Invité(e)
    Par défaut
    Bonjour Claudine,

    il faut comprendre la requête, et notamment l'utilisation des AND ou OR.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	WHERE categorie LIKE :recherche
    		OR selection LIKE :recherche 
    		OR infos LIKE :recherche
    		OR motscles LIKE :recherche
    		OR ville LIKE :ville
    		OR Rech1 LIKE :recherche
    Là, on n'a que des OR : on cherche indépendamment :recherche OU :ville

    Si tu veux les DEUX critères (:recherche ET :ville) :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	WHERE 
    		(
    		  categorie LIKE :recherche
    		  OR selection LIKE :recherche 
    		  OR infos LIKE :recherche
    		  OR motscles LIKE :recherche
    		  OR Rech1 LIKE :recherche 
    		)
    		AND 
    		  ville LIKE :ville
    Ce n'est qu'une question de LOGIQUE.

  9. #29
    Invité
    Invité(e)
    Par défaut
    Pour aller plus loin, on peut optimiser le code :

    Code php : 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
    <?php
    // ---------------------
    // construction du WHERE
    	$arrayWhere 	= array();
    	$arrayDatas 	= array();
     
    // ---------------------
    // récupération : vosdonnees
    if( !empty($_POST['vosdonnees']) )
    {
    	$arrayWhere[] 	= " ( categorie LIKE :recherche
    				OR selection LIKE :recherche 
    				OR infos LIKE :recherche
    				OR motscles LIKE :recherche
    				OR Rech1 LIKE :recherche ) "; // important : mettre des parenthèses (pour éviter de mélanger les AND et OR)
    	$arrayDatas[':recherche']	= '%'.$_POST['vosdonnees'].'%';
    }
    // ---------------------
    // récupération : ville
    if( !empty($_POST['ville']) )
    {
    	$arrayWhere[] 	= " ville LIKE :ville ";
    	$arrayDatas[':ville']	= '%'.$_POST['ville'].'%';
    }
    // ---------------------
    // construction du WHERE
    	$clauseWhereAnd 	= ( !empty($arrayWhere) )? " WHERE " . implode( " AND ", $arrayWhere) : "";
     
    // ---------------------
    // requete : on recupère tout le contenu de la table coordonnées
    	$sql = "SELECT categorie, selection, infos, nom, MaPage, Ouverture, horaire, ville, SiteWeb, numtel, adresse,  province, motscles, Rech1
    			FROM coordonnees " . 
    			$clauseWhereAnd . " ";
     
    	$prep=$bdd->prepare( $sql );
    	$prep->execute( $arrayDatas );
     
    	$reponse=$prep->fetchAll(PDO::FETCH_ASSOC);
     // ---------------------
    Dernière modification par Invité ; 12/12/2017 à 11h17.

  10. #30
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour jreaux62,
    oui, j'ai effectivement oublié que la recherche s'effectue soit sur or soit sur and ou les deux simultanément;
    oui c'est une question de logique mais encore faut-il connaître comment la formuler.
    Bref c'est parfait si ce n'est que j'ai dû forcer avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $bdd->exec("SET CHARACTER SET utf8");
    pour pouvoir afficher les recherches avec les accents.
    Tout fonctionne avec les apostrophes car doublée dans la colonne "Recht1"
    Je peux maintenant introduire des recherches telles que'bières de l'abbaye d'Aulne'.
    C'est plus que parfait
    Chapeau bas et énorme merci à CinePhil pour cette conception à recommander et à vous jreaux62 pour la solution finale.

    Puis-je vous soumettre un dernier "problème" que je n'arrive pas à résoudre?
    A Savoir que mon tableau de recherche venant de la bdd m'affiche toutes les infos du client dont une colonne "SiteWeb" qui mentionne l'url du client. Comment procéder pour afficher le lien qui mène directement sur le site si je clique. Si je dois ouvrir une nouvelle discussion, veuillez me dire dans quel chapitre du forum.
    Une fois de plus,merci pour votre collaboration fructueuse et combien enrichissante pour moi.
    Claudine

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

    C'est un simple lien <a> :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td bgcolor="#CCCCCC"><a href="'.$donnees["SiteWeb"].'">'.$donnees["SiteWeb"].'</a></td>';

  12. #32
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour Jreaux62,
    C'est parfait pour le lien;merci

    Comme cité plus tôt, je me permets de revenir sur un sujet que vous aviez traité, il y a déjà plus d'un an et qui me cause pas mal de problèmes (formInscriptionAjax.php) que j'ai adapte et complété mais dès que je veux le mettre sur l'hébergeur j 'obtiens sans cesse des erreurs alors qu'il fonctionne normalement sur mon serveurEasyPHP.

    Voilà le message:
    [Mon Nov 06 07:01:56 2017] [error] [client 91.182.145.101] PHP Parse error: syntax error, unexpected 'catch' (T_CATCH) in /datas/vhosts/i..../httpdocs/FormInscriptionAjax.php on line 210, referer: http://......../
    Il m'indique également sur Aptana que j'ai une syntax error, alors que sur le serveur Easy PHP tout fonctionne correctement.

    Si, vous êtes d'accord pour jeter un coup d'oeil, je vous envoie le fichier complet.
    Vifs remerciements.
    Claudine

  13. #33
    Invité
    Invité(e)
    Par défaut
    Bonjour Claudine,

    1- merci d'ouvrir une nouvelle discussion, puisque c'est un nouveau sujet

    2- on ne peut rien te répondre si tu ne mets pas :

    • le CODE concerné (PAS le fichier complet !)
    • le message d'erreur complet (que tu dois apprendre à... COMPRENDRE !)



    N.B. l'erreur indique un "catch" inattendu ligne 210.

    -> Il manque certainement le "try" avant... (avant la ligne 210)
    Mais SANS CODE, on ne peut rien dire de plus.

  14. #34
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour Jreaux62,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    div class="recherche_p">
    <form action=" searchpasville.php" id="searchthis" method="post">
    <input id="search" name="vosdonnees" type="text" placeholder="Votre recherche par mots clés" />+
    <input id="search" name="ville" type="text" placeholder="Si nécessaire votre recherche par ville " /><BR>
    <input id="search" name="province" type="text" placeholder="Si nécessaire votre recherche par province " /><BR>
    <input id="search-btn" type="submit" value="Rechercher" />
    Comme vous pouvez le voir,j'ai ajouter à mon formulaire de recherche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input id="search" name="province" type="text" placeholder="Si nécessaire votre recherche par province " /><BR>
    1.Pour l'instant je peux effectuer une recherche par mots clés et si nécessaire la recherche par ville correspondant à la recherche par mots clés
    2.Mais, j'aimerai éventuellement pouvoir aussi faire recherche par mots clés et si nécessaire une recherche par province
    Comment adapter le code ci-dessous pour pouvoir ajouter à la condition 1, la condition 2 ?

    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
     
     $sql="
    SELECT categorie, selection,infos, nom,  MaPage, Ouverture,horaire, ville,SiteWeb, numtel, adresse,  province, motscles ,Rech1
    /*SELECT categorie, selection, infos,motscles, ville,Rech1*/
     
    FROM coordonnees
    WHERE
        (
    		  categorie LIKE :recherche
    		  OR selection LIKE :recherche 
    		  OR infos LIKE :recherche
    		  OR motscles LIKE :recherche
    		  OR Rech1 LIKE :recherche 
        )
     
    		AND 
    		  ville LIKE :ville	
     
    	             ";
     
    	             $prep=$bdd->prepare($sql);
     
    	             $prep->bindValue(':recherche','%'.$h.'%',PDO::PARAM_STR);//
     
                 $prep->bindValue(':ville','%'.$v.'%',PDO::PARAM_STR);
     
    	             $prep->execute(); 
     
    	             $reponse=$prep->fetchAll (PDO::FETCH_ASSOC);
    Si c'est possible,comment procéder?

    Remerciements
    Claudine

  15. #35
    Invité
    Invité(e)
    Par défaut
    Bonjour Claudine,
    bon retour sur DVP

    1- La réponse à ta question se trouve dans mon code du message #29.
    Auquel il suffit d'ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // ---------------------
    // récupération : province
    if( !empty($_POST['province']) )
    {
    	$arrayWhere[] 	= " province LIKE :province ";
    	$arrayDatas[':province']	= '%'.$_POST['province'].'%';
    }
    Ce qui en fait sa facilité d'utilisation.

    2- <input id="search" ...
    Non. On ne peut pas en avoir plusieurs. Un id doit être UNIQUE !

  16. #36
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonsoir JREAUX62,
    Je n'arrive pas à afficher de resultats dans le tableau, si ce n'est les phrases ci-dessous.
    Je ne suis pas habituée avec cette clause Where telle que formulée dans ce cas et incapable de déceler l'erreur. Voulez-vous regarder dans le code ci-dessous?
    Remerciements
    Claudine


    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
     
    <?php
     
    echo'<strong>Faites votre choix dans la liste :<br>
    <u>Un clic </u>sur nosINFOS.clic ou NotreHoraire.clic  ou Adresse Web<u>(colonnes vertes)</u>vous donne les renseignements fournis par les adherents.</strong>';
     
    try
     {
         $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
     
    $bdd= new PDO ("mysql:host=localhost;dbname=XXXXX",'JXXXX','XXXXXX', $pdo_options)  ;
     
     
    $bdd->exec("SET CHARACTER SET utf8");
     
    // ---------------------
    // requete : on recupère tout le contenu de la table coordonnées
    	$sql = "SELECT categorie, selection, infos, nom, MaPage, Ouverture, horaire, ville, SiteWeb, numtel, adresse,  province, motscles, Rech1,Rech2,Rech3,Rech4,Rech5
    			FROM coordonnees" .
    			$clauseWhereAnd . " ";
     
     / ---------------------
    // construction du WHERE
    	$arrayWhere = array();
    	$arrayDatas 	= array();
     
    // ---------------------
    // récupération : vosdonnees
    if( !empty($_POST['vosdonnees']) )
    {
    	$arrayWhere[] 	= " categorie LIKE :recherche
    					OR selection LIKE :recherche 
    					OR infos LIKE :recherche
    					OR motscles LIKE :recherche
    					OR ville LIKE :ville
    					OR Rech1 LIKE :recherche 
                                           OR Rech2 LIKE :recherche 
                                          OR Rech3 LIKE :recherche 
                                           OR Rech4 LIKE :recherche 
                                           OR Rech5 LIKE :recherche ";
     
    	$arrayDatas[':recherche']	= '%'.$_POST['vosdonnees'].'%';
    }
    // ---------------------
    // récupération : ville
    if( !empty($_POST['ville']) )
    {
    	$arrayWhere[] 	= " ville LIKE :ville ";
    	$arrayDatas[':ville']	= '%'.$_POST['ville'].'%';
    }
     
    // ---------------------
     
    // récupération : province
    if( !empty($_POST['province']) )
    {
    	$arrayWhere[] 	= " province LIKE :province ";
    	$arrayDatas[':province']	= '%'.$_POST['province'].'%';
    }
     
     
    // construction du WHERE
    	$clauseWhereAnd 	= ( !empty($arrayWhere) )? " WHERE " . implode( " AND ", $arrayWhere) : "";
     
    //..........................
    	$prep=$bdd->prepare( $sql );
    	$prep->execute( $arrayDatas );
     
    	$reponse=$prep->fetchAll(PDO::FETCH_ASSOC);
     // ---------------------
     }// Fin du try 
     
      catch(PDO_EXCEPTION $e)
     {
     
           echo'<br/>ERREUR PDO	dans'.$e->getFile().'L'.$e->getLine().':'.$e->getMessage();
     
     }		
    //on affiche les donnees dans le tableau  
     
     
       echo '<table bgcolor="FFFFFF">'."\n";
     
            // premiere ligne on affiche les titres selection,nom,prenom,etc... dans les colonnes
     
               echo '<tr>';
                     echo '<td bgcolor="#669999"><b><u>categorie</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>selection</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>nom</u></b></td>';
     
                //     echo '<td bgcolor="#669999"><b><u>prenom</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>MaPage</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>Ouverture</u></b></td>';
     
                    echo '<td bgcolor="#669999"><b><u>SiteWeb</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>ville</u></b></td>';
                     echo '<td bgcolor="#669999"><b><u>numtel</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>adresse</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>province</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>Liens</u></b></td>';		 
               echo '</tr>'."\n";
     
            // lecture et affichage des resultats 
     
            foreach($reponse as $key=>$donnees)   
     
           {
     
               echo '<tr>';
                      echo '<td bgcolor="#CCCCCC">'.$donnees["categorie"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["selection"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["nom"].'</td>';
     
                  //   echo '<td bgcolor="#CCCCCC">'.$donnees["prenom"].'</td>';
     
                     echo'<td bgcolor="#9ACD32"onClick="showPopup(event, \'' . addslashes($donnees['infos']) . '\')">'.$donnees["MaPage"].'</a></td>'; 
     
    	           echo'<td bgcolor="#9ACD32"onClick="showPopup(event, \'' . addslashes($donnees['horaire']) . '\')">'.$donnees["Ouverture"].'</a></td>'; 
     
     
     
     
              if ($donnees['Liens']=="")
    {
     
                     echo '<td bgcolor="#9ACD32">'.$donnees["SiteWeb"].'</td>';
    }
    else
    {
    			echo '<td bgcolor="#9ACD32"><a href="'.$donnees["SiteWeb"].'">'.$donnees["SiteWeb"].'</a></td>';	
    }	
       		   echo '<td bgcolor="#CCCCCC">'.$donnees["ville"].'</td>';	
     
    	 echo '<td bgcolor="#CCCCCC">'.$donnees["numtel"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["adresse"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["province"].'</td>';	
    		 echo '<td bgcolor="#CCCCCC">'.$donnees["Liens"].'</td>';			 
               echo '</tr>'."\n";
     
     
            } // fin foreach($reponse as $key=>$donnees) 
     
            echo '</table>'."\n";
     
    	    //Fin du tableau
     
     
     if(count($reponse) == 0)
    {
    	echo 'Pas de résultat à cette recherche...';
    }
    else
     
    	foreach($reponse as $key=>$donnees) // ...
     
     
     
     
    ?>
    <center>
    <input type="button" value= "Nouvelle recherche"
    onClick="document.location.href= document.referrer"/>
    </center>
    </head>

  17. #37
    Invité
    Invité(e)
    Par défaut
    Bonjour Claudine,

    1- Ca t'arrive de RELIRE ton code, des fois ?...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // requete : on recupère tout le contenu de la table coordonnées
    	$sql = "SELECT categorie, selection, infos, nom, MaPage, Ouverture, horaire, ville, SiteWeb, numtel, adresse,  province, motscles, Rech1,Rech2,Rech3,Rech4,Rech5
    			FROM coordonnees" .
    			$clauseWhereAnd . " ";
    Tu l'as mis AVANT la "construction du WHERE" ($clauseWhereAnd n'existe pas encore !), au lieu de le mettre APRES la "construction du WHERE" !

    Code php : 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
    // construction du WHERE
    	$arrayWhere = array();
    	$arrayDatas 	= array();
     
    .....
    .....
     
    // construction du WHERE
    	$clauseWhereAnd 	= ( !empty($arrayWhere) )? " WHERE " . implode( " AND ", $arrayWhere) : "";
     
    // ---------------------
    // requete : on recupère tout le contenu de la table coordonnées
    	$sql = "SELECT categorie, selection, infos, nom, MaPage, Ouverture, horaire, ville, SiteWeb, numtel, adresse,  province, motscles, Rech1,Rech2,Rech3,Rech4,Rech5
    			FROM coordonnees" .
    			$clauseWhereAnd . " ";
     
    //..........................
    	$prep=$bdd->prepare( $sql );
    	$prep->execute( $arrayDatas );
     
    	$reponse=$prep->fetchAll(PDO::FETCH_ASSOC);


    2- D'autre part, on utilise IMPERATIVEMENT htmlspecialchars() au moment d'AFFICHER les données (ic, dans le tableau).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                     echo '<td bgcolor="#CCCCCC">' . htmlspecialchars( $donnees["xxxxxxx"], ENT_QUOTES, 'UTF-8') . '</td>';

  18. #38
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    ReBonsoir Jreaux66,
    Oui, j'ai relis de nombreuses fois le code,mais sincèrement je ne vois pas l'erreur. De plus, j'ai corrigé et mis le$ql APRES la "construction du WHERE.
    Désolée,mais rien n'a changé!
    Claudine

    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
     
    <?php
     
    echo'<strong>Faites votre choix dans la liste :<br>
    <u>Un clic </u>sur nosINFOS.clic ou NotreHoraire.clic  ou Adresse Web<u>(colonnes vertes)</u>vous donne les renseignements fournis par les adherents.</strong>';
     
    try
     {
         $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
     
    $bdd= new PDO ("mysql:host=localhost;dbname=XXXXX",'JXXXX','XXXXXX', $pdo_options)  ;
     
     
    $bdd->exec("SET CHARACTER SET utf8");
     
     
     
     / ---------------------
    // construction du WHERE
    	$arrayWhere = array();
    	$arrayDatas 	= array();
     
    // ---------------------
    // récupération : vosdonnees
    if( !empty($_POST['vosdonnees']) )
    {
    	$arrayWhere[] 	= " categorie LIKE :recherche
    					OR selection LIKE :recherche 
    					OR infos LIKE :recherche
    					OR motscles LIKE :recherche
    					OR ville LIKE :ville
    					OR Rech1 LIKE :recherche 
                                           OR Rech2 LIKE :recherche 
                                          OR Rech3 LIKE :recherche 
                                           OR Rech4 LIKE :recherche 
                                           OR Rech5 LIKE :recherche ";
     
    	$arrayDatas[':recherche']	= '%'.$_POST['vosdonnees'].'%';
    }
    // ---------------------
    // récupération : ville
    if( !empty($_POST['ville']) )
    {
    	$arrayWhere[] 	= " ville LIKE :ville ";
    	$arrayDatas[':ville']	= '%'.$_POST['ville'].'%';
    }
     
    // ---------------------
     
    // récupération : province
    if( !empty($_POST['province']) )
    {
    	$arrayWhere[] 	= " province LIKE :province ";
    	$arrayDatas[':province']	= '%'.$_POST['province'].'%';
    }
     
     
    // construction du WHERE
    	$clauseWhereAnd 	= ( !empty($arrayWhere) )? " WHERE " . implode( " AND ", $arrayWhere) : "";
    // ---------------------
    // requete : on recupère tout le contenu de la table coordonnées
    	$sql = "SELECT categorie, selection, infos, nom, MaPage, Ouverture, horaire, ville, SiteWeb, numtel, adresse,  province, motscles, Rech1,Rech2,Rech3,Rech4,Rech5
    			FROM coordonnees" .
    			$clauseWhereAnd . " ";
     
     
    //..........................
    	$prep=$bdd->prepare( $sql );
    	$prep->execute( $arrayDatas );
     
    	$reponse=$prep->fetchAll(PDO::FETCH_ASSOC);
     // ---------------------
     }// Fin du try 
     
      catch(PDO_EXCEPTION $e)
     {
     
           echo'<br/>ERREUR PDO	dans'.$e->getFile().'L'.$e->getLine().':'.$e->getMessage();
     
     }		
    //on affiche les donnees dans le tableau  
     
     
       echo '<table bgcolor="FFFFFF">'."\n";
     
            // premiere ligne on affiche les titres selection,nom,prenom,etc... dans les colonnes
     
               echo '<tr>';
                     echo '<td bgcolor="#669999"><b><u>categorie</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>selection</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>nom</u></b></td>';
     
                //     echo '<td bgcolor="#669999"><b><u>prenom</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>MaPage</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>Ouverture</u></b></td>';
     
                    echo '<td bgcolor="#669999"><b><u>SiteWeb</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>ville</u></b></td>';
                     echo '<td bgcolor="#669999"><b><u>numtel</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>adresse</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>province</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>Liens</u></b></td>';		 
               echo '</tr>'."\n";
     
            // lecture et affichage des resultats 
     
            foreach($reponse as $key=>$donnees)   
     
           {
     
               echo '<tr>';
                      echo '<td bgcolor="#CCCCCC">'.$donnees["categorie"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["selection"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["nom"].'</td>';
     
                  //   echo '<td bgcolor="#CCCCCC">'.$donnees["prenom"].'</td>';
     
                     echo'<td bgcolor="#9ACD32"onClick="showPopup(event, \'' . addslashes($donnees['infos']) . '\')">'.$donnees["MaPage"].'</a></td>'; 
     
    	           echo'<td bgcolor="#9ACD32"onClick="showPopup(event, \'' . addslashes($donnees['horaire']) . '\')">'.$donnees["Ouverture"].'</a></td>'; 
     
     
     
     
              if ($donnees['Liens']=="")
    {
     
                     echo '<td bgcolor="#9ACD32">'.$donnees["SiteWeb"].'</td>';
    }
    else
    {
    			echo '<td bgcolor="#9ACD32"><a href="'.$donnees["SiteWeb"].'">'.$donnees["SiteWeb"].'</a></td>';	
    }	
       		   echo '<td bgcolor="#CCCCCC">'.$donnees["ville"].'</td>';	
     
    	 echo '<td bgcolor="#CCCCCC">'.$donnees["numtel"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["adresse"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["province"].'</td>';	
    		 echo '<td bgcolor="#CCCCCC">'.$donnees["Liens"].'</td>';			 
               echo '</tr>'."\n";
     
     
            } // fin foreach($reponse as $key=>$donnees) 
     
            echo '</table>'."\n";
     
    	    //Fin du tableau
     
     
     if(count($reponse) == 0)
    {
    	echo 'Pas de résultat à cette recherche...';
    }
    else
     
    	foreach($reponse as $key=>$donnees) // ...
     
     
     
     
    ?>
    <center>
    <input type="button" value= "Nouvelle recherche"
    onClick="document.location.href= document.referrer"/>
    </center>
    </head>

  19. #39
    Invité
    Invité(e)
    Par défaut
    Bonjour Claudine,

    " rien n'a changé" ne nous aide pas du tout !

    • Explique clairement ce qui se passe, ce qui ne va pas, à quelle étape du script,....
    • Indente proprement ton script, qu'on arrive à le lire facilement
    • Affiche les données, pour voir si elles contiennent les infos voulues,...
    • Message d'erreur ? Lequel ?
    • ...

    + Corrige ligne 18 (code ci-dessus) : il manque 1 /

  20. #40
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour Jreaux62
    Remerciements pour votre aide précieuse
    Claudine

    Voici le code erreur:

    [Tue Dec 12 10:03:49 2017] [error] [client XXXXXXXX]
    PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]:
    Invalid parameter number: number of bound variables does not match number of tokens' in /datas/vhosts/XXXXX/httpdocs/SearchVilleProv.php:134
    \nStack trace:\n#0 /datas/vhostsXXXXXX/httpdocs/SearchVilleProv.php(134): PDOStatement->execute(Array)\n#1 {main}\n
    thrown in /datas/vhosts/XXXXXX/httpdocs/SearchVilleProv.php on line 134, referer:XXXXXX.
    Voici: searchVilleProv.php


    Code php : 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
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
     
    <!DOCTYPE html >
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     
    <title>searchVilleProv.php  sous PDO</title>
    <head>
     
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    <style type="text/css">
    		#popup
               {
    			padding: 10px;
    			background-color: #CCC;
    			width: 700px;
    		}
     
    		#popup.floatable 
               {
    			position: fixed;			
    		}
    	</style>
     
    <script type="text/javascript">
    function showPopup(evt, text) 
    { 
        var top = evt.clientY + document.body.scrollTop; 
        var left = evt.clientX + document.body.scrollLeft; 
        var p = document.getElementById("popup"); 
     
        p.innerHTML = text; 
        p.style.top = top; 
        p.style.left = left; 
        p.style.display = "inline"; 
    } 
     function hidePopup() 
    { 
        document.getElementById("popup").style.display = "none"; 
    } 
    </script> 
     
    <style> 
    .popup
    { 
        position:absolute; 
        z-index : 2; 
        display : none; 
        border-style:solid; 
        border-width:1px; 
        border-color:#909090; 
        background:#f0f0f0;
        padding:25px;
        border-radius:25px;
        margin-top:15px;
        width:800px;
    }
    table
     .hasInfo
    {
        cursor: pointer;
    }
     
    <\table> 
    </style> 
     
    <div id="popup" class="popup" onClick="hidePopup()"></div> 
     
    <script language="javascript"> 
    function show_info(text)
     {
    	var ele = document.getElementById('info');
    	ele.innerHTML = text;
     } 
    </script> 
     
     
    <?php
     
    echo'<strong>Faites votre choix dans la liste :<br>
    <u>Un clic </u>sur nosINFOS.clic ou NotreHoraire.clic  ou Adresse Web<u>(colonnes vertes)</u>vous donne les renseignements fournis par les adherents.</strong>';
     
    try
     {
       $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
     
    $bdd= new PDO ("mysql:host=localhost;dbname=XXXX",'XXXX','XXXXX', $pdo_options)  ;
     
     
    $bdd->exec("SET CHARACTER SET utf8");  
     
    // construction du WHERE
    	$arrayWhere = array();
    	$arrayDatas 	= array();// récupération : vosdonnees       //L92
     
     
    if( !empty($_POST['vosdonnees']) )
    {
    	$arrayWhere[] 	= " categorie LIKE :recherche
    					OR selection LIKE :recherche 
    					OR infos LIKE :recherche
    					OR motscles LIKE :recherche
    					OR ville LIKE :ville
    					OR Rech1 LIKE :recherche 
                                           OR Rech2 LIKE :recherche 
                                          OR Rech3 LIKE :recherche 
                                           OR Rech4 LIKE :recherche 
                                           OR Rech5 LIKE :recherche ";
     
    	$arrayDatas[':recherche']	= '%'.$_POST['vosdonnees'].'%';
    }
    // ---------------------
    // récupération : ville
    if( !empty($_POST['ville']) )
    {
    	$arrayWhere[] 	= " ville LIKE :ville ";
    	$arrayDatas[':ville']	= '%'.$_POST['ville'].'%';
    }
    // ---------------------
     
    // récupération : province
    if( !empty($_POST['province']) )
    {
    	$arrayWhere[] 	= " province LIKE :province ";
    	$arrayDatas[':province']	= '%'.$_POST['province'].'%';
    }
    // ---------------------
    // construction du WHERE
    	$clauseWhereAnd 	= ( !empty($arrayWhere) )? " WHERE " . implode( " AND ", $arrayWhere) : ""; 
    // ---------------------
    //L128
    $sql = "SELECT categorie, selection, infos, nom, MaPage, Ouverture, horaire, ville, SiteWeb, numtel, adresse,  province, motscles, Rech1,Rech2,Rech3,Rech4,Rech5
    			FROM coordonnees " . 
                           $clauseWhereAnd . " ";
     
    	$prep=$bdd->prepare( $sql ); //L134
    	$prep->execute( $arrayDatas ); 
    	$reponse=$prep->fetchAll(PDO::FETCH_ASSOC);
     
     }// Fin du try 
     
      catch(PDO_EXCEPTION $e)
     {
     
           echo'<br/>ERREUR PDO	dans'.$e->getFile().'L'.$e->getLine().':'.$e->getMessage();
     
     }		
    //on affiche les donnees dans le tableau  
     
     
       echo '<table bgcolor="FFFFFF">'."\n";
     
            // premiere ligne on affiche les titres selection,nom,prenom,etc... dans les colonnes
     
               echo '<tr>';
                     echo '<td bgcolor="#669999"><b><u>categorie</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>selection</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>nom</u></b></td>';
     
                //     echo '<td bgcolor="#669999"><b><u>prenom</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>MaPage</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>Ouverture</u></b></td>';
     
                    echo '<td bgcolor="#669999"><b><u>SiteWeb</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>ville</u></b></td>';
                     echo '<td bgcolor="#669999"><b><u>numtel</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>adresse</u></b></td>';
     
                     echo '<td bgcolor="#669999"><b><u>province</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>Liens</u></b></td>';		 
               echo '</tr>'."\n";
     
            // lecture et affichage des resultats 
     
            foreach($reponse as $key=>$donnees)   
     
           {
     
               echo '<tr>';
                      echo '<td bgcolor="#CCCCCC">'.$donnees["categorie"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["selection"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["nom"].'</td>';
     
                  //   echo '<td bgcolor="#CCCCCC">'.$donnees["prenom"].'</td>';
     
                     echo'<td bgcolor="#9ACD32"onClick="showPopup(event, \'' . addslashes($donnees['infos']) . '\')">'.$donnees["MaPage"].'</a></td>'; 
     
    	           echo'<td bgcolor="#9ACD32"onClick="showPopup(event, \'' . addslashes($donnees['horaire']) . '\')">'.$donnees["Ouverture"].'</a></td>'; 
     
     
     
     
              if ($donnees['Liens']=="")
    {
     
                     echo '<td bgcolor="#9ACD32">'.$donnees["SiteWeb"].'</td>';
    }
    else
    {
    			echo '<td bgcolor="#9ACD32"><a href="'.$donnees["SiteWeb"].'">'.$donnees["SiteWeb"].'</a></td>';	
    }	
       		   echo '<td bgcolor="#CCCCCC">'.$donnees["ville"].'</td>';	
     
    	 echo '<td bgcolor="#CCCCCC">'.$donnees["numtel"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["adresse"].'</td>';
     
                     echo '<td bgcolor="#CCCCCC">'.$donnees["province"].'</td>';	
    		 echo '<td bgcolor="#CCCCCC">'.$donnees["Liens"].'</td>';			 
               echo '</tr>'."\n";
     
     
            } // fin foreach($reponse as $key=>$donnees) 
     
            echo '</table>'."\n";
     
    	    //Fin du tableau
     
     
     if(count($reponse) == 0)
    {
    	echo 'Pas de résultat à cette recherche...';
    }
    else
     
    	foreach($reponse as $key=>$donnees) // ...
     
     
     
     
    ?>
    <center>
    <input type="button" value= "Nouvelle recherche"
    onClick="document.location.href= document.referrer"/>
    </center>
    </head>

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Ouvrir une bdd avec des fichier .MYI . MYD et . FRM
    Par djams9 dans le forum Débuter
    Réponses: 2
    Dernier message: 16/07/2018, 18h48
  2. [XL-2010] Recherche dans un tableau avec des cases vide alternée
    Par tlt dans le forum Excel
    Réponses: 7
    Dernier message: 23/12/2016, 14h29
  3. Remplir une bdd avec des données libre de droit
    Par wyzer dans le forum Débuter
    Réponses: 0
    Dernier message: 29/06/2011, 16h31
  4. Erreur dans une requête avec des valeurs contenant \
    Par KIK83 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 11/12/2009, 16h06
  5. Réponses: 10
    Dernier message: 02/04/2007, 17h22

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