***RESOLU***:/ Arrays à 3 dimensions, tables html et boucles foreach()

***RESOLU***:/ Arrays à 3 dimensions, tables html et boucles foreach() - PHP - Programmation

Marsh Posté le 25-07-2003 à 15:42:27    

Bonjour,
 
Je rencontre un probleme avec le code suivant:
 

Code :
  1. <html>
  2. <head>
  3. <title>Document sans titre</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. </head>
  6. <body>
  7. <p>Int&eacute;gration des jobs.</p>
  8. <p>&nbsp;</p>
  9. <form name="form1" method="post" action="">
  10.   <p>Ref Client:
  11.   <select name="inst" id="inst">
  12.     <?php
  13.  require "Fonctions.inc.php";
  14.  $i = 0;
  15.  $inst = strtoupper($inst);
  16.  $IdInst = getIdInst();
  17.  $LibInst = getLibInst();
  18.  $sizeArrIdInst = count($IdInst);
  19.  print "<option selected>$inst</option>";
  20.  while($i != $sizeArrIdInst)
  21.  {
  22.   if(rtrim($LibInst[$i]) != $inst)
  23.   {
  24.    print '<option value="$IdInst[$i]">'.rtrim($LibInst[$i])."</option>\n";
  25.   }
  26.   $i++;
  27.  }
  28. ?>
  29.   </select>
  30.   </p>
  31.   <br>
  32.   <p>
  33.   <?php
  34.    $date = date("j-M-Y" );
  35. $date = strtoupper($date);
  36. $arrGen = array();
  37. $arrNomJob = array();
  38. $arrHeure = array();
  39. $arrGen = SearchLine_i("./fichiers/exploit/$fichier","^Batch queue ([A-Z]+_(BATCH|EXPB))","(^)","(^ +Entry)","^ +[0-9]+ +([A-Z_-]+)","( +[A-Z]+ +Holding until $date)","^ +[A-Z]+ + Holding Until [0-9]{2}-[A-Z]{2}-[0-9]{4} ([0-9:.])"," +[A-Z]+ +Holding until $date ([0-9:.]+)" );
  40.       // $fichier        | $regs1                  ||$regs2|  | $regs3   | | $regs4     |   | $regs5       | | $regs6                |  | $regs7                                |
  41. foreach($arrGen as $CléNomQueue => $NomQueue)
  42. {
  43.  // impression du nom de queue
  44.  print "<br><strong><u>$CléNomQueue:</u></strong>\n";
  45.     print '<input name="hiddenField" type="hidden" value="NOMJEU">'."\n";
  46.  // création du tableau
  47.     print '<table width="60%" border="1">'."\n";
  48.     print '<tr bgcolor="#CCCCCC">'."\n";
  49.    print '  <td width="61%"><div align="center">Job </div></td>'."\n";
  50.       print '  <td width="22%"><div align="center">Heure</div></td>'."\n";
  51.      print '  <td width="17%"><div align="center">Au planning</div></td>'."\n";
  52.      print "</tr>\n";
  53.  foreach($NomQueue as $NomJob)
  54.  {
  55.   print "<tr>\n";
  56.        print "  <td>|$NomJob|</td>\n";
  57. /*    foreach($NomJob as $Heure)
  58.   {
  59.    print "  <td><div align=\"center\">****$Heure****</div></td>\n";
  60.   }
  61.       print '  <td><div align="center">'."\n";
  62.       print "      <input type=\"checkbox\" name=\"checkbox\" value=\"au_planning\">\n";
  63.       print '    </div></td>'."\n";
  64.        print '</tr>'."\n";
  65. */  }
  66.     print '</table>'."\n";
  67. }
  68.   ?>
  69.    <p align="center">
  70.     <input type="submit" name="Submit" value="Envoyer">
  71.   </p>
  72. </form>
  73. </body>
  74. </html>


 
et
 

Code :
  1. <?php
  2. function SearchLine_i($fichier,$regs1,$regs2,$regs3,$regs4,$regs5,$regs6,$regs7)
  3. {
  4. $handle = fopen($fichier,"r" );
  5. $arrGen = array();
  6. $arrNomJob = array();
  7. $arrNomQueue = array();
  8. $arrHeure = array();
  9. $GotLine = fgets($handle);
  10. $arrHeure = array ();
  11. $arrGen[$arrNomQueue[$arrHeure[1]]] = array ();
  12. while(!feof($handle))
  13. {
  14.  if(ereg($regs1,$GotLine,$arrNomQueue))
  15.  { // Recherche de Batch queue
  16.   $GotLine = fgets($handle);
  17.   $arrGen[$arrNomQueue[1]] = array();
  18.   if(ereg($regs2,$GotLine))
  19.   { // Recherche d'un saut de ligne
  20.    $GotLine = fgets($handle);
  21.    if(ereg($regs3,$GotLine))
  22.    { // Recherche de Entry
  23.     $GotLine = fgets($handle);
  24.     $GotLine = fgets($handle);
  25.      while(ereg($regs4,$GotLine,$arrNomJob))
  26.      { // Recherche et extraction du nom de job
  27.       if(strlen($arrNomJob[1]) > 15)
  28.       { // Pour les lignes trop longues
  29.        $GotLine = fgets($handle);
  30.        if(ereg($regs5,$GotLine))
  31.        { // Verif date
  32.         ereg($regs6,$GotLine,$arrHeure);
  33.         array_push($arrGen[$arrNomQueue[1]],$arrNomJob[1]);
  34.         array_push($arrGen[$arrNomQueue[$arrHeure[1]]],$arrHeure[1]);
  35.        }
  36.       }
  37.       else
  38.       {
  39.        if(ereg($regs5,$GotLine))
  40.        { // Verif date
  41.         ereg($regs7,$GotLine,$arrHeure);
  42.         array_push($arrGen[$arrNomQueue[1]],$arrNomJob[1]);
  43.         array_push($arrGen[$arrNomQueue[$arrHeure[1]]],$arrHeure[1]);
  44.        }
  45.       }
  46.       $GotLine = fgets($handle);
  47.      }
  48.    }
  49.     else
  50.    { //Si Entry pas trouvé, on recommence la boucle
  51.     $arrHeure[1] = 'n/a';
  52.     array_push($arrGen[$arrNomQueue[1]],"Pas de jobs positionnés en attente dans cette queue.<br>\n" );
  53.     array_push($arrGen[$arrNomQueue[$arrHeure[1]]],$arrHeure[1]);
  54.    }
  55.   }
  56.  }
  57.  else
  58.   { // Si Batch queue pas trouvé, on passe à la ligne d'après et on recommence la boucle
  59.    $GotLine = fgets($handle);
  60.   }
  61. }
  62. return $arrGen;
  63. }
  64. ?>


 
mon probleme est lié au tableau a 3 dimensions. je n'arrive pas a le remplir dans la fonction avec le array_push(). je ne suis aps sur non plus de mes boucles foreach()...
 
la partie analyse des logs avec les expressions regulieres marche tres bien, le pb est uniquement lié aux arrays.
 
 
Merci de l'aide que vous pourrez m'apporter :)


Message édité par peewai le 28-07-2003 à 15:01:05
Reply

Marsh Posté le 25-07-2003 à 15:42:27   

Reply

Marsh Posté le 25-07-2003 à 15:51:21    

foreach interne :  
$Job à la place de $HeureJob
 
Pour les arraypush, je laisses un autre vérifier.

Reply

Marsh Posté le 25-07-2003 à 16:00:54    

oui ca c'est modifié, c'est maintentn comme ca:
 
http://phpdebutant.org/wall610.php

Reply

Marsh Posté le 25-07-2003 à 16:28:37    

peewai a écrit :

oui ca c'est modifié, c'est maintentn comme ca:
 
http://phpdebutant.org/wall610.php

Erreur de compréhension, ce que je voulais dire, c'est que ligne 59 tu affichais le titre de l'élement mais a la ligne 60,  tu fesais un foreach sur le titre et pas sur le contenu.
IL falait pas faire une modif ligne 56 mais une ligne 60. ;)
 
Bon, on peut pas dire que j'avais fait une explication claire tout à l'heure. ;)
 
Heu, pour tes array_push, je vois pas comment tu comptes obtenir un tableau a 3 dimmensions. Là, je vois que 2. (tout les [] sont imbriqué et pas l'un d'entre eux derrière les autres)

Reply

Marsh Posté le 25-07-2003 à 16:40:37    

oui, je ne suis pas bien sur de mon coup sur les array_push!
 
je m'y perds completement avec les arrays multidimensionnels :/

Reply

Marsh Posté le 25-07-2003 à 16:47:11    

3 dimensions ce serait pas trop ? étant donné qu'on a encore des écrans à 2 dimensions, ce serait pas ça le problème ? tu perds une dimension à l'affichage je pense
ton code marchera surement avec des écrans 3D, en relief quoi !


Message édité par noldor le 25-07-2003 à 16:47:26
Reply

Marsh Posté le 25-07-2003 à 16:49:40    

:lol:

Reply

Marsh Posté le 25-07-2003 à 16:50:38    

c'est vendredi aprem, j'avais besoin de me détendre  ;)

Reply

Marsh Posté le 25-07-2003 à 17:09:29    

moi ca me fait pas trop rire, chu pas mal dans la merde :(

Reply

Marsh Posté le 28-07-2003 à 10:05:40    

:bounce:

Reply

Marsh Posté le 28-07-2003 à 10:05:40   

Reply

Marsh Posté le 28-07-2003 à 11:17:43    

maj du code

Reply

Marsh Posté le 28-07-2003 à 12:14:20    

:cry:

Reply

Sujets relatifs:

Leave a Replay

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