$lignes[0] et $ligne['champ0'] ont la meme valeur
$lignes[1] et $ligne['champ1'] ont la meme valeur
$lignes[2] et $ligne['champ2'] ont la meme valeur
...
$lignes[n] et $ligne['champn'] ont la meme valeur
Ce qui fait qu'en fait j'ai un tableau deux fois trop grand et surtout, dont
je dois traiter cette redondance.
- Est-ce un comportement inévitable?
ou alors
- Comment traiter facilement cette redondance?
Merci d'avance.
Soit un truc ressemblant à ceci, au fautes pres (c'est pas du cut/paste): idem
///////////////////////////////////// $lignes=array(); $nblines= msql_num_rows($result); for($i=0; $i < $nblines; i+=1) { $lignes[]=mysql_fetch_array($result); } j'en déduis que tu cherches à obtenir un tableau
non associatif comportant toutes les lignes renvoyées par la requête. si j'ai faux, stop la lecture ici.
sinon je reviens à la charge avec PEAR et son package MDB2 ton code deviendrait alors $ligne = $result->fetchAll(MDB2_FETCHMODE_ORDERED);
et encore la paramètre est optionnel selon ce qui précède dans le code
voilà
amicalement
thierry
Mihamina Rakotomandimby (R12y)
thierry wrote:
///////////////////////////////////// $lignes=array(); $nblines= msql_num_rows($result); for($i=0; $i < $nblines; i+=1) { $lignes[]=mysql_fetch_array($result); } j'en déduis que tu cherches à obtenir un tableau
non associatif comportant toutes les lignes renvoyées par la requête.
Euh... En gros, chaque enregistrement est une personne, et les champs sont "nom" , "prénom", "date de naissance",...
J'ai déjà une fonction qui m'affiche un tableau de tableau, mais le fait que l'information soit redondante défigure l'édifice... Bref, Pascal et Marcel m'ont indiqué ce que je devais savoir, et j'en profite pour tous vous remercier.
thierry wrote:
/////////////////////////////////////
$lignes=array();
$nblines= msql_num_rows($result);
for($i=0; $i < $nblines; i+=1)
{
$lignes[]=mysql_fetch_array($result);
}
j'en déduis que tu cherches à obtenir un tableau
non associatif comportant toutes les lignes renvoyées
par la requête.
Euh... En gros, chaque enregistrement est une personne, et les champs
sont "nom" , "prénom", "date de naissance",...
J'ai déjà une fonction qui m'affiche un tableau de tableau, mais le fait que
l'information soit redondante défigure l'édifice...
Bref, Pascal et Marcel m'ont indiqué ce que je devais savoir, et j'en
profite pour tous vous remercier.
///////////////////////////////////// $lignes=array(); $nblines= msql_num_rows($result); for($i=0; $i < $nblines; i+=1) { $lignes[]=mysql_fetch_array($result); } j'en déduis que tu cherches à obtenir un tableau
non associatif comportant toutes les lignes renvoyées par la requête.
Euh... En gros, chaque enregistrement est une personne, et les champs sont "nom" , "prénom", "date de naissance",...
J'ai déjà une fonction qui m'affiche un tableau de tableau, mais le fait que l'information soit redondante défigure l'édifice... Bref, Pascal et Marcel m'ont indiqué ce que je devais savoir, et j'en profite pour tous vous remercier.
Ce code est tellement abominable que je me dois d'intervenir. Voir la section "mysql_fetch_array" [1] du manuel PHP pour savoir comment utiliser la fonction. Développer en PHP ça ne s'improvise, une bonne pratique au début est de toujours consulter le manuel quand on fait appel à une fonction.
Sinon bannir cette fonction et utiliser mysql_fetch_assoc si on aime les crochets ou mysql_fetch_object si on préfère les flèches :)
Ce code est tellement abominable que je me dois d'intervenir. Voir la
section "mysql_fetch_array" [1] du manuel PHP pour savoir comment utiliser
la fonction. Développer en PHP ça ne s'improvise, une bonne pratique au
début est de toujours consulter le manuel quand on fait appel à une
fonction.
Sinon bannir cette fonction et utiliser mysql_fetch_assoc si on aime les
crochets ou mysql_fetch_object si on préfère les flèches :)
Ce code est tellement abominable que je me dois d'intervenir. Voir la section "mysql_fetch_array" [1] du manuel PHP pour savoir comment utiliser la fonction. Développer en PHP ça ne s'improvise, une bonne pratique au début est de toujours consulter le manuel quand on fait appel à une fonction.
Sinon bannir cette fonction et utiliser mysql_fetch_assoc si on aime les crochets ou mysql_fetch_object si on préfère les flèches :)
Ce code est tellement abominable Est-ce que tu peux expliquer pourquoi aux nombreux débutants amateurs
que nous sommes ? Merci. Didier.
P'tit Marcel
Mihamina (R12y) Rakotomandimby wrote:
$lignes[]=mysql_fetch_array($result); Ce code est tellement abominable
Est-ce que tu peux expliquer pourquoi aux nombreux débutants amateurs
que nous sommes ?
Je suppose que JMM réagissait à l'emploi de mysql_fetch_array avec un seul paramètre. C'est souvent générateur de comportement imprévu du script. Par exemple ce script va afficher 4 colonnes et non deux :
$sql = 'select nom, prenom from utilisateur order by nom'; $result = mysql_query($sql) or die ('erreur SQL'); echo '<table>'; while($ligne=mysql_fetch_array($result)) { echo '<tr><td>', implode('</td><td>', $ligne), '</td></tr>'; } echo '</table>';
Il vaut mieux employer la syntaxe étendue : mysql_fetch_array($result, MYSQL_ASSOC) voire mysql_fetch_assoc($result) ou bien mysql_fetch_array($result, MYSQL_NUM) voire mysql_fetch_row($result) ou bien mysql_fetch_object($result) pour les adeptes de la POO
je préfère personnellement la première approche qui fait manipuler des noms de variables signifiants ($ligne['num_telephone'] au lieu de $ligne[4] par exemple), mais elle impose de donner un nom aux champs calculés présents dans la requête SQL.
Par ailleurs, je déconseille (comme JMM?) de stocker en tableau la totalité des lignes renvoyées par la requête comme R12y le fait dans le tableau $lignes. En effet: (1) cela peut représenter des Mo de données si la requête est moins ciblée que prévu (2) MySQL gérera toujours mieux que PhP un ensemble de données (lignes x colonnes) lues dans MySQL.
a+ -- P'tit Marcel stats sur les forums modérés http://www.centrale-lyon.org/ng/
Mihamina (R12y) Rakotomandimby wrote:
$lignes[]=mysql_fetch_array($result);
Ce code est tellement abominable
Est-ce que tu peux expliquer pourquoi aux nombreux débutants amateurs
que nous sommes ?
Je suppose que JMM réagissait à l'emploi de mysql_fetch_array avec un
seul paramètre. C'est souvent générateur de comportement imprévu du
script. Par exemple ce script va afficher 4 colonnes et non deux :
$sql = 'select nom, prenom from utilisateur order by nom';
$result = mysql_query($sql) or die ('erreur SQL');
echo '<table>';
while($ligne=mysql_fetch_array($result)) {
echo '<tr><td>', implode('</td><td>', $ligne), '</td></tr>';
}
echo '</table>';
Il vaut mieux employer la syntaxe étendue :
mysql_fetch_array($result, MYSQL_ASSOC) voire mysql_fetch_assoc($result)
ou bien
mysql_fetch_array($result, MYSQL_NUM) voire mysql_fetch_row($result)
ou bien
mysql_fetch_object($result) pour les adeptes de la POO
je préfère personnellement la première approche qui fait manipuler des
noms de variables signifiants ($ligne['num_telephone'] au lieu de
$ligne[4] par exemple), mais elle impose de donner un nom aux champs
calculés présents dans la requête SQL.
Par ailleurs, je déconseille (comme JMM?) de stocker en tableau la
totalité des lignes renvoyées par la requête comme R12y le fait dans le
tableau $lignes. En effet:
(1) cela peut représenter des Mo de données si la requête est moins
ciblée que prévu
(2) MySQL gérera toujours mieux que PhP un ensemble de données (lignes x
colonnes) lues dans MySQL.
a+
--
P'tit Marcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/
$lignes[]=mysql_fetch_array($result); Ce code est tellement abominable
Est-ce que tu peux expliquer pourquoi aux nombreux débutants amateurs
que nous sommes ?
Je suppose que JMM réagissait à l'emploi de mysql_fetch_array avec un seul paramètre. C'est souvent générateur de comportement imprévu du script. Par exemple ce script va afficher 4 colonnes et non deux :
$sql = 'select nom, prenom from utilisateur order by nom'; $result = mysql_query($sql) or die ('erreur SQL'); echo '<table>'; while($ligne=mysql_fetch_array($result)) { echo '<tr><td>', implode('</td><td>', $ligne), '</td></tr>'; } echo '</table>';
Il vaut mieux employer la syntaxe étendue : mysql_fetch_array($result, MYSQL_ASSOC) voire mysql_fetch_assoc($result) ou bien mysql_fetch_array($result, MYSQL_NUM) voire mysql_fetch_row($result) ou bien mysql_fetch_object($result) pour les adeptes de la POO
je préfère personnellement la première approche qui fait manipuler des noms de variables signifiants ($ligne['num_telephone'] au lieu de $ligne[4] par exemple), mais elle impose de donner un nom aux champs calculés présents dans la requête SQL.
Par ailleurs, je déconseille (comme JMM?) de stocker en tableau la totalité des lignes renvoyées par la requête comme R12y le fait dans le tableau $lignes. En effet: (1) cela peut représenter des Mo de données si la requête est moins ciblée que prévu (2) MySQL gérera toujours mieux que PhP un ensemble de données (lignes x colonnes) lues dans MySQL.
a+ -- P'tit Marcel stats sur les forums modérés http://www.centrale-lyon.org/ng/