php tableau

php tableau - Programmation

Marsh Posté le 27-06-2001 à 12:11:37    

comment puis je faire pour rentrer des données dans un tabelau multidimension en utilisant la fonction odbc_fetch_into
je fais un requete et je l'execute et je recupere le resultat dans un tabelau de chaque ligne de la requete avec la fonction ci-dessus
BREF:
je voudrais faire un tableau multidimension avec toutes les données de la requete à l'interieur pour pouvoir les reutiliser plus facilement

Reply

Marsh Posté le 27-06-2001 à 12:11:37   

Reply

Marsh Posté le 27-06-2001 à 13:42:50    

UP

Reply

Marsh Posté le 27-06-2001 à 13:49:40    

Exemple :  

Code :
  1. <?php
  2. $a[] = array( "01", "02", "03", "04", "05" );
  3. $a[] = array( "11", "12", "13", "14", "15" );
  4. $a[] = array( "21", "22", "23", "24", "25" );
  5. for ($i=0; $i<count($a); $i++ )
  6. {
  7. for ($j=0; $j<count($a[$i]); $j++ )
  8.  echo($a[$i][$j] . " - " );
  9. echo("<br>" );
  10. }
  11. ?>


 
Cet exemple affiche :  

Code :
  1. 01 - 02 - 03 - 04 - 05 -
  2. 11 - 12 - 13 - 14 - 15 -
  3. 21 - 22 - 23 - 24 - 25 -


 
Donc pour ton odbc_fetch_into, il suffit que tu passe $MonTableau[] au lieu de $MonTableau. A chaque lecture de ligne, elle sera ajoutée à $MonTableau...
 
OK ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-06-2001 à 14:31:34    

ok mais cela ne marche pas

Reply

Marsh Posté le 27-06-2001 à 14:31:40    

ok mais cela ne marche pas

Reply

Marsh Posté le 27-06-2001 à 14:37:45    

autre idée?

Reply

Marsh Posté le 27-06-2001 à 15:08:12    

Un peut d'immagination que diable !
 

Code :
  1. while(...)
  2. {
  3.     odbc_fetch_into(... , $TempTab );
  4.     $MonTableau[] = $TempTab;
  5. }


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-06-2001 à 15:28:31    

tu sais je debute sur php je n'y connais absoulemnt rien en php
tu evalue comment le tableau?

Reply

Marsh Posté le 27-06-2001 à 16:02:11    

Désolé, mais là c'est moi qui comprend pas ? ? ?
 
Qu'est-ce que tu entend par "évaluer le tableau" ?
 
Si il s'agit de le lire, y'a un exemple dans ma première réponse.
 
Sinon, (rappel, en php, y'a pas de déclaration de variable) petit cours sur les tableaux...
 
$taba[5]="toto";   Cette ligne crée un tableau $taba dont seul le 5eme élément éxiste !
 
$tabb[BONJOUR]="toto";   Cette ligne crée un tableau $tabb qui  ne contient qu'un seul élément d'indice 0 ou BONJOUR ! Oui, en php, on peut utiliser ce qu'on veut comme indice dans un tableau. Ca s'appelle alors un tableau associatif.
 
$tabc[]="toto";   Cette ligne crée un tableau $tabc dont le seul élément est accessible par l'indice 0.
 
$tabc[]="titi"; Cette ligne AJOUTE un élément d'indice 1 dans le tableau $tabc.
 
$tabd[] = $tabc; Cette ligne crée un tableau $tabd à deux dimensions contenant :
$tabd[0][0] -> "toto"
$tabd[0][1] -> "titi"
Le contenu de $tabd[0] est une copie (un clone) de $tabc. Ce n'est pas une référence (comme en CLIPPER par exemple). Changer le contenu de $tabc[1] ne change pas celui de $tabd[0][1].
 
En fait, les tableaux PHP sont à autant de dimension que tu veux. Mais c'est pas la bonne manière de voir les choses. En fait, il vaut mieux considérer que $tab[0] est une variable contenant un tableau. Et ansi de suite. Les tableaux en PHP ne sont pas Carré ou Cubique ou ...  
Je peut écrire :
$tab[0][1] = "a";
$tab[0][2] = "b";
$tab[0][3] = 36;
$tab[1] = "toto";
$tab[25][3][6] = "Planqué cette chaîne ! ! !";
C'est plus des listes chaîneés qu'autre choses...
 
ENCORE ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-06-2001 à 16:07:09    

voici mon code
$idresult=odbc_exec($connection,"SELECT * FROM GCPHLFAC WHERE GNUFAC=1" );  
$nblign=0;
 
for ($i=1;odbc_fetch_row($idresult,$i);$i++)
    {$nblign++;}  
while ($i<$nblign)
{
$i++;
 odbc_fetch_into($idresult,0,$TempTab);
$monTableau[]=$TempTab;
}
printf ($monTableau[0][0]);

Reply

Marsh Posté le 27-06-2001 à 16:07:09   

Reply

Marsh Posté le 27-06-2001 à 16:08:07    

et il ne m'affiche rien

Reply

Marsh Posté le 27-06-2001 à 16:17:39    

Dans odbc_fetch_into(), le tableau doit-être passé par référence avec l'opérateur &. Comma çà :
 
odbc_fetch_into($idresult,0,&$TempTab);


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-06-2001 à 16:21:23    

D'autre part, je pense que c'est :
odbc_fetch_into($idresult,$i,&$TempTab);  
que tu veux faire et pas :
odbc_fetch_into($idresult,0,&$TempTab);


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-06-2001 à 16:34:32    

ben euhhhh cela marche pas et je ne sais toujours pas pourquoi cela va pas

Reply

Marsh Posté le 27-06-2001 à 16:51:35    

Essaye comme çà (sans fetch_into) :  

Code :
  1. $idresult=odbc_exec($connection,"SELECT * FROM GCPHLFAC WHERE GNUFAC=1" ); 
  2. // Récuprération du nombre de champs
  3. $nf = odbc_num_fields($idresult);
  4. while( $ligne=odbc_fetch_row( $idresult ) )
  5. {
  6. $i=0;
  7. $temp = ''; // Réinitialisation du tableau temporaire
  8. while ($i < $nf)
  9. {
  10.  $i++;
  11.  $temp[] = odbc_result( $result, $i );
  12. }
  13. $monTableau[] = $Temp;
  14. }
  15. print( $monTableau[0][0] );


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-06-2001 à 17:01:53    

cela affiche rien du tout  
:-(

Reply

Marsh Posté le 27-06-2001 à 17:08:55    

Vérifications : Y'a quoi dans la première colonne de la première ligne de "SELECT * FROM GCPHLFAC WHERE GNUFAC=1" ?
 
Ajoute un echo $nf; pour voir combien de champs il trouve...
 
Ajoute un echo count($monTableau); avant le print pour voir combien de lignes ont été trouvées.
 
Affiche $idresult...
 
...

 

[edtdd]--Message édité par Mara's dad--[/edtdd]


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-06-2001 à 17:14:05    

80
80
Resource id #3
 
et dans la première colone il ya 1 1 2 2

Reply

Marsh Posté le 27-06-2001 à 17:21:50    

Si t'as recopié mon code, y'a une erreur :  
Faut mettre $temp[] = odbc_result( $idresult, $i );  
 
Sinon,
Que te retourne :  

Code :
  1. for ($i=0; $i<count($monTableau); $i++ )
  2. {
  3.    for ($j=0; $j<count($monTableau[$i]); $j++ )
  4.       echo( $monTableau[$i][$j] . " - " );
  5.    echo("<br>" );
  6. }


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-06-2001 à 17:28:49    

j'avais bine fait le changement de ton erreur
et pour la boucle du tableau il ne maffiche rien mm pas le retour à la ligne dans la boucle à mon avis il ne fais mm pas la boucle une seule fois

Reply

Marsh Posté le 27-06-2001 à 17:36:23    

Ben là, faut me montrer ton code...
 
Et ta connexion ODBC, t'es certain qu'elle marche ???


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-06-2001 à 17:39:21    

Et un :
echo ( odbc_result( $result, $i ) . "<br>" );
après $temp[] = odbc_result( $result, $i );  
 
Ca fait quoi ?
 
Si çà fait rien, c'est que ta requête est foireuse...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-06-2001 à 18:09:23    

merci bien cela marche  
je peux te joindre comment si j'ai encore des pb?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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