[PHP] Mes variables sont tronquées sans que je le demande ...

Mes variables sont tronquées sans que je le demande ... [PHP] - PHP - Programmation

Marsh Posté le 06-02-2003 à 18:38:29    

PHP est en train de me faire devenir fou, et pourtant je bosse sur un truc on ne peut plus simple :cry:
 

Code :
  1. $tabr = array();
  2. $verif_no1 = mysql_query("SELECT value FROM longman WHERE active = 1" );
  3. while($resultat = mysql_fetch_row($verif_no1)) $tabr[] = $resultat[0];
  4. for($n = 0; $n < sizeof($tabr); $n++) {
  5.     echo "Valeur n° $n => ".$tabr[$n][0]."<BR>";
  6. }


 
Voici le résultat de ce script :
 

Valeur n° 0 => 9
Valeur n° 1 => 2
Valeur n° 2 => 3


 
Hors, quand j'exécute ma requête SQL en ligne de commande, voici le résultat :
 

mysql> SELECT value FROM longman WHERE active = 1
+-------+
| VALUE |
+-------+
|     9 |
|   217 |
|  3104 |
+-------+
3 rows in set (0.00 sec)


 
PHP ne me sort que le premier chiffre de chaque valeur. C'est quoi cette connerie ? :heink:


Message édité par Core 666 le 06-02-2003 à 18:39:36
Reply

Marsh Posté le 06-02-2003 à 18:38:29   

Reply

Marsh Posté le 06-02-2003 à 19:10:59    

on dirait que tu passes que le premier chiffre!
$resultat[0] c un caractère on dirait!
le premier caractère?
 :pt1cable:  
 
t'es sur pour $resultat[0]?
ha non c'est $tabr[$n][0]!!!
tu lis que le premier carac  :bounce:  
faut enlever [0]
 


Message édité par einstein2 le 06-02-2003 à 19:15:39
Reply

Marsh Posté le 06-02-2003 à 19:18:05    

einstein2 a écrit :

on dirait que tu passes que le premier chiffre!
$resultat[0] c un caractère on dirait!
le premier caractère?
 :pt1cable:  
 
t'es sur pour $resultat[0]?
ha non c'est $tabr[$n][0]!!!
tu lis que le premier carac  :bounce:  
faut enlever [0]


Hum, non, $resultat[0] correspond au premier champ de la requete, pas au premier caractère. J'ai quand même essayé de remplacer mysql_fetch_row par mysql_fetch_array et $resultat[0] par $resultat[value] mais c'est pareil :(
 
D'ailleurs, $resultat[] n'aurait aucun sens

Reply

Marsh Posté le 06-02-2003 à 19:18:40    

> D'ailleurs, $resultat[] n'aurait aucun sens
 
Fatal error: Cannot use [] for reading

Reply

Marsh Posté le 06-02-2003 à 19:21:09    

Core 666 a écrit :


$tabr[] = $resultat[0];


 
le problème vient de cette ligne, amha
moi j'aurais mis $tabr=$resultat[0]
 
edit: ha bah non, rien à voir :pt1cable: jsuis fatigué là :(


Message édité par dropsy le 06-02-2003 à 19:28:03
Reply

Marsh Posté le 06-02-2003 à 19:22:11    

> ha non c'est $tabr[$n][0]!!!
 
Oups, je suis confu. Merci einstein2 ! :)


Message édité par Core 666 le 06-02-2003 à 19:23:02
Reply

Marsh Posté le 06-02-2003 à 19:22:32    

et $attr[$n] sans le [0]? t'as essayé?
po grave 90% du temps c une erreur à la con  :sleep:  


Message édité par einstein2 le 06-02-2003 à 19:24:02
Reply

Marsh Posté le 06-02-2003 à 19:24:57    

einstein2 a écrit :

et $attr[$n] sans le [0]? t'as essayé?


Oui, ca marche :D
 
Du coup tu viens de m'apprendre un truc là. Car avec une sélection multichamp, $attr[$n][0] permet bien de lister le premier champ, $attr[$n][1] le second, etc. Je ne savais pas du tout que sur une requete mono champ ca n'affichait qu'un seul caractère :??:


Message édité par Core 666 le 06-02-2003 à 19:25:49
Reply

Marsh Posté le 06-02-2003 à 19:28:26    

ben attr[$n] est un String, et attr[$n][i] le 'ième+1' caractère
du String attr[$n]
en PHP c implicite donc pas trés clair.
 

Core 666 a écrit :


Oui, ca marche :D
 
Du coup tu viens de m'apprendre un truc là. Car avec une sélection multichamp, $attr[$n][0] permet bien de lister le premier champ, $attr[$n][1] le second, etc. Je ne savais pas du tout que sur une requete mono champ ca n'affichait qu'un seul caractère :??:


Message édité par einstein2 le 06-02-2003 à 19:29:04
Reply

Marsh Posté le 06-02-2003 à 19:38:12    

einstein2 a écrit :

ben attr[$n] est un String, et attr[$n][i] le 'ième+1' caractère
du String attr[$n]
en PHP c implicite donc pas trés clair.


 
Je ne le savais pas du tout. Mais ca doit dépendre de la manière dont on construit attr[$n] alors ? Car je viens de le vérifier  à l'instant, et avec une sélection multi-champs i correspond bien au champ n° i, et non au ième+1 caractère :
 

Code :
  1. $tabr = array();
  2. $verif_no1 = mysql_query("SELECT value, cat FROM longman WHERE active = 1" );
  3. while($resultat = mysql_fetch_row($verif_no1)) $tabr[] = $resultat;
  4. for($n = 0; $n < sizeof($tabr); $n++) {
  5.    echo "Valeur n° $n => ".$tabr[$n][0]."<BR>";
  6. }

 
 

Valeur n° 0 => 9  
Valeur n° 1 => 217  
Valeur n° 2 => 3104


Message édité par Core 666 le 06-02-2003 à 19:38:54
Reply

Marsh Posté le 06-02-2003 à 19:38:12   

Reply

Marsh Posté le 06-02-2003 à 19:44:13    

Arg, je viens de comprendre mon erreur par rapport à ma manière de coder habituelle.
 
C'est le $resultat[0] qui met tout en l'air. Avec $tabr[] = $resultat ca fonctionne nickel, même avec utilisant $tabr[$n][0] pour l'affichage :
 

Code :
  1. $tabr = array();
  2.   $verif_no1 = mysql_query("SELECT value FROM longman WHERE active = 1" );
  3.   while($resultat = mysql_fetch_row($verif_no1)) $tabr[] = $resultat[0];
  4.   for($n = 0; $n < sizeof($tabr); $n++) {
  5.         echo "Valeur n° $n => ".$tabr[$n][0]."<BR>";
  6.   }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed