Convertir moteur recherche mysql_ en PDO
Résolu/Fermé
13stephweb13
Messages postés
48
Date d'inscription
mardi 29 novembre 2011
Statut
Membre
Dernière intervention
9 mai 2018
-
Modifié par jordane45 le 2/03/2015 à 18:25
13stephweb13 Messages postés 48 Date d'inscription mardi 29 novembre 2011 Statut Membre Dernière intervention 9 mai 2018 - 3 mars 2015 à 00:07
13stephweb13 Messages postés 48 Date d'inscription mardi 29 novembre 2011 Statut Membre Dernière intervention 9 mai 2018 - 3 mars 2015 à 00:07
A voir également:
- Convertir moteur recherche mysql_ en PDO
- Convertir youtube en mp3 avec audacity - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Convertir epub en kindle - Guide
- Convertir audio en texte word - Guide
3 réponses
jordane45
Messages postés
38381
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 janvier 2025
4 727
2 mars 2015 à 18:29
2 mars 2015 à 18:29
Bonjour,
et qu'as tu comme code à la ligne 46 de ton fichier C:\wamp\www\CMS\admin-az\rechercher.php ?
Dans l'idéal, il faudrait nous le montrer entièrement.
PS: Merci de préciser le "langage" dans les balises de code pour la coloration syntaxique.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
et qu'as tu comme code à la ligne 46 de ton fichier C:\wamp\www\CMS\admin-az\rechercher.php ?
Dans l'idéal, il faudrait nous le montrer entièrement.
PS: Merci de préciser le "langage" dans les balises de code pour la coloration syntaxique.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
13stephweb13
Messages postés
48
Date d'inscription
mardi 29 novembre 2011
Statut
Membre
Dernière intervention
9 mai 2018
2 mars 2015 à 18:36
2 mars 2015 à 18:36
ok merci
à la ligne 46 (wamp a du aussi prendre en compte le code html que j'ai au dessus, donc):
et mon script complet (qui marche, mais je veut le convertir en PDO)
Merci beaucoup
à la ligne 46 (wamp a du aussi prendre en compte le code html que j'ai au dessus, donc):
$sql.=" WHERE ";
et mon script complet (qui marche, mais je veut le convertir en PDO)
<?php if(!empty($_GET['q'])) { if(preg_match("#^[^<>=]{3,100}$#",$_GET['q'])) { $get_q = addslashes($_GET['q']); $s = explode(" ",$get_q); mysql_connect("localhost","root",""); mysql_select_db("cms"); $sql = "SELECT * FROM articles"; $i = 0; foreach($s as $mot) { if(strlen($mot)>0) { if($i==0) { $sql.=" WHERE "; } else { $sql.=" OR "; } $sql.="titre_h1 LIKE '%$mot%'"; $i++; } } $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) { if(strlen($mot)>3) { $i++; if($i > 4) {$i = 1;} $c2 = str_ireplace($mot, '<span class="surlign'.$i.'">'.$mot.'</span>', $c2); } } echo '<h1>'.$c2.'</h1>'; $c = $d["description"]; $i = 0; foreach($s as $mot) { 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 beaucoup
jordane45
Messages postés
38381
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 janvier 2025
4 727
2 mars 2015 à 19:30
2 mars 2015 à 19:30
Le code que je veux voir c'est celui qui génère l'erreur. ... ce que tu as essayé de faire avec la pdo...
13stephweb13
Messages postés
48
Date d'inscription
mardi 29 novembre 2011
Statut
Membre
Dernière intervention
9 mai 2018
2 mars 2015 à 20:43
2 mars 2015 à 20:43
ok
Et quand je tente de lancer une recherche (en tapant des mots clés dans le champ input) ça me met ceci comme erreur:
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
Et la ligne 46 est elle:
Merci beaucoup
<?php if(!empty($_GET['q'])) { if(preg_match("#^[^<>=]{3,100}$#",$_GET['q'])) { $get_q = addslashes($_GET['q']); $s = explode(" ",$get_q); $bdd = new PDO('mysql:host=localhost;dbname=cms', 'root', ''); $sql = $bdd->query("SELECT * FROM articles"); $i = 0; foreach($s as $mot) { if(strlen($mot)>0) { if($i==0) { $sql.=" WHERE "; } else { $sql.=" OR "; } $sql.="titre_h1 LIKE '%$mot%'"; $i++; } } $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) { if(strlen($mot)>3) { $i++; if($i > 4) {$i = 1;} $c2 = str_ireplace($mot, '<span class="surlign'.$i.'">'.$mot.'</span>', $c2); } } echo '<h1>'.$c2.'</h1>'; $c = $d["description"]; $i = 0; foreach($s as $mot) { 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.'; } } ?>
Et quand je tente de lancer une recherche (en tapant des mots clés dans le champ input) ça me met ceci comme erreur:
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
Et la ligne 46 est elle:
$sql.=" WHERE ";
Merci beaucoup
jordane45
Messages postés
38381
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 janvier 2025
4 727
Modifié par jordane45 le 2/03/2015 à 22:51
Modifié par jordane45 le 2/03/2015 à 22:51
Le souci vient du fait que tu utilises ta variable $sql à cette ligne
ce qui genère un jeu d'enregistrement..
puis tu essayes de lui ajouter du texte.... d'où le message d'erreur...
A la limite il faut faire :
... puis plus bas (ligne 26 de ton code )
par contre.. il te faudra également modifier tes lignes 27/28 pour utiliser mysqli au lieu de mysql.
$sql = $bdd->query("SELECT * FROM articles");
ce qui genère un jeu d'enregistrement..
puis tu essayes de lui ajouter du texte.... d'où le message d'erreur...
A la limite il faut faire :
$bdd = new PDO('mysql:host=localhost;dbname=cms', 'root', ''); $sql = "SELECT * FROM articles";
... puis plus bas (ligne 26 de ton code )
$req = $bdd->query($sql);
par contre.. il te faudra également modifier tes lignes 27/28 pour utiliser mysqli au lieu de mysql.
13stephweb13
Messages postés
48
Date d'inscription
mardi 29 novembre 2011
Statut
Membre
Dernière intervention
9 mai 2018
>
jordane45
Messages postés
38381
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 janvier 2025
2 mars 2015 à 23:23
2 mars 2015 à 23:23
OK, c'est bon j'ai fait ce que tu m'as dit.
ps: Par contre je pensais que c'était pas bon de mettre
je pensais qu'il faillais toujours faire des requêtes préparés en pdo.
Mais ça l'air de bien fonctionner.
et j'ai aussi modifier mes lignes 27/28 en y faisant en PDO.
Merci beaucoup,
ps: Par contre je pensais que c'était pas bon de mettre
$sql = "SELECT * FROM articles";
je pensais qu'il faillais toujours faire des requêtes préparés en pdo.
Mais ça l'air de bien fonctionner.
et j'ai aussi modifier mes lignes 27/28 en y faisant en PDO.
Merci beaucoup,
jordane45
Messages postés
38381
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 janvier 2025
4 727
>
13stephweb13
Messages postés
48
Date d'inscription
mardi 29 novembre 2011
Statut
Membre
Dernière intervention
9 mai 2018
2 mars 2015 à 23:46
2 mars 2015 à 23:46
je pensais qu'il faillais toujours faire des requêtes préparés en pdo.
Mais ça l'air de bien fonctionner.
Les requêtes préparées sont essentiellement utilisées lorsque tu as des paramètres à ta requête (un WHERE....)
Sinon.. pas besoin.
13stephweb13
Messages postés
48
Date d'inscription
mardi 29 novembre 2011
Statut
Membre
Dernière intervention
9 mai 2018
3 mars 2015 à 00:07
3 mars 2015 à 00:07
A ok, merci de conseil