Ankündigung

Einklappen
Keine Ankündigung bisher.

Auf array ausserhalb der while-schleife nicht zugreifbar

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Auf array ausserhalb der while-schleife nicht zugreifbar

    Hi zusammen,

    ich habe ein Skript geschrieben, indem ich eine txt Datei auslese und dann mit Hilfe diverser Striung-Funktionen die einzlenen Wörter in ein Array speichere. Innerhalb der while-Schleife kann ich auch einwandfrei auf die auszulesenden Daten zugreifen, sobald ich das aber ausserhalb der while-Schleife mache ist das array leer und ich habe keine Ahnung woran das liegt.

    Hier das Skript:
    Code:
    <?php
    
    
            $pfad1="css.txt";
    		$x=array();
    		$x= file ($pfad1);
    
    		if(file_exists($pfad1))
    		{
      		$x= file ($pfad1);
      		foreach ($x as $e)
      			{
      				$bis1 = $e;
       				$dat1 = $dat1.$bis1;
      			}
    		}
    
    	
    $x = 0;
    $help = 0;
    $na =1;
    
    $wert =  strlen ($dat1);
    
    $datatemp = strpos ($dat1, ",");
    $zahl = $wert - $datatemp;
    $next2 = substr($dat1, 0, -$zahl);
    $webs[x] = $next2;
    $next = $next2;
    
    while ($next != "")
    {
    
    	$econ = substr (strchr ($dat1, $next),$datatemp+1,-1);
    	$wert2 = strlen ($econ);
    	$datatem = strpos ($econ, ",");
    	$zahl2 = $wert2 - $datatem;
     
    	$webs[x] = substr($econ, 0, -$zahl2);
    
    	$datatemp = $datatem;
    
    	$next =$webs[x];
    
    	echo "
    ".$webs[x];
    
    	$x= $x+1;
    	$help = help+1;
    
    }
    
    $x=0;
    
    while ($x <= $help)
    {
    	echo $webs[x];
    	$x=x+1;
    	$help = $help -1;
    }
    
    echo "<div style=\"position:absolute; left:-2px; top:-2px;\">";
    echo "<div style=\"position:absolute; left:108px; top:140px;\">";
    echo "<table border =\"0\" width=\"600\" height=\"300\">";
    echo "<tr><td>Servername:</td><td><input type=\"text\" name=\"server\" value=\"$next2\"></td><td>Recon Passwort:</td><td><input type=\"text\" name=\"Recon\" value =\"$webs[0]\"></td></tr>";
    echo "<tr><td>Players:</td><td><input type=\"text\" name=\"Players\" value=\"$pplayers\"></td><td>Passwort:</td><td><input type=\"text\" name=\"password\" value =\"$ppassword\"></td></tr>";
    echo "<tr><td>Start Map:</td><td><input type=\"text\" name=\"Map\"value =\"$mmap\"></td></tr>";
    echo "<tr><td>Rundenzeit:</td><td><input type=\"text\" name=\"roundtime\" value=\"$rroundtime\"></td></tr>";
    echo "<tr><td>Friendly Fire:</td><td><select name=\"ffire\">
        <option selected>True</option>
        <option>False</option>
       </select></td></tr>";
    echo "<tr><td>Auto Mapchange:</td><td><select name=\"mapchange\">
        <option selected>True</option>
        <option>False</option>
       </select></td></tr>";
    echo "<tr><td>Mapcycle:</td><td><textarea name=\"mapcycle\" rows=\"5\"></textarea></td><td><input type=\"submit\" name=\"mapcyclespeichern\" value=\"Speichern\"<td></tr></form>";
    echo"</table><p align=\"center\">";
    echo"<input type =\"submit\" name=\"status\" value=\"Server Status\"><form  method=\"post\" action=\"join.php\"><input type=\"submit\" name=\"starten\" value=\"Start Server\">";
    echo"<input type=\"submit\" name=\"stoppen\" value=\"Stop Server\">";
    echo"</div>"
    ?>
    Und die zugehörige TXT-Datei:
    Code:
    TGA,therapie,16,partei,cs_office,time,zeit,test,
    Und wenn noch jemand eine Idee hat, warum er immer das letzte Wort nicht ausgibt, wäre das auch sehr toll.

    vielen dank im vorraus

    lg anja


  • #2
    PHP-Code:
    <?php
    $array
    explode("\r\n"chunk_split($text1));
    ?>
    //edit
    Ups, du willst ja Wörter die einzelnen Wörter in einem Array speichern. Das geht auch einfacher:
    PHP-Code:
    <?php
    $string 
    'TGA,therapie,16,partei,cs_office,time,zeit,test, ';
    $array explode(','$string);

    echo 
    '<pre>';
    print_r($array);
    echo 
    '</pre>';
    ?>

    Kommentar


    • #3
      Mh danke für die antwort. das problem an der sache ist, dass ich die daten später wieder in die txt datei speichern will, wenn sie geändert wurden und dass die geänderten daten dann wieder beim nächsten aufruf der seite wieder aus der geänderten txt datei aufgerufen werden sollen. daher kann ich die daten nciht anders einlesen. aber trotzdem danke

      Kommentar


      • #4
        Quatsch mit Soße. Warum sollen die Daten im Feld nicht genauso bearbeitet und benutzt werden können, nur weil sie nicht wild "per Hand" auseinandergeplückt wurden?
        In der Originalversion ist der Code doch total überladen, unübersichtlich und ...einfach seltsam und unwartbar. Alleine schon die ganzen x statt $x, help statt $help usw usw
        Darin liegt übrigens auch das beschriebene Problem begründet.
        $webs[x] = substr($econ, 0, -$zahl2);
        error_reporting(E_ALL) hätte das angezeigt.

        Folgende Funktionen im Handbuch bei http://de2.php.net/manual/en/ nachschlagen:
        file_get_contents
        file_put_contents
        explode
        join

        Kommentar


        • #5
          Und die zugehörige TXT-Datei:
          Hat die TXT-Datei nur eine Zeile ?

          $pfad1="css.txt";
          $x=array();
          $x= file ($pfad1);

          if(file_exists($pfad1))
          {
          $x= file ($pfad1);
          foreach ($x as $e)
          {
          $bis1 = $e;
          $dat1 = $dat1.$bis1;
          }
          }


          $x = 0;
          $help = 0;
          $na =1;
          Dieses Gebilde würde ich nochmal überarbeiten

          Kommentar


          • #6
            erstmal danke für die beiden antworten. Mag sein, dass mein code sehr wirsch und etwas unübersichtlich ist aber, wenn ich

            error_reporting(E_ALL)

            ausführe zeigt er mit leider gar ncihts an Fehlermeldungen an. Ich sehe daher immer noch nciht wo mein Problem liegt. Das "Auseinanderpflügen" des Strings funktioniert ja, nur kann ich wie bereits beschrieben nicht ausserhalb der while-Schleife auf das array zugreifen in der Schleife schon. Und ich weiss wirklich nciht woran das liegen könnte.

            lg anuschka

            Kommentar


            • #7
              Mindestens ein Teil des Problem habe ich schon beschrieben.

              PHP-Code:
              <?php
              error_reporting
              (E_ALL); ini_set('display_errors'true);

              $pfad1="css.txt";
              $x=array();
              $xfile ($pfad1);

              ...
              Und wenn damit keine Warnungen ausgegeben werden, kann ich Dir nicht weiterhelfen.

              Kommentar


              • #8
                Hi, so danke erstmal. hab das Skript überarbeitet und einige Fehler ausgemerzt. Jetzt gibt er mir noch folgende Fehlermeldung, wo ich nicht weiter weiss.

                Vielleicht könnt ihr da nochmal drüber schauen, wäre echt lieb.

                Code:
                error_reporting(E_ALL); ini_set('display_errors', true);
                $dat1 = "";
                $help = 0;
                $na =1;
                
                        $pfad1="css.txt";
                		$x=array();
                		$x= file ($pfad1);
                
                		if(file_exists($pfad1))
                		{
                  		$x= file ($pfad1);
                  		foreach ($x as $e)
                  			{
                  				$bis1 = $e;
                   				$dat1 = $dat1.$bis1;
                  			}
                		}
                
                
                
                $wert =  strlen ($dat1);
                $datatemp = strpos ($dat1, ",");
                $zahl = $wert - $datatemp;
                $next2 = substr($dat1, 0, -$zahl);
                $x = 0;
                $webs[0] = $next2;
                $next = $next2;
                
                
                while ($next != "")
                {
                	$x=1;
                	
                	$econ = substr (strchr ($dat1, $next),$datatemp+1,-1);
                	$wert2 = strlen ($econ);
                	$datatem = strpos ($econ, ",");
                	$zahl2 = $wert2 - $datatem;
                
                	$webs[$x] = substr($econ, 0, -$zahl2);
                
                	$datatemp = $datatem;
                
                	$next =$webs[$x];
                
                	echo "
                ".$webs[$x];
                
                	$x= $x+1;
                	$help = $help+1;
                
                }
                
                echo "<div style=\"position:absolute; left:-2px; top:-2px;\">";
                echo "<div style=\"position:absolute; left:108px; top:140px;\">";
                echo "<table border =\"0\" width=\"600\" height=\"300\">";
                echo "<tr><td>Servername:</td><td><input type=\"text\" name=\"server\" value=\"$webs[0]\"></td>
                          <td>Recon Passwort:</td><td><input type=\"text\" name=\"Recon\" value =\"$webs[1]\"></td></tr>";
                echo "<tr><td>Players:</td><td><input type=\"text\" name=\"Players\" value=\"$webs[2]\"></td>
                          <td>Passwort:</td><td><input type=\"text\" name=\"password\" value =\"$webs[3]\"></td></tr>";
                echo "<tr><td>Start Map:</td><td><input type=\"text\" name=\"Map\"value =\"$webs[4]\"></td></tr>";
                echo "<tr><td>Rundenzeit:</td><td><input type=\"text\" name=\"roundtime\" value=\"$webs[5]\"></td></tr>";
                echo "<tr><td>Friendly Fire:</td><td><select name=\"ffire\">
                    <option selected>True</option>
                   <option>False</option>
                   </select></td></tr>";
                echo "<tr><td>Auto Mapchange:</td><td><select name=\"mapchange\">
                    <option selected>True</option>
                    <option>False</option>
                   </select></td></tr>";
                echo "<tr><td>Mapcycle:</td><td><textarea name=\"mapcycle\" rows=\"5\"></textarea></td><td><input type=\"submit\" name=\"mapcyclespeichern\" value=\"Speichern\"<td></tr></form>";
                echo"</table><p align=\"center\">";
                echo"<input type =\"submit\" name=\"status\" value=\"Server Status\"><form  method=\"post\" action=\"join.php\"><input type=\"submit\" name=\"starten\" value=\"Start Server\">";
                echo"<input type=\"submit\" name=\"stoppen\" value=\"Stop Server\">";
                echo"</div>";
                
                
                
                ?>
                Als Fehlermeldung gibt er mir folgendes :

                Code:
                Notice: Undefined index: 2 in C:\apachefriends\xampp\htdocs\Webinterface\index3.php on line 59
                
                Notice: Undefined index: 3 in C:\apachefriends\xampp\htdocs\Webinterface\index3.php on line 60
                
                Notice: Undefined index: 4 in C:\apachefriends\xampp\htdocs\Webinterface\index3.php on line 61
                
                Notice: Undefined index: 5 in C:\apachefriends\xampp\htdocs\Webinterface\index3.php on line 62
                Die dazugehörigen Zeilen sind:
                Code:
                echo "<tr><td>Players:</td><td><input type=\"text\" name=\"Players\" value=\"$webs[2]\"></td>
                          <td>Passwort:</td><td><input type=\"text\" name=\"password\" value =\"$webs[3]\"></td></tr>";
                echo "<tr><td>Start Map:</td><td><input type=\"text\" name=\"Map\"value =\"$webs[4]\"></td></tr>";
                echo "<tr><td>Rundenzeit:</td><td><input type=\"text\" name=\"roundtime\" value=\"$webs[5]\"></td></tr>";
                Vielen Dank im Vorraus

                Anuschka

                Kommentar


                • #9
                  Notice: Undefined index: 2 in C:\apachefriends\xampp\htdocs\Webinterface\index3. php on line 59
                  Es gibt Element mit dem Index 2 in diesem Feld, aber Du versuchst darauf zuzugreifen.

                  Mit eigenen Worten, möglichst genau: Was soll das Programm ab
                  $wert = strlen ($dat1);
                  bis
                  $help = $help+1; }
                  machen?
                  Es kommt nur auf $webs an?
                  Mit der Beispielzeile soll $webs hinterher wie aussehen?

                  Kommentar


                  • #10
                    Ich möchte von

                    $wert = strlen ($dat1);
                    bis
                    $next2 = substr($dat1, 0, -$zahl);

                    die erste variable aus dem eingelesenen Gesamtstring in $next2 schreiben. Das Programm soll durch "," erkennen, dass das erste Wort zu Ende ist.

                    in der while-Schleife

                    Code:
                    while ($next != "")
                    {
                    	$x=1;
                    	
                    	$econ = substr (strchr ($dat1, $next),$datatemp+1,-1);
                    	$wert2 = strlen ($econ);
                    	$datatem = strpos ($econ, ",");
                    	$zahl2 = $wert2 - $datatem;
                    
                    	$webs[$x] = substr($econ, 0, -$zahl2);
                    
                    	$datatemp = $datatem;
                    
                    	$next =$webs[$x];
                    
                    	echo "
                    ".$webs[$x];
                    
                    	$x= $x+1;
                    	$help = $help+1;
                    
                    }
                    Möchte ich die restlichen Variablen auf dieselbe Weise wie oben in das array $webs[$x] speichern. Dazu benutze ich die Stringfunktionen zum Ermitteln der Länge des Strings bis zum Komma, und speichere dann jeweils den Teil des Strings in das array $webs[X]. $X zähle ich hoch damit das array und hochgezählt wird. $help ist nur drinne damit ich bei einer Überprüfung mittels einer while-Schleife überprüfen könnte, ob er mir das array ausgibt.
                    wie while ($help != $x)
                    {
                    echo $webs[$x];
                    }
                    und vorher natürlich $x wieder auf 0 setzen.

                    reicht dir das ?

                    Kommentar


                    • #11
                      Es kommt nur auf $webs an?
                      Mit der Beispielzeile soll $webs hinterher wie aussehen?
                      Kannst Du es nicht einfacher erklären? Genau heißt nicht kompliziert sondern einfach nur: nichts wichtiges weggelassen.
                      Gehen wir mal von:
                      "Die Zeile soll in das Feld $webs mit den Indizes 0 bis (Anzah-1) übertragen werden. Dabei ist jedes Element in der Zeile durch ein Komma getrennt."
                      aus. Was muss an der Beschreibung geändert werden, um Deinen Bedürfnissen gerecht zu werden?

                      Kommentar

                      Lädt...
                      X