13stephweb13 | si je met $sql .= " WHERE ";
c'est pour continuer derrière $sql = "SELECT * FROM articles";
si seulement 1 mot clé est tapé le input recherche..
Et $sql.=" OR ", pour si + de 1 mot clé est tapé dans le input recherche.
En fait le code il marchais avec les fonction mysql_. Mais je veux le faire en PDO, et avec le code si dessous,
cette erreur s'affiche lorsque je tente une recherche dans le input, :
Catchable fatal error: Object of class PDOStatement could not be converted to string in C:\wamp\www\CMS\admin-az\rechercher.php on line 46
Code :
- <?php
- if(!empty($_GET['q'])) {
- if(preg_match("#^[^<>=]{3,100}$#",$_GET['q'])) {
- $get_q = addslashes($_GET['q']); // récupere recherche
- $s = explode(" ",$get_q); // permet d'exploser une chaine, et de socker résultat dans un tableaux
- $bdd = new PDO('mysql:host=localhost;dbname=cms', 'root', ''); // tentative de connexion en PDO
- $sql = $bdd->query("SELECT * FROM articles" );
- $i = 0;
- foreach($s as $mot) { // pour parcouri tableaux, pour récuperer chaque mots
- if(strlen($mot)>0) { // si + de 0 lettre dans mot
- if($i==0) {
- $sql .= " WHERE ";
- }
- else {
- $sql .= " OR ";
- }
- $sql .= "titre_h1 LIKE '%$mot%'"; // mettre en forme la recherche. %: mettre n'importe quoi avant et après
- $i++;
- }
- }
- //echo $sql."<br />";
- $req=mysql_query($sql) or die (mysql_error());
- echo mysql_num_rows($req)." Résultat<br />";
- while($d = mysql_fetch_assoc($req)) {
- $c2 = $d["id"];
- $i = 0;
- foreach($s as $mot) { // parcourir l'ensemble des mos clés dans titre_h1, pour leur donner un style
- if(strlen($mot)>3) {
- $i++;
- if($i > 4) {$i = 1;}
- $c2 = str_ireplace($mot, '<span class="surlign'.$i.'">'.$mot.'</span>', $c2); // str_ireplace: remplacement insensible à la casse
- }
- }
- echo '<h1>'.$c2.'</h1>';
- $c = $d["description"];
- $i = 0;
- foreach($s as $mot) { // parcourir l'ensemble des mos clés dans description, pour leur donner un style
- if(strlen($mot)>3) {
- $i++;
- if($i > 4) {$i = 1;}
- $c = str_ireplace($mot, '<span class="surlign'.$i.'">'.$mot.'</span>', $c);
- }
- }
- echo '<p>'.$c.'</p>';
- }
- }
- else {
- $erreur_search = 'Erreur dans la recherche.';
- }
- }
- ?>
|
merci
|