Récup de données dans une table
FerméMARTEGAL Messages postés 34 Date d'inscription dimanche 11 mai 2014 Statut Membre Dernière intervention 21 septembre 2022 - 21 sept. 2022 à 10:37
- Récup de données dans une table
- Table ascii - Guide
- Table des matières word - Guide
- Reinstaller windows sans perte de données - Guide
- Effacer les données de navigation - Guide
- La zone de données passée à un appel système est insuffisante - Windows 11
8 réponses
12 sept. 2022 à 13:06
Bonjour
Il faudrait que tu montres un minimum ton code pour qu'on puisse t'aider car là ta question est des plus vague...
Merci Jordane. Voici mon bout de script :
//on scrute la table $sth=$conn->prepare ("SELECT Nom, Prenom FROM adherents2022"); $sth->execute(); //Je lit les données de la table $resultat=$sth->fetchALL(PDO::FETCH_ASSOC); echo '<br>'; print_r ($resultat); echo '<br>';
Ce que je ne sais pas faire, c'est de récupérer les éléments de $résultat pour les travailler dans une variable. Faut-il utiliser RETURN ? Comment ?
Je commence à peine à m'initier au PHP
Modifié le 13 sept. 2022 à 09:37
Bonjour,
Déjà, vu que tu fais du PDO, je t'invite à prendre de bonnes habitudes immédiatement.
Donc, pense à gérer les éventuelles erreurs dans tes requêtes SQL. Pour ça, applique ce qui est indiqué ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ensuite,
La méthode fetchAll permet de stocker le résultat de ta requête dans un ARRAY
Il te faut donc apprendre à manipuler les array en php.
Une boucle FOREACH par exemple ...
foreach ($resultat as $cle => $valeur ){ echo "<br>clé du tableau associatif " . $cle ; echo "<br>Valeur contenu dans cette ligne : " ; print_r($valeur); }
Comme tu as choisi le mode FETCHASSOC, tu te retrouves avec un tableau associatif.
$valeur contiendra une "ligne" de résultat de ta requête SQL.
Immaginons que ta requête retourne un PRENOM et un NOM
En reprenant mon exemple précédent ( que je t'invite à tester quand même avant celui la... )
foreach ($resultat as $cle => $valeur ){ echo "<br>clé du tableau associatif " . $cle ; echo "<br>Valeur contenu dans cette ligne : " ; $prenom = $valeur["prenom"]; $nom = $valeur["nom"]; echo " PRENOM :" . $prenom. " NOM : " . $nom; }
17 sept. 2022 à 07:54
Merci Jordane pour tes précieux conseils.
Etant en vacances jusqu'à hier, Je réponds un peu tard. Je vais bosser tes scripts. Je te tiens au courant.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question21 sept. 2022 à 09:18
Salut à tous,
Voici un bout de script que j'ai concocté après les conseils de Jordane:
//on scrute la table adherents2022 $sth=$conn->prepare ("SELECT Nom, Prenom FROM adherents2022"); $sth->execute(); $resultat=$sth->fetchALL(PDO::FETCH_ASSOC); foreach ($resultat as $cle => $valeur){ echo "<br> clé du tableau associatif = ". $cle; echo "<br> valeur de la ligne :"; $prenom = $valeur["Prenom"]; $nom =$valeur["Nom"]; } if (($prenom==$Prenom) and ($nom==$Nom)== false){ echo "<br> PW non copié dans table adherent2022";} else { echo 'PW = '.$PW; $sth=$conn->prepare(" INSERT INTO adherents2022 (pw) VALUES(:pw)"); $sth->bindparam(':pw', $PW); $sth->execute(); echo '<br> PW copié dans table adherent2022 <br>'; } try{ $conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOExeption $e){ die('Erreur : ' .$e->getMessage()); }
Apparemment, le script fonctionne, puisqu' à la fin j'ai le message "PW copié dans la table adherents2022". En fait, il n'y a pas de copie dans cette table, bien qu'il n'y ait aucune erreur signalée. Je pense que le pb vient de l'INSERT INTO, mais je ne vois pas le bug.
Merci d'avance pour votre aide
21 sept. 2022 à 09:38
bonjour,
Tu n'as pas appliqué les conseils de Jordane concernant la gestion des erreurs. Pas étonnant, donc, qu'aucune erreur ne soit signalée.
21 sept. 2022 à 10:12
Alors, j'ai appliqué les conseils de Jordane en début de script que je n'ai pas mentionné en page précédente :
try{ $conn=new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOExeption $e){ die('Erreur : ' .$e->getMessage()); }
Voilà !
Merci quand même
21 sept. 2022 à 10:16
As-tu lu la partie concernant "Détecter les erreurs dans les requêtes" ?
21 sept. 2022 à 10:22
Je crois, oui. Mais d'après ta question, il y a quelque chose que je n'ai pas fait !! Je compte sur toi pour me corriger.
21 sept. 2022 à 10:27
Relis attentivement l'ensemble des conseils de Jordane, et compare avec ce que tu as fait.
21 sept. 2022 à 10:34
Pour éviter d'y passer trois plombes..
En gros ..
A CHAQUE requête, la mettre dans un bloc TRY/CATCH
comme ceci
try{ $sql = "NSERT INTO adherents2022 (pw) VALUES(:pw)"; $sth = $conn->prepare($sql); $sth->bindparam(':pw', $PW); $sth->execute(); }catch(Exception $e){ echo "Erreur : " . $e->getMessage(); }
21 sept. 2022 à 10:37
OK, mais je me noie un peu !
Je vais reprendre ça à tête reposée.
Merci