Michael W.: 2 schleifen ineinander (thread übernahme)

Das war das letzte, bis jetzt unbeantwortete, posting, das ich aus angst, es im archiv unbeantowrtet wiederzufinden, poste
---------------------------------------------------------------------

so das sagt er bei mir:

-------------------------------------------------

Server:.

Warning: Variable passed to reset() is not an array or object in /usr/local/httpd/htdocs/rwzadm/menu/support/hardware/rwz-check.php on line 28

Warning: Variable passed to each() is not an array or object in /usr/local/httpd/htdocs/rwzadm/menu/support/hardware/rwz-check.php on line 29

Server:..

Warning: Variable passed to each() is not an array or object in /usr/local/httpd/htdocs/rwzadm/menu/support/hardware/rwz-check.php on line 29

Server:te-pfu01.log
USER=doerrre

Processor: Intel Pentium with MMX-201
CPU Clock Speed: 201 MHz
Extended Memory: 31 MB (31 MB Free)
C: 1222 MB 610 MB 612 MB Fixed Disk

--------------------------------------------------

und dann halt so wie es sein soll.

ist das script in ordnung ???:

--------------------------------

<?php
$verzeichnis = './server';
$dir=opendir($verzeichnis);
while ($file = readdir ($dir))
  if (!is_dir($datei)){
    $files[] = $file;
echo $file;
}
closedir($dir);
if (is_array($files)){
foreach($files as $handle)
{
$datei = file($verzeichnis."/".$handle);
print "<br><hr><I><b>Server:<U>".$handle."</b></I></U><hr><br>";
$a = "USER=";
$b = " Processor: ";
$c = " CPU Clock Speed: ";
$d = " Extended Memory: ";
$e = "Fixed Disk";
for($i=0;$i<count($datei);$i++)
{
if(eregi($b,$datei[$i])) $array[0][] = $datei[$i];
if(eregi($a,$datei[$i])) $array[1][] = $datei[$i];
if(eregi($e,$datei[$i])) $array[4][] = $datei[$i];
if(eregi($d,$datei[$i])) $array[3][] = $datei[$i];
if(eregi($c,$datei[$i])) $array[2][] = $datei[$i];
}
reset($array);
while(list($key,$val)=each($array[0])){
print "<b>";
echo $array[1][$key];
print "</b><br><br>";
echo $val;
print "<br>";
echo $array[2][$key];
print "<br>";
echo $array[3][$key];
print "<br>";
echo $array[4][$key];
print "<br><hr>";
}
print "<br><br>";
}
}else
{
print "ERROR - Script konnte nicht ausgeführt werden.";
}
?>

--------------------------

???????????

Danke.

  1. Moin!

    ist das script in ordnung ???:

    Wohl nicht, wenn es Fehler ausgibt.

    Das Problem dürfte darin bestehen, dass du die beiden Directory-Einträge "." und ".." nicht rausfilterst.

    Ganz dumm gefragt: Du willst _Files_ aus dem Verzeichnis auslesen. Warum prüfst du dann mit

    if (!is_dir($datei)){

    ob der Verzeichniseintrag _kein_ Directory ist? Warum prüfst du nicht einfach mit
    if (is_file($datei)){
    ob der Verzeichniseintrag eine _Datei_ ist - die du dann lesen kannst. Wahlweise kannst du $datei auch auf Identität mit "." und ".." prüfen und diese Einträge dann überspringen.

    Ansonsten: Dein Code ist dermaßen mieserabel zu lesen, dass es absolut keine Freude ist. Schon mal was von "Einrücken" gehört? Schon mal was von "Schleifen und IF-Konstrukte _immer_ klammern, auch wenn technisch nicht notwendig!" gehört? Man kriegt dafür zwar nicht mehr Geld, und Arbeit macht es auch - es erleichtert aber die Übersicht über das Skript ganz enorm und verhindert Fehler. Halte dich mal daran und präsentiere bitte nicht wieder so eine Bleiwüste.

    - Sven Rautenberg

    1. ist das script in ordnung ???:

      Wohl nicht, wenn es Fehler ausgibt.

      das war auf das kopieren des textes des vorletzten postings von bjoern bezogen.

      Das Problem dürfte darin bestehen, dass du die beiden Directory-Einträge "." und ".." nicht rausfilterst.

      Warum prüfst du dann mit

      if (!is_dir($datei)){
      ob der Verzeichniseintrag _kein_ Directory ist? Warum prüfst du nicht einfach mit
      if (is_file($datei)){

      das hatten wir vorher und da kam bloß eine weiße seite.

      Ansonsten: Dein Code ist dermaßen mieserabel zu lesen, dass es absolut keine Freude ist. Schon mal was von "Einrücken" gehört? Schon mal was von "Schleifen und IF-Konstrukte _immer_ klammern, auch wenn technisch nicht notwendig!" gehört? Man kriegt dafür zwar nicht mehr Geld, und Arbeit macht es auch - es erleichtert aber die Übersicht über das Skript ganz enorm und verhindert Fehler. Halte dich mal daran und präsentiere bitte nicht wieder so eine Bleiwüste.

      mach mal halblang.

      1. Moin!

        Das Problem dürfte darin bestehen, dass du die beiden Directory-Einträge "." und ".." nicht rausfilterst.

        Warum prüfst du dann mit

        if (!is_dir($datei)){
        ob der Verzeichniseintrag _kein_ Directory ist? Warum prüfst du nicht einfach mit
        if (is_file($datei)){
        das hatten wir vorher und da kam bloß eine weiße seite.

        Dann ist der Dateiname in $datei falsch. Typischer Fehler wäre, dass das Verzeichnis fehlt. Schon mal is_file($verzeichnis."/".$datei) probiert?

        Lies auch die Anmerkungen zu is_file() bei php.net und versuchs vielleicht auch mit file_exists().

        Ansonsten: Dein Code ist dermaßen mieserabel zu lesen, dass es absolut keine Freude ist. Schon mal was von "Einrücken" gehört? Schon mal was von "Schleifen und IF-Konstrukte _immer_ klammern, auch wenn technisch nicht notwendig!" gehört? Man kriegt dafür zwar nicht mehr Geld, und Arbeit macht es auch - es erleichtert aber die Übersicht über das Skript ganz enorm und verhindert Fehler. Halte dich mal daran und präsentiere bitte nicht wieder so eine Bleiwüste.

        mach mal halblang.

        Hast du das Problem oder ich? Wenn ich halblang machen soll, dann mache ich lieber gar nicht - das spart mir meine Zeit und löst dein Problem nicht. Du hast die Wahl!

        - Sven Rautenberg

        1. Lies auch die Anmerkungen zu is_file() bei php.net und versuchs vielleicht auch mit file_exists().

          die existiert auf jeden fall da wir das array mit einem echo geprüft hatten und ich habe auch eine

          <?php
          $verzeichnis = './server';
          if($verzeichnis."/".$datei){
          $dir=opendir($verzeichnis);
          .
          .
          .
          }
          ?>

          abfrage gemacht.

          dadran liegt es nicht.

          hier nochmal das script und darauf folgend deren ausgabe:

          script:
          -------------------------

          <?php
          $verzeichnis = './server';
          if($verzeichnis."/".$datei){
          $dir=opendir($verzeichnis);
          while ($file = readdir ($dir))
            if (!is_dir($datei)){
              $files[] = $file;
          }
          closedir($dir);
          if (is_array($files)){
          foreach($files as $handle)
          {
          $datei = file($verzeichnis."/".$handle);
          print "<br><hr><I><b>Server:<U>".$handle."</b></I></U><hr><br>";
          $a = "USER=";
          $b = " Processor: ";
          $c = " CPU Clock Speed: ";
          $d = " Extended Memory: ";
          $e = "Fixed Disk";
          for($i=0;$i<count($datei);$i++)
          {
          if(eregi($b,$datei[$i])) $array[0][] = $datei[$i];
          if(eregi($a,$datei[$i])) $array[1][] = $datei[$i];
          if(eregi($e,$datei[$i])) $array[4][] = $datei[$i];
          if(eregi($d,$datei[$i])) $array[3][] = $datei[$i];
          if(eregi($c,$datei[$i])) $array[2][] = $datei[$i];
          }
          reset($array);
          while(list($key,$val)=each($array[0])){
          print "<b>";
          echo $array[1][$key];
          print "</b><br><br>";
          echo $val;
          print "<br>";
          echo $array[2][$key];
          print "<br>";
          echo $array[3][$key];
          print "<br>";
          echo $array[4][$key];
          print "<br><hr>";
          }
          print "<br><br>";
          }
          }
          }
          ?>

          -----------------------------

          ausgabe:
          -----------------------------

          Server:.

          Warning: Variable passed to reset() is not an array or object in /usr/local/httpd/htdocs/rwzadm/menu/support/hardware/rwz-check.php on line 28

          Warning: Variable passed to each() is not an array or object in /usr/local/httpd/htdocs/rwzadm/menu/support/hardware/rwz-check.php on line 29

          Server:..

          Warning: Variable passed to each() is not an array or object in /usr/local/httpd/htdocs/rwzadm/menu/support/hardware/rwz-check.php on line 29

          Server:te-pfu01.log
          USER=doerrre

          Processor: Intel Pentium with MMX-201
          CPU Clock Speed: 201 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 1222 MB 610 MB 612 MB Fixed Disk
          USER=mausfr

          Processor: Intel Pentium-133
          CPU Clock Speed: 133 MHz
          Extended Memory: 15 MB (15 MB Free)
          C: 1220 MB 460 MB 760 MB Fixed Disk

          Server:f-aac01.log

          Server:te-kus01.log
          USER=buchhoec

          Processor: Intel Pentium-133
          CPU Clock Speed: 133 MHz
          Extended Memory: 15 MB (15 MB Free)
          C: 2039 MB 737 MB 1302 MB Fixed Disk
          USER=raddatge

          Processor: Intel CeleronA-334
          CPU Clock Speed: 334 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 2039 MB 1080 MB 959 MB Fixed Disk

          Server:f-und01.log
          USER=ammannth

          Processor: Intel Celeron-268
          CPU Clock Speed: 268 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 2039 MB 680 MB 1359 MB Fixed Disk
          USER=beckerel

          Processor: Cyrix Cx486DX2-80
          CPU Clock Speed: 80 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 809 MB 227 MB 582 MB Fixed Disk
          USER=gardtol

          Processor: AMD Athlon(tm) (Thunderbird)-1041
          CPU Clock Speed: 1041 MHz
          Extended Memory: 127 MB (64 MB Free)
          C: 19530 MB 818 MB 18 GB RWZ Fixed Disk
          USER=hammenvo

          Processor: Cyrix Cx486DX2-66
          CPU Clock Speed: 66 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 813 MB 554 MB 259 MB Fixed Disk
          USER=stellwuw

          Processor: Intel Pentium-167
          CPU Clock Speed: 167 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 1222 MB 628 MB 594 MB Fixed Disk
          USER=wallicho

          Processor: Intel Pentium-133
          CPU Clock Speed: 133 MHz
          Extended Memory: 15 MB (15 MB Free)
          C: 1222 MB 628 MB 594 MB Fixed Disk
          USER=zockca

          Processor: Intel CeleronA-468
          CPU Clock Speed: 468 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 8213 MB 2404 MB 5809 MB Fixed Disk

          Server:f-wie01.log
          USER=burkhagu

          Processor: Intel CeleronA-501
          CPU Clock Speed: 502 MHz
          Extended Memory: 63 MB (63 MB Free)
          C: 8040 MB 806 MB 7234 MB RWZ Fixed Disk
          USER=jusekga

          Processor: AMD Duron(tm)-834
          CPU Clock Speed: 834 MHz
          Extended Memory: 127 MB (64 MB Free)
          C: 19530 MB 1095 MB 18 GB RWZ Fixed Disk
          USER=kleinad

          Processor: Intel Pentium-201
          CPU Clock Speed: 201 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 809 MB 319 MB 490 MB Fixed Disk
          USER=krausewe

          Processor: AMD K6-2-402
          CPU Clock Speed: 402 MHz
          Extended Memory: 61 MB (61 MB Free)
          C: 6138 MB 591 MB 5547 MB Fixed Disk
          USER=kuboscpe

          Processor: Intel Pentium with MMX-167
          CPU Clock Speed: 167 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 2039 MB 1091 MB 948 MB Fixed Disk
          USER=langch

          Processor: AMD Athlon(tm) (undistinguished model)-1244
          CPU Clock Speed: 1244 MHz
          Extended Memory: 255 MB (64 MB Free)
          C: 39070 MB 1503 MB 36 GB RWZ Fixed Disk
          USER=ludwigha

          Processor: AMD X5+ (Am5x86+)-133
          CPU Clock Speed: 133 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 2039 MB 661 MB 1378 MB Fixed Disk
          USER=maedrith

          Processor: AMD Duron(tm)-834
          CPU Clock Speed: 834 MHz
          Extended Memory: 127 MB (64 MB Free)
          C: 19530 MB 1381 MB 17 GB RWZ Fixed Disk
          USER=mahrru

          Processor: Intel Pentium-133
          CPU Clock Speed: 133 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 2039 MB 556 MB 1483 MB Fixed Disk
          USER=meininhe

          Processor: Cyrix Cx486DX2-80
          CPU Clock Speed: 80 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 1220 MB 385 MB 835 MB Fixed Disk
          USER=mertenin

          Processor: Intel CeleronA-335
          CPU Clock Speed: 335 MHz
          Extended Memory: 63 MB (63 MB Free)
          C: 9529 MB 953 MB 8576 MB RWZ Fixed Disk
          USER=produkt

          Processor: Intel Pentium-167
          CPU Clock Speed: 167 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 4094 MB 661 MB 3433 MB Fixed Disk
          USER=riegelha

          Processor: Intel Pentium-167
          CPU Clock Speed: 167 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 2039 MB 820 MB 1219 MB Fixed Disk
          USER=waltermn

          Processor: Intel Pentium with MMX-201
          CPU Clock Speed: 201 MHz
          Extended Memory: 15 MB (15 MB Free)
          C: 19460 MB 914 MB 18 GB RWZ Fixed Disk
          USER=wienkehe

          Processor: AMD Duron(tm)-834
          CPU Clock Speed: 834 MHz
          Extended Memory: 127 MB (64 MB Free)

          Server:ra-kat01.log

          Server:te-als01.log

          Server:te-wet01.log
          USER=blumenhe

          Processor: Intel Pentium with MMX-201
          CPU Clock Speed: 201 MHz
          Extended Memory: 31 MB (31 MB Free)
          C: 1619 MB 1122 MB 497 MB RWZ Fixed Disk
          USER=kippkl

          Processor: Intel Pentium-134
          CPU Clock Speed: 134 MHz
          Extended Memory: 47 MB (47 MB Free)
          C: 1220 MB 1196 MB 24 MB Fixed Disk
          USER=splettdi

          Processor: Intel Pentium with MMX-201
          CPU Clock Speed: 201 MHz
          Extended Memory: 31 MB (25 MB Free)

          Server:f-koe01.log
          USER=ahlersmi

          Processor: AMD Duron(tm)-946
          CPU Clock Speed: 946 MHz
          Extended Memory: 34 MB (64 MB Free)
          C: 2047 MB 1440 MB 607 MB _ Fixed Disk
          USER=altmanth

          Processor: Intel CeleronA-431
          CPU Clock Speed: 430 MHz
          Extended Memory: 63 MB (63 MB Free)
          D: 5997 MB 0 MB 5997 MB Fixed Disk
          USER=arndthe

          Processor: AMD Athlon(tm) (Thunderbird)-1041
          CPU Clock Speed: 1041 MHz
          Extended Memory: 127 MB (64 MB Free)
          C: 19530 MB 704 MB 18 GB RWZ Fixed Disk
          USER=at1azubi

          Processor: Intel CeleronA-431
          CPU Clock Speed: 431 MHz
          Extended Memory: 63 MB (63 MB Free)
          C: 2047 MB 816 MB 1231 MB Fixed Disk

          .
          .
          .

          und so weiter

          Danke

          1. Lies auch die Anmerkungen zu is_file() bei php.net und versuchs vielleicht auch mit file_exists().
            die existiert auf jeden fall da wir das array mit einem echo geprüft hatten und ich habe auch eine

            <?php
            $verzeichnis = './server';
            if($verzeichnis."/".$datei){
            $dir=opendir($verzeichnis);
            .
            .
            .
            }
            ?>

            abfrage gemacht.

            dadran liegt es nicht.

            Dennoch versuchst du, die Datei "." und die Datei ".." zu öffnen und deren Inhalt auszugeben, was in den Fehlermeldungen resultiert.

            Schalte das ab, und du hast keine Fehlermeldungen mehr. Ich hoffe, du weißt, was das für zwei Dateien sind. Sie kommen in jedem Unterverzeichnis vor. Tipp: "cd ." und "cd ..".

            - Sven Rautenberg

            1. bin ich jetzt dumm ?
              wo in dem script versuche ich das ?:

              <?php
              $verzeichnis = './server';
              if($verzeichnis."/".$datei){
              $dir=opendir($verzeichnis);
              while ($file = readdir ($dir))
                if (!is_dir($datei)){
                  $files[] = $file;
              }
              closedir($dir);
              if (is_array($files)){
              foreach($files as $handle)
              {
              $datei = file($verzeichnis."/".$handle);
              print "<br><hr><I><b>Server:<U>".$handle."</b></I></U><hr><br>";
              $a = "USER=";
              $b = " Processor: ";
              $c = " CPU Clock Speed: ";
              $d = " Extended Memory: ";
              $e = "Fixed Disk";
              for($i=0;$i<count($datei);$i++)
              {
              if(eregi($b,$datei[$i])) $array[0][] = $datei[$i];
              if(eregi($a,$datei[$i])) $array[1][] = $datei[$i];
              if(eregi($e,$datei[$i])) $array[4][] = $datei[$i];
              if(eregi($d,$datei[$i])) $array[3][] = $datei[$i];
              if(eregi($c,$datei[$i])) $array[2][] = $datei[$i];
              }
              reset($array);
              while(list($key,$val)=each($array[0])){
              print "<b>";
              echo $array[1][$key];
              print "</b><br><br>";
              echo $val;
              print "<br>";
              echo $array[2][$key];
              print "<br>";
              echo $array[3][$key];
              print "<br>";
              echo $array[4][$key];
              print "<br><hr>";
              }
              print "<br><br>";
              }
              }
              }
              ?>

              ?????????

              1. bin ich jetzt dumm ?

                Ja, ziemlich.

                wo in dem script versuche ich das ?:

                Dort, wo du schon mit !is_dir() alle Verzeichniseinträge von der Verarbeitung ausschließt.

                Wenn der Eintrag kein Verzeichnis ist und nicht "." heißt und nicht ".." heißt, dann soll er der Dateiliste hinzugefügt werden.

                - Sven Rautenberg

                1. Guten Morgen !
                  Ich frage mich jetzt nur noch - wie kann es passieren - das ein script einwandfrei asugeführt wird, aber trotzdem oben noch 1*1 nd 1*2 Fehlermeldungen zwischen 2 <hr> aufgeführt wird, denn danach kommt die ausgabe so wie ich sie haben will - wie bekomme ich die 3 fehler meldungen weg ?