Probleme de conversion de code mysql numrows en pdo

Eléphanteau du PHP | 42 Messages

19 déc. 2018, 19:29

Bonjour à vous
j'avais fait un petit script qui me permettait de récupéré les données dune bdd dans un fichier excel

J'essaie de le convertir en pdo mais je bloque sur la boucle for je ne sais pas comment convertir mysql_num_rows et mysql_result.

Pouvez vous me filer un coup de main.

Merci je poste le code en entier et la partie qui me pose souci.

Code : Tout sélectionner

<?php // � elle seule, la ligne suivante suffit � envoyer le r�sultat du script dans une feuille Excel header("Content-type: application/vnd.ms-excel"); // la ligne suivante est facultative, elle sert � donner un nom au fichier Excel header("Content-Disposition: attachment; filename=Tous.xls"); //require_once("file:///I|/script php/gestion adherent/conf_int.php"); // La suite est une simple requ�te php-mysql. On interroge la table utilis�e dans l'exemple pr�c�dent. // mysql_connect("mysql5-8.perso","********","******"); // mysql_select_db("********"); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> <style type="text/css"> table{ border:1px solid black; } td /* Les cellules normales */ { border:1px solid black; /* font-family: "arial", serif;*/ text-align:center; /* Tous les textes des cellules seront centrés*/ padding:5px; /* Petite marge intérieure aux cellules pour éviter que le texte touche les bordures */ } td.txt_white {color: white; background-color: #1d1e26; } </style> </head> <body> <?php include("../bdd/bdd.php"); ?> <? $id = $_GET['id']; $reponse=$cnx->query('SELECT * FROM ERP_bat ORDER BY description'); $reponse = $cnx->query("SELECT * FROM ERP_bat WHERE ID='".$id."'"); //Je charge toutes les informations de la table client quand le client est celui correspondant à l'id de l'URL. while($donnee= $reponse->fetch()){ $id=$donnee['id']; $nom_bat=$donnee['description']; $adresse=$donnee['adresse']; $code_postal=$donnee['code_postal']; $ville=$donnee['ville']; } $reponse->closeCursor();/ //construction du tableau HTML print '<table border=1> <TR> <TD class="txt_white"><strong><center>ID</center></strong></TD> <TD class="txt_white"><strong><center>BATIMENT</center></strong></TD> <TD class="txt_white"><strong><center>ADRESSE</center></strong></TD> <TD class="txt_white"><strong><center>Adresse</center></strong></TD> <TD class="txt_white"><strong><center>CP</center></strong></TD> <TD class="txt_white"><strong><center>VILLE</center></strong></TD> </TR><TR>'; // lecture du contenu de la requ�te avec 2 boucles imbriqu�es; par ligne et par colonne $compteur=0; for ($ligne=0 ; $ligne<mysql_num_rows($reponse);$ligne++){ if ($compteur%2==1 ) { $style="#b2fcfd"; } else{ $style="#e6e8e8"; } for ($colonne = 0;$colonne < 6 ; $colonne++) { print '<TD bgcolor="'.$style.'">' .mysql_result($reponse,$ligne,$colonne). '</TD>'; } print '</TR>'; $compteur++; } print '</TABLE>'; ?> </body> </html>
Et la partie qui me pose souci :

Code : Tout sélectionner

$compteur=0; for ($ligne=0 ; $ligne<mysql_num_rows($reponse);$ligne++){ if ($compteur%2==1 ) { $style="#b2fcfd"; } else{ $style="#e6e8e8"; } for ($colonne = 0;$colonne < 6 ; $colonne++) { print '<TD bgcolor="'.$style.'">' .mysql_result($reponse,$ligne,$colonne). '</TD>'; } print '</TR>'; $compteur++; }
Merci à tous ceux qui pourront m'aider :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 déc. 2018, 20:35

Bonjour,

Alors déjà, il faut éviter de mettre ses identifiants (user et mot de passe) de base de données en clair dans un message sur un forum public :-D
J'ai modifié ton message initial mais par sécurité, je te recommande de rapidement modifier ton mot de passe au cas où quelqu'un de mal intentionné soit passé avant ma modif.

Après pour répondre à ta question :

L'équivalent de mysql_num_rows() avec PDO c'est $req->rowCount()
$req= $dbh->prepare('SELECT * FROM fruits');
$req->execute();

$nb_fruits= $req->rowCount();
echo "Il y a de $nb_fruits fruits.";
http://php.net/manual/fr/pdostatement.rowcount.php

L'équivalent de mysql_result() avec PDO c'est $req->fetchColumn()
http://php.net/manual/fr/pdostatement.fetchcolumn.php
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 42 Messages

19 déc. 2018, 20:47

Merci de ta réponse effectivement je n'avais pas fait attention au commentaire :tir2: :shock: mais ça va ce n’était pas les bon identifiants

je testerais demain merci encore.

Eléphanteau du PHP | 42 Messages

20 déc. 2018, 20:04

Bon je pense avoir réussi avec rowcount()
par contre fetchcolumn je ne vois pas du tout comment le faire ???

Code : Tout sélectionner

$compteur=0; $nbre_lignes= $reponse->rowCount(); for ($ligne=0 ; $ligne < $nbre_lignes;$ligne++){ if ($compteur%2==1 ) { $style="#b2fcfd"; } else{ $style="#e6e8e8"; } for ($colonne = 0;$colonne < 6 ; $colonne++) { // je ne voit pas comment utiliser fetchColumn() pour remplacer mysqlresult dans la ligne ci dessous ??? print '<TD bgcolor="'.$style.'">' .mysql_result($reponse,$ligne,$colonne). '</TD>'; } print '</TR>'; $compteur++; } print '</TABLE>';