Page 1 sur 2
pb avec while ($a = mysql_fetch_array($b))
Posté : 11 mai 2005, 16:58
par lamk
salut all,
petite question : il y a-t-il une limite dans le mysql_fetch_array ?
parce qu'en fait je n'arrive à afficher que les 19 premières colonnes de ma table :/
du $a[0] au $a[18]......
quelqu'un a une idée ? merci
Posté : 11 mai 2005, 17:02
par slipndi
Bonjour
Non elle n'est pas limité a 19 choix cette fonction , je suppose que peu être ta 20 eme entrée dans la bdd est avec un accent ou un caractère spécial ou je ne sais pas il faudrait voir ton code ou ta bdd donc

Posté : 11 mai 2005, 17:04
par lamk
en fait le champ suivant est vide... et quasiment tous les champs sont numériques.. :/
Posté : 11 mai 2005, 17:06
par zeus
Et est-ce que ce champ vide est le dernier de ta ligne ?
Posté : 11 mai 2005, 17:06
par slipndi
ah ben c'est le fait que le champ soit vide alors , vu qu'il est vide il detecte cela comme la fin de la bdd et arete le listage, si tu met une valeur même si c'est 0 ca continuera je pense !
Posté : 11 mai 2005, 17:07
par lamk
non non pas du tout, il y en plein (plein) derrière..
Posté : 11 mai 2005, 17:08
par lamk
ah ben c'est le fait que le champ soit vide alors , vu qu'il est vide il detecte cela comme la fin de la bdd et arete le listage, si tu met une valeur même si c'est 0 ca continuera je pense !
je viens de vérifier, la valeur par défaut est 0.... donc il n'était pas vide en fait
Posté : 11 mai 2005, 17:10
par slipndi
J'ai jeter un oeil sur le site de php et nul part il est écrit qu'il y a une restriction de se genre donc le problème doit venir d'ailleur, mais de ou ?!
je te laisse regarder :
http://fr.php.net/manual/fr/function.my ... -array.php
voila

Posté : 11 mai 2005, 17:11
par zeus
Donne nous la conception de ta bdd et le bout de code qui bloque stp
Posté : 11 mai 2005, 17:11
par lamk
merci, mais j'avais déjà regardé la dessus

Posté : 11 mai 2005, 17:17
par lamk
$prod = "SELECT * FROM produit WHERE p_nom='".$_POST['liste']."' ORDER BY p_nom ASC";
$r_prod=mysql_query("$prod") or die("Invalid query : ".mysql_error());
while ($r = mysql_fetch_array($r_prod))
{
$r_nom = $r[0]; $r_ref = $r[1];
$r_datec = $r[2]; $r_dated = $r[3]; $r_datem1 = $r[4]; $r_datem2 = $r[5]; $r_datem3 = $r[6];$r_ao_125 = $r[7]; $r_ao_250 = $r[8]; $r_ao_500 = $r[9]; $r_ao_1000 = $r[10]; $r_ao_2000 = $r[11]; $r_ao_4000 = $r[12];$r_ato_100 = $r[13]; $r_ato_125 = $r[14]; $r_ato_160 = $r[15]; $r_ato_200 = $r[16]; $r_ato_250 = $r[17]; $r_ato_315 = $r[18];$r_ato_400 = $r[19]; $r_ato_500 = $r[20]; $r_ato_630 = $r[21]; $r_ato_800 = $r[22]; $r_ato_1000 = $r[23]; $r_ato_1250 = $r[24];$r_ato_1600 = $r[25]; $r_ato_2000 = $r[26]; $r_ato_2500 = $r[27]; $r_ato_3150 = $r[28]; $r_ato_4000 = $r[29]; $r_ato_5000 = $r[30];
......}
p_nom varchar(100)
p_ref varchar(100)
p_datec date Non 0000-00-00
p_dated date Oui NULL
p_datem1 date Oui NULL
p_datem2 date Oui NULL
p_datem3 date Oui NULL
p_ao_125 float Oui NULL
p_ao_250 float Oui NULL
p_ao_500 float Oui NULL
p_ao_1000 float Oui NULL
p_ao_2000 float Oui NULL
p_ao_4000 float Oui NULL
p_ato_100 float Oui NULL
p_ato_125 float Oui NULL
p_ato_160 float Oui NULL
.....
en gros c'est ça, je vais pas tout mettre, ça serait trop long
ce qui est bizarre c'est que j'arrive à affiche jusqu'à $r[18]...
Posté : 11 mai 2005, 17:20
par zeus
Verifie dans ta bdd si l'enregistrement 18 ne contient pas des caractères spéciaux ou des co...ries dans ce genres
Posté : 11 mai 2005, 17:21
par lamk
non il y a rien d'incorrect, il n'y qu'une valeur numérique...

Posté : 11 mai 2005, 17:25
par zeus
C'est quoi le nom de cette colonne ?
Posté : 11 mai 2005, 17:25
par rami
Deja pour rendre ton code plus propre je te conseille la fonction
extract , surtout si t'as bcp de champ ds ta table, ce qui a l'air d'etre le cas.
ex:
Code : Tout sélectionner
$prod = "SELECT * FROM produit WHERE p_nom='".$_POST['liste']."' ORDER BY p_nom ASC";
$r_prod=mysql_query("$prod") or die("Invalid query : ".mysql_error());
while ($r = mysql_fetch_array($r_prod))
{
//extract va te créer les variables ayant pour nom celui du champ dans la table
extract($r_prod);
}
