PHP Mysli et PDO : problème pour convertir une requête Mysqli en PDO
Résolu/Fermé
Alcantara75
Messages postés
16
Date d'inscription
mercredi 11 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019
-
11 déc. 2019 à 13:13
yg_be Messages postés 23406 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 décembre 2024 - 12 déc. 2019 à 13:53
yg_be Messages postés 23406 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 décembre 2024 - 12 déc. 2019 à 13:53
A voir également:
- Mysqli_real_escape_string pdo
- Pdo mysql_real_escape_string ✓ - Forum Webmastering
- Fichier .PDO ✓ - Forum Bureautique
- Mysqli_query pdo - Forum Webmastering
- Formulaire de connexion php avec pdo ✓ - Forum PHP
- Login pdo php - Forum PHP
6 réponses
jordane45
Messages postés
38347
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 décembre 2024
4 719
11 déc. 2019 à 15:50
11 déc. 2019 à 15:50
petite correction
<?php //on inclus le fichier de connexion à la bdd dont le nom est ???? require_once "chemin/vers/ton/fichier/de/connexion/a/la/bdd.php"; //connexion à la bdd $bdd = getDB(); // on récupère PROPREMENT les variables AVANT de les utiliser $query = !empty($_POST["query"]) ? $_POST["query"]: NULL; //on prépare la requête SQL $sql = "SELECT * FROM clients "; //début du traitement : if($query){ $search = $bdd->quote($query); //si il y a une recherche on ajoute le WHERE à la requete : $sql .= " WHERE prenom LIKE '%".$search."%' OR nom LIKE '%".$search."%' OR adresse LIKE '%".$search."%' OR ville LIKE '%".$search."%' OR cp LIKE '%".$search."%' OR email LIKE '%".$search."%' OR id_clients LIKE '%".$search."%' "; } //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute() ; $result = $requete->fetchAll(); // on stocke le resultat dans un array }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); } ?>
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
Ambassadeur
1 557
11 déc. 2019 à 14:06
11 déc. 2019 à 14:06
bonjour, merci d'utiliser les balises de code pour partager du code:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
jordane45
Messages postés
38347
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 décembre 2024
4 719
Modifié le 11 déc. 2019 à 15:50
Modifié le 11 déc. 2019 à 15:50
Le fichier de connexion: (dont on ne connait pas le nom... )
Code à placer au TOUT début de ton fichier
Puis le reste de ton code html
Au passage, je t'invite à lire et à appliquer le contenu de ces liens :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et pour poster ton code correctement sur ce forum :
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
<?php session_start(); //On commence par activer l'affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); /* DATABASE CONFIGURATION */ define('DB_SERVER', 'localhost'); define('DB_USERNAME', 'melanquiere'); define('DB_PASSWORD', ''); define('DB_DATABASE', 'resto'); function getDB() { try { $bdd = new PDO("mysql:host=".DB_SERVER.";dbname=".DB_DATABASE.";charset=utf8'", DB_USERNAME, DB_PASSWORD); $bdd->exec("set names utf8"); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); return $bdd; } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); exit; } } ?>
Code à placer au TOUT début de ton fichier
<?php //on inclus le fichier de connexion à la bdd dont le nom est ???? require_once "chemin/vers/ton/fichier/de/connexion/a/la/bdd.php"; //connexion à la bdd $bdd = getDB(); // on récupère PROPREMENT les variables AVANT de les utiliser $query = !empty($_POST["query"]) ? $_POST["query"]: NULL; //on prépare la requête SQL $sql = "SELECT * FROM clients "; //début du traitement : if($query){ $search = $bdd->quote($query); //si il y a une recherche on ajoute le WHERE à la requete : $sql .= " WHERE prenom LIKE '%".$search."%' OR nom LIKE '%".$search."%' OR adresse LIKE '%".$search."%' OR ville LIKE '%".$search."%' OR cp LIKE '%".$search."%' OR email LIKE '%".$search."%' OR id_clients LIKE '%".$search."%' "; } //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute() ; $result = $requete->fetchAll(); // on stocke le resultat dans un array }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); } ?>
Puis le reste de ton code html
<html> <head> <meta charset="utf-8"> ....le reste de ton head. </head> <body> <?php $output = ''; if(!empty($result)) { $output .= '</br> <table > <thead> <tr> <th>ID</th> <th>Client</th> <th>Email</th> <th>Tel</th> </tr> </thead> <tbody>'; foreach($result as $row){ $output .= ' <tr> <td width="10%"> '.$row["id_clients"].'</td> <td width="20%">'.$row["prenom"].' '.$row["nom"].'</td> <td width="20%">'.$row["email"].'</td> <td width="20%">'.$row["tel"].'</td> <td width="2%"> <a data-toggle="modal" data-target="#exampleModal" data-whatever="'.$row['id_clients'].' "><i class="fa fa-plus "></i></a> </td> <td width="2%"><a href="../form/profilClients.php?id_clients='.$row["id_clients"].'"><i class="fa fa-pencil"></i></td> <td width="10%"></td> </tr> '; } echo '</tbody> </table>'; } else { echo 'Données non trouvées'; } echo $output; ?> </body> </html>
Au passage, je t'invite à lire et à appliquer le contenu de ces liens :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et pour poster ton code correctement sur ce forum :
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Alcantara75
Messages postés
16
Date d'inscription
mercredi 11 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019
11 déc. 2019 à 14:33
11 déc. 2019 à 14:33
Jespère que je ne me suis pas trompé
Ci dessous le code de la page :
<?php /* DATABASE CONFIGURATION */ define('DB_SERVER', 'localhost'); define('DB_USERNAME', 'melanquiere'); define('DB_PASSWORD', ''); define('DB_DATABASE', 'resto'); function getDB() { $dbhost=DB_SERVER; $dbuser=DB_USERNAME; $dbpass=DB_PASSWORD; $dbname=DB_DATABASE; try { $bdd = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); $bdd->exec("set names utf8"); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); return $bdd; } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } } ?>
Ci dessous le code de la page :
<?php $connect = mysqli_connect("localhost", "melanquiere", "", "resto"); $output = ''; if(isset($_POST["query"])) { $search = mysqli_real_escape_string($connect, $_POST["query"]); $query = " SELECT * FROM clients WHERE prenom LIKE '%".$search."%' OR nom LIKE '%".$search."%' OR adresse LIKE '%".$search."%' OR ville LIKE '%".$search."%' OR cp LIKE '%".$search."%' OR email LIKE '%".$search."%' OR id_clients LIKE '%".$search."%' "; } else { $query = " SELECT * FROM clients "; } $result = mysqli_query($connect, $query); if(mysqli_num_rows($result) > 0) { $output .= ' </br> <table > <thead> <tr> <th>ID</th> <th>Client</th> <th>Email</th> <th>Tel</th> </thead> <tbody> </tr> '; while($row = mysqli_fetch_array($result)) { $output .= ' <tr> <td width="10%"> '.$row["id_clients"].'</td> <td width="20%">'.$row["prenom"].' '.$row["nom"].'</td> <td width="20%">'.$row["email"].'</td> <td width="20%">'.$row["tel"].'</td> <td width="2%"> <a data-toggle="modal" data-target="#exampleModal" data-whatever="'.$row['id_clients'].' "><i class="fa fa-plus "></i></a> </td> <td width="2%"><a href="../form/profilClients.php?id_clients='.$row["id_clients"].'"><i class="fa fa-pencil"></i></td> <td width="10%"></td> </tr> '; } echo ' </tbody></table>'; } else { echo 'Données non trouvées'; } echo $output; ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alcantara75
Messages postés
16
Date d'inscription
mercredi 11 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019
11 déc. 2019 à 14:33
11 déc. 2019 à 14:33
C'est bon je viens de comprendre pourquoi il faut entourer avec des balises merci
jordane45
Messages postés
38347
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 décembre 2024
4 719
11 déc. 2019 à 14:57
11 déc. 2019 à 14:57
en attendant... je t'ai déjà donné la réponse à ta question
Alcantara75
Messages postés
16
Date d'inscription
mercredi 11 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019
11 déc. 2019 à 15:04
11 déc. 2019 à 15:04
J'ai ce mesage d'erreur :
Le mot de passe a été ajouter, mais ça ne fonctionne toujours pas.
Connection failed: SQLSTATE[HY000] [1045] Acc�s refus� pour l'utilisateur: 'test123456'@'@localhost' (mot de passe: NON)
Le mot de passe a été ajouter, mais ça ne fonctionne toujours pas.
jordane45
Messages postés
38347
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 décembre 2024
4 719
>
Alcantara75
Messages postés
16
Date d'inscription
mercredi 11 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019
11 déc. 2019 à 15:30
11 déc. 2019 à 15:30
sachant que les informtionts de connexion qui se trouvaient dans le code que tu nous as montré sont
je ne vois pas comment tu peux te retrouver avec un user "test123456"
/* DATABASE CONFIGURATION */ define('DB_SERVER', 'localhost'); define('DB_USERNAME', 'melanquiere'); define('DB_PASSWORD', ''); define('DB_DATABASE', 'resto');
je ne vois pas comment tu peux te retrouver avec un user "test123456"
Alcantara75
Messages postés
16
Date d'inscription
mercredi 11 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019
11 déc. 2019 à 15:36
11 déc. 2019 à 15:36
Merci pour ton aide en tout cas, maintenant 'ai les 2 messages suivants:
ça concerne cette ligne
Notice: Undefined variable: bdd in C:\wamp\www\O2G\fetch\clients.php on line 34
Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\wamp\www\O2G\fetch\clients.php on line 34
ça concerne cette ligne
$requete = $bdd -> prepare($sql) ;
Alcantara75
Messages postés
16
Date d'inscription
mercredi 11 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019
11 déc. 2019 à 15:40
11 déc. 2019 à 15:40
le champ de la barre de recherche ci-dessous
<div class="box-body"> <input type="text" name="search_text" id="search_text" placeholder="Search by Customer Details" class="form-control" /> <div id="result"></div> <div style="clear:both"></div> </div>
Alcantara75
Messages postés
16
Date d'inscription
mercredi 11 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019
12 déc. 2019 à 12:46
12 déc. 2019 à 12:46
Pour avoir les derniers clients rentrés qui s'affichent dans le tableau, j'ai ajouté
ça affiche le mesage ci_dessous :
après un var_dump de la requête j'ai l'affichage ci-dessous :
le filtre order by id_clients se met avant le where. j'ai essayé de le mettre après le dernier like pour qu'il s'affiche a la fin.
Il me les affiche bien dans l'ordre du dernier clientes rentrés, mais il le fait que lors de la recherche.
order by id_clients desc à la requete "SELECT * FROM clients"
ça affiche le mesage ci_dessous :
Erreur ! SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'WHERE prenom LIKE '%232%' OR nom LIKE '%232%' ' à la ligne 1 Données non trouvées
après un var_dump de la requête j'ai l'affichage ci-dessous :
C:\wamp\www\O2G\fetch\clients.php:38:string ' SELECT * FROM clients order by id_clients DESC WHERE prenom LIKE '%232%' OR nom LIKE '%232%' OR adresse LIKE '%232%' OR ville LIKE '%232%' OR cp LIKE '%232%' OR email LIKE '%232%' OR id_clients LIKE '%232%' ' (length=337)
le filtre order by id_clients se met avant le where. j'ai essayé de le mettre après le dernier like pour qu'il s'affiche a la fin.
Il me les affiche bien dans l'ordre du dernier clientes rentrés, mais il le fait que lors de la recherche.
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
1 557
12 déc. 2019 à 13:53
12 déc. 2019 à 13:53
je suppose que tu as ajouté le order by à l'intérieur du if. difficile d'être plus précis si tu ne montres pas ce que tu as fait.
11 déc. 2019 à 16:04
j'ai juste un dernier message, quand je tape un mot sur la barre de recherche, j'ai le message ci-dessous. aperemment c'est un problème de syntaxe.
11 déc. 2019 à 19:02
11 déc. 2019 à 18:39
ci-dessous l'affichage que j'obtiens après un var_dump($sql);
11 déc. 2019 à 19:52
donc
a remplacer par
12 déc. 2019 à 10:22
Merci de ton efficacité et de ta patience.