Frage Problem mit Undefined Offset

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Kuddel7

Neues Mitglied
31 August 2020
15
0
1
22
Hallo, immer wenn ich meine Schleife das erste mal durchgelaufen ist tritt dieser Fehler auf: Undefined offset: 1 in C:\... Ich versuche jetzt seit einer Stunde rum und habe keine Ahnung mehr was das Problem sein soll. Könnt ihr mir vielleicht helfen bzw. habt Ideen was das Problem sein kann oder ist? Mfg
Code:
Code:
<!doctype html>
<html>
<head>
<style>
h1 {
    position: absolute;
    margin-left: auto;
    margin-right: auto;
    left: 0;
    right: 0;
    top: 0;
    text-align: center;
    font-size: 75px;
}
.eingabealter {
    position: absolute;
    margin-left: auto;
    margin-right: auto;
    right: 0;
    left: 0;
    text-align: center;
    margin-top: 250px;
}
.eingabealterlb {
    position: absolute;
    margin-left: 750px;
    margin-top: 250px;
}
.submitalter {
    position: absolute;
    margin-left: 1035px;
    margin-top: 250px;
}
</style>
</head>
<body>
<?php
if (isset($_GET['alter'])) {
    $alter = $_GET['alter'];
    $handler = fopen("Alter.txt", "a+");
    fwrite($handler, $alter);
    fwrite($handler, "\n");
    fclose($handler);
}

$auswertung = file_get_contents("Alter.txt");
$array = array();
$array = explode(",", $auswertung);

echo "<br>";
echo "<table>";
$variable = count(file("Alter.txt")) -1;
if (!empty($array)) {
    $counter = 0;
    for($i=0; $i <= $variable; $i++){
        echo "<tr>";
        for($j=$counter; $j <= ($counter); $j++){
            echo "<td>" . $array[$j] . "</td>";
        }
        echo "</tr>";
        $counter = $counter+1;
    }
}
echo "</table>";
?>
<h1>Altersumfrage</h1>
<form class="altersumfrage" method="get">
 <input name="alter" type="text" class="eingabealter" id="eingabealter">
 <label for="eingabealter" class="eingabealterlb">Alter:</label>
 <input type="submit" class="submitalter" id="submitalter" value="Alter absenden">
</body>
</html>
 
Zuletzt bearbeitet:

m.scatello

Senior HTML'ler
15 Februar 2017
1.353
163
63
Das ist natürlich sehr sinnvoll, wenn man die Fehlermeldung nicht vollständig postet. :frown:

Irgendwie ist das ganze Script leicht durch den Wind. Hier
PHP:
$auswertung = file_get_contents("Alter.txt");
liest du die Datei ein, und hier nochmal:
PHP:
$variable = count(file("Alter.txt")) -1;

Wie sieht die Datei genau aus, und was willst du erreichen?
 

Kuddel7

Neues Mitglied
31 August 2020
15
0
1
22

Kuddel7

Neues Mitglied
31 August 2020
15
0
1
22
Obwohl, das Alter einzutragen ist ja sowieso schon Quatsch, denn wenn mich nicht alles täuscht, ändert sich das jedes Jahr :)
Ja das stimmt aber ich hatte Langeweile fing also mit HTML/CSS/PHP an und wusste nicht was ich programmieren sollte also fragte ich meine Eltern und die meinten sowas zu mir. Deshalb bin ich gerade dabei sowas zu machen.
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.353
163
63
Jetzt liest du noch mal Posting #2 und überlegst dann mal, von welcher Datei ich wohl rede. :frown:
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.353
163
63
Und noch ein Tipp für Programmier-Anfänger:

Richtig debuggen
  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 

Kuddel7

Neues Mitglied
31 August 2020
15
0
1
22
Und noch ein Tipp für Programmier-Anfänger:

Richtig debuggen
  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
Das habe ich tatsächlich alles gemacht:oops:
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.353
163
63
Wenn die Datei leer ist, kannst du dir doch die ganzen Schleifen sparen, also überprüfe, ob die Datei überhaupt existiert und ob sie leer ist.
 

Kuddel7

Neues Mitglied
31 August 2020
15
0
1
22
Ich habe jetzt eine Lösung gefunden. Nämlich habe ich bei der ersten for Schleife $i zu $variable Heißt:
Code:
for($i=$variable; $i <= $variable; $i++)
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.353
163
63
Ich sehe kein error_report, kein ini_set und keine Ausgabe einer Variablen.

Ich bin raus, ist mir dann doch zu blöd.
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.353
163
63
Ungetestet;
PHP:
<body>
<?php
 if (isset($_POST['alter']))
 {
    $alter = $_POST['alter'];
    $handler = fopen("Alter.txt", "a+");
    fwrite($handler, $alter);
    fwrite($handler, "\n");
    fclose($handler);
 }

 if (file_exists("Alter.txt"))
 {
   $data = file("Alter.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

   if (count($data)))
   {   
      echo "<table>";

      foreach($data as $line)
        echo "<tr><td>$line</td></tr>\n";
      
      echo "</table>";
   }
   else
     echo "Keine Daten vorhanden";
 }
 else
     echo "Datei exisitiert nicht";
?>
<h1>Altersumfrage</h1>
<form class="altersumfrage" method="post">
 <input name="alter" type="text" class="eingabealter" id="eingabealter">
 <label for="eingabealter" class="eingabealterlb">Alter:</label>
 <input type="submit" class="submitalter" id="submitalter" value="Alter absenden">
</form>
</body>
 
  • Like
Reaktionen: Kuddel7
Werbung:

Neueste Beiträge