IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] PHP, Array et réaffichage


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de kagura
    Inscrit en
    Avril 2005
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 360
    Par défaut [Tableaux] PHP, Array et réaffichage
    Bonjour,
    J'ai un probleme avec les tableaux. je remplie mon tableau et quand je veux reafficher le contenu, il ne m affiche que la derniere valeur du tableau. Voila la declaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?
    		$req4 = "select emplacement, commande_web.id_cmd
    			from type_pdt_web, produit_web, pdt_rub, commande_web
    			where type_pdt_web like '%invite%'
    			and type_pdt_web.id_type_pdt = $produit
    			and produit_web.id_type_pdt = type_pdt_web.id_type_pdt
    			and produit_web.id_produit_web = pdt_rub.id_pdt
    			and pdt_rub.id_sup = $support
    			and commande_web.id_cmd = pdt_rub.id_cmd
    			and date_fc >= '$date%'
    			group by emplacement";
    		$res4 = mysql_query($req4);
     
    		for($i=0;$i<$nbr3;$i++)
    		{
    			while($row4 = mysql_fetch_assoc($res4))
    			{
    				$tab[$i][1] = $row4["emplacement"];
    				$tab[$i][2] = $row4["id_cmd"];
    			}
    		}
    	}
    ?>
    Et voila ou je veux mettre les valeurs du tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <table width="90%" border=1 cellspacing=0 bordercolor="#AODOFF" bgcolor="white" align="center">
    	<tr>
    <?
    	for($i=1;$i<$nbr3;$i++)
    	{
    		for($j=1;$j<6;$j++)
    		{
    ?>
    		<td width="20%">&nbsp;<? 
    			if($tab[$i][1]==$j)
    			{
    				$cmd = $tab[$i][2];
    				$req4 = "select *
    						from commande_web, societe
    						where id_cmd = $cmd
    						and commande_web.code_soc = societe.code_soc";
    				$res4 = mysql_query($req4);
    				$row4 = mysql_fetch_assoc($res4);
    				echo "<ins>Emplacement N°:</ins> <strong>".$tab[$i][1]."</strong><br>&nbsp;".$row4["soc_org"]."<br>&nbsp;".preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $row4['date_fc']);
    			}
    		?></td><?
    		}
    		?>
    	</tr>
    ...</tableau>
    Pouvez vous me dire comment regler ce probleme
    Notice: Undefined offset: 2 in c:\program files\easyphp1-8\www\hybride\date_verif.php on line 135
    Alors que j'ai 2 lignes à inserer dans le tableau
    Merci d'avance pour vos reponses.

  2. #2
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    essaye de faire un var_dump de ton tableau, pour voire si il ressemble bien à ce que tu attends
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Membre éprouvé Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    Salut,

    Je pense que la définition des indices n'est pas fai correctement, car parfois ton script ne doit pas rentrer dans le while (celui du premier bloc ou tu définis $tab[$i])

    Cependant le $i continue a s'incrémenter...

    Du coup quand tu parcours $tab tu as peut etre bien 2 lignes mais avec deux indices qui ne se suivent pas...

    Le var_dump te le revelera

    Quand tu boucles imaginons qu'il n'existe que l'indice 1 et 3 ca fait un illegal offset pour l'indice 2

    ++

  4. #4
    Membre éclairé Avatar de kagura
    Inscrit en
    Avril 2005
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 360
    Par défaut
    ça m 'affiche ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(1) { [0]=> array(2) { [1]=> string(1) "3" [2]=> string(3) "431" } }
    juste les dernieres valeurs

  5. #5
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    c'est donc que ton soucis est au niveau de l'affectation, et pas au niveau de l'affichage
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  6. #6
    Membre éclairé Avatar de kagura
    Inscrit en
    Avril 2005
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 360
    Par défaut
    Si j ai une seule valeur 143 => 3, je n aurai aucun probleme ni aucune erreur

  7. #7
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    essaye de remplacer ton affectation par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		$res4 = mysql_query($req4);
     
    		$i=0;
    			while(($row4 = mysql_fetch_assoc($res4)) && ($i<$nbr3))
    			{
    				$tab[$i][1] = $row4["emplacement"];
    				$tab[$i][2] = $row4["id_cmd"];
    				$i++;
    			}
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  8. #8
    Membre éclairé Avatar de kagura
    Inscrit en
    Avril 2005
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 360
    Par défaut
    Citation Envoyé par titoumimi
    c'est donc que ton soucis est au niveau de l'affectation, et pas au niveau de l'affichage
    c a d? dans l insertion dans le tableau??
    mais pourquoi, au moment de l insertion quand j affiche, il m'affiche toutes les valeurs? mais une fois je sors de la boucle, il me donne juste la derniere valeur (bien sur dans une boucle comme celle de l'insertion) ????

  9. #9
    Membre éclairé Avatar de kagura
    Inscrit en
    Avril 2005
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 360
    Par défaut
    merci titoumimi, ça a bien marché
    Mais maintenant, dans mon tableau qui contient 15 cases, 3lignes et 5colonnes, je veux que si $tab[$i][1] vaut le numero de la case, qu il m'affiche les infos dans cette case.
    Par exemple, si $tab[$i][1] = 5, alors dans la case 5, 1ere ligne 5eme colonne, il m'affiche qq données.
    Alors pour cela, j'ai mis ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <table width="90%" border=1 cellspacing=0 bordercolor="#AODOFF" bgcolor="white" align="center">
    	<tr>
    <?
    	for($i=0;$i<$nbr4;$i++)
    	{
    		for($j=0;$j<5;$j++)
    		{
    		?>
    		<td width="20%">&nbsp;<? 
    			if($tab[$i][1]==$j)
    			{
    				$cmd = $tab[$i][2];
    				$req4 = "select *
    						from commande_web, societe
    						where id_cmd = $cmd
    						and commande_web.code_soc = societe.code_soc";
    				$res4 = mysql_query($req4);
    				$row4 = mysql_fetch_assoc($res4);
    				echo "<ins>Emplacement N°:</ins> <strong>".$tab[$i][1]."</strong><br>&nbsp;".$row4["soc_org"]."<br>&nbsp;".preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $row4['date_fc']);
    			}
    		?></td><?
    		}
    		?>
    	</tr>
    	<tr>
    		<?
    		for($j=5;$j<10;$j++)
    		{
    		?>
    		<td width="20%">&nbsp;<? 
    			if($tab[$i][1]==$j)
    			{
    				$cmd = $tab[$i][2];
    				$req4 = "select *
    						from commande_web, societe
    						where id_cmd = $cmd
    						and commande_web.code_soc = societe.code_soc";
    				$res4 = mysql_query($req4);
    				$row4 = mysql_fetch_assoc($res4);
    				echo "<ins>Emplacement N°:</ins> <strong>1</strong><br>&nbsp;".$row4["soc_org"]."<br>&nbsp;".preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $row4['date_fc']);
    			}
    		?></td><?
    		}
    		?>
    	</tr>
    	<tr><?
    		for($j=10;$j<15;$j++)
    		{
    		?>
    		<td width="20%">&nbsp;<? 
    			if($tab[$i][1]==$j)
    			{
    				$cmd = $tab[$i][2];
    				$req4 = "select *
    						from commande_web, societe
    						where id_cmd = $cmd
    						and commande_web.code_soc = societe.code_soc";
    				$res4 = mysql_query($req4);
    				$row4 = mysql_fetch_assoc($res4);
    				echo "<ins>Emplacement N°:</ins> <strong>1</strong><br>&nbsp;".$row4["soc_org"]."<br>&nbsp;".preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $row4['date_fc']);
    			}
    		?></td><?
    		}
    		?>
    	</tr>
    <?
    	}
    ?>
    </table>
    Il marche mais le probleme, c est pour chaque valeur, il doit refaire tout le tableau. c a d, si j ai 2 valeurs, j ai un tableau de 6 lignes et 5 colonnes

  10. #10
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    je ne suis pas sur d'avoir parfaitement compris ton soucis, mais ton code me semble bien redondant...

    Est ce que quelque chose comme ça ne suffirait pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <table>
    <?
    $j = 0;
    while ($j < 1) {
    	echo "<tr>";
    	$i = 0;
    	while ($i<$nbr4) {
    		echo "<td>";
    		//affichage de la valeur de ton tableau $tab[$j][$i]
    		echo "</td>";
    		$i++;
    	}
    	echo "</tr>";
    	$j++;
    }
    ?>
    </table>
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  11. #11
    Membre éclairé Avatar de kagura
    Inscrit en
    Avril 2005
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 360
    Par défaut
    Malheureusement, ça marche pas comme ça.
    De plus, je dois faire de telle sorte que le tableau doit avoir 5 colonnes et 3 lignes (le nombre max des cases sont 15)

  12. #12
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    Citation Envoyé par kagura
    De plus, je dois faire de telle sorte que le tableau doit avoir 5 colonnes et 3 lignes (le nombre max des cases sont 15)
    Donc tu dois faire le tableau au complet d'une manière ou d'une autre...?

    Citation Envoyé par kagura
    Il marche mais le probleme, c est pour chaque valeur, il doit refaire tout le tableau. c a d, si j ai 2 valeurs, j ai un tableau de 6 lignes et 5 colonnes
    ca me mélange un peu
    sinon pour ton tableau la redondance que proposait titoumimi
    tu peux faire un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <table width="90%" border=1 cellspacing=0 bordercolor="#AODOFF" bgcolor="white" align="center">
    <?
    for($i=0;$i<$nbre4;$i++){
      echo'<tr>';
        for($j=0+5*$i;$j<5+5*$i;$j++){
          echo'<td width="20%">&nbsp;';
          if($tab[$i][1]==$j){
    	$cmd = $tab[$i][2];
    	$req4 = "SELECT * ";
    	$req4 .= "FROM commande_web, societe ";
    	$req4 .= "WHERE id_cmd = '".$cmd."' ";
    	$req4 .= "AND commande_web.code_soc = '".societe.code_soc."' ";
     
    	$res4 = mysql_query($req4);
    	$row4 = mysql_fetch_assoc($res4);
    	echo "<ins>Emplacement N°:</ins> <strong>".$tab[$i][1]."</strong><br>&nbsp;".$row4["soc_org"]."<br>&nbsp;".preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $row4['date_fc']);
          } //if
          echo'</td>';
        }//for $j
      echo'</tr>';
    }//for $i
     
    ?>
    </table>
    ca évite de te déclarer 3 for dans ton for des $i
    et de plus la requete était la meme donc..

    sauf qu'encore je sais pas si ca va régler ton trouble

    ....
    (plutard)
    J'ai relu ton probleme et voici une question pour toi
    est ce que tu sais dans quelle ordre sortent tes résultats...de sorte que
    plus haut tu disais si par ex ca égale 5 tu aimerais que la 5e case il y ait de l'information...est ce que par la suite ca peut etre la case 2 et ensuite la 3 pour revenir à la 1 -> 5...2...3...1
    ou encore c'est toujours croissant
    genre 1...4..5...7...9..10 etc ??
    donc dans ce cas la case 2 et 3 seraient vide de meme que la 6..etc

    alors dans ton cas c'est lequel des 2?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tableaux php, array to string
    Par Lekno dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 10/12/2013, 11h52
  2. Réponses: 4
    Dernier message: 18/02/2011, 16h55
  3. [Tableaux] Tableau (array) PHP/ foreach
    Par KOUTO dans le forum Langage
    Réponses: 2
    Dernier message: 01/06/2009, 00h54
  4. Réponses: 4
    Dernier message: 24/09/2005, 09h52
  5. Recupération de tableaux PHP avec PL/pgSQL
    Par moog dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 25/02/2005, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo