Ankündigung

Einklappen
Keine Ankündigung bisher.

Tabellenfelder ansprechen

Einklappen

Neue Werbung 2019

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

  • #16
    Ne, da ändert sich nichts... Das gibts doch gar nicht^^

    Kommentar


    • #17
      PHP-Code:
      echo "    <td><input type=\"image\" name=\"$i%$j\" src=$icons[$i][$j]></td>\n"
      Dein Fehler ganz am Anfang war, dass du so einen Array-Eintrag nicht ansprechen kannst. PHP Wertet innerhalb von doppelten Anführungszeichen nur die direkte Variable aus. In deinem Fall also der Inhalt von $icons + [ + $i + ][ + $j + ]. An dieser Stelle wäre es sauberer den echo mit einfachen Anführungszeichen zu verwenden, dann sparst du dir auch die \.
      PHP-Code:
      echo '    <td><input type="image" name="'.$i.'%'.$j.'" src='.$icons[$i][$j].'></td>\n'
      zu deinem jetzigen Problem:
      Gib einfach mal $lab[$i][$j] in jedem Schleifendurchlauf aus. Wenn der Wert nicht dem erwarteten entspricht, kannst du so deinen Fehler eingrenzen.

      Zusätzlich noch der Standardhinweis an dieser Stelle:
      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(E_ALL); und ini_set("display_errors", true);
      3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
      4. 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 (oder auch nicht).
      5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
      6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
      7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
      8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
      PHP online testen, zum Beispiel: md5, base64_decode, preg_match, urldecode und viele weitere...

      Kommentar


      • #18
        Also... Der Fehler ist anscheinend, dass ich die Werte aus dem Array falsch auslese...
        Wenn ich $lab[$i][$j] so ausgebe, erhalte ich nur eine Tabelle mit [0][1][2]...[15] und das dann in 12 Spalten... also immer [$j].

        Wie muss ich die Arraywerte denn dann richtig auslesen? Eigentlich müsste das doch funktionieren, oder nicht? Oder hab ich das Array falsch erzeugt? (Code s. oben)

        Ich sehe da irgendwie keinen Fehler drin...

        Edit: Mittlerweile glaube ich doch eher, dass ich das Array falsch erzeuge, da ich, wenn ich z.B.

        echo "test:".$lab[$i][$j];

        ausgebe nur das "test:" erhalte, dahinter nichts mehr... Also ist das Array anscheinend leer, aber warum? Ich hab es auch ganz am Anfang schon ohne die Zuweisung 0 => array(), 1 => array() gemacht, also direkt array(), array(), aber das hat gar nichts geändert... Sieht jemand irgendwas?


        Edit2: So, ich hab den Fehler jetzt zwar gefunden, aber noch nicht so ganz verstanden

        Ich hatte diese ganzen if-Verzweigungen und die tabelle in eine Funktion gepackt und dann am Ende aufgerufen. Das hat nicht funktioniert... Jetzt habe ich das alles einfach mal ohne Funktion gemacht und es funktioniert^^

        Ist die Funktionsdefinition mit

        "function name(){ ... }"

        falsch?

        Kommentar


        • #19
          Und schon wieder eine Frage, die ich mir selber leider nicht beantworten konnte...

          Und zwar möchte ich die Variablen nicht wie im Beispiel von md5() per GET-Methode übergeben, sondern üebr POST, weil man sich nicht einfach auf irgendwelche Felder beamen können soll, in dem man die URL ändert...
          Leider krieg ich das nicht so wirklcih hin...
          Ich hab das jetzt so versucht:

          Code:
          for ($i = 0; $i < 12; $i++)
              {
                  echo "  <tr>\n";
          
                  for($j = 0; $j < 16; $j++)
                  {
          			$a = ($j + 1) + ($i * 16);
          				
          			if($lab[$i][$j] == 0){
          				echo "    <td><img src=\"Icons/Mauer.jpg\"></td>\n";
          			}elseif($lab[$i][$j] == 1){
          				echo "    <td><input type=\"image\" name=\"{$a}\" src=\"Icons/Weg.jpg\"></td>\n";
          			}elseif($lab[$i][$j] == 2){
          				echo "    <td><input type=\"image\" name=\"{$a}\" src=\"Icons/Indy.jpg\"></td>\n";
          				$c = $a;
          			}
                  }
          
                  echo "  </tr>\n";
              }
          	
              echo "</table>\n";
          Damit erstell ich jetzt die Tabelle und nummeriere die einzelnen Felder durch... Und dann wollte ich später überprüfen, ob Feld Nr. x geklickt wurde und wenn ja den entsprechenden Array-Wert ändern:

          Code:
          for($i = 1; $i < 193; $i++){
          		if(isset($_POST['$i_x']))
          			$lab[floor($i / 17)][$i % 17] = 2;
          	}
          Nur geht das anscheinend nicht so einfach... Ich habe auch schon andere Schreibweisen versucht für $_POST['$i_x'] mit {} um das $i, ohne ', über $_REQUEST und was weiß ich, aber da ging nichts von... Kann ich das denn überhaupt so machen? Oder ist das komplett falsch?

          Kommentar


          • #20
            Zitat von Choba Beitrag anzeigen
            Oder hab ich das Array falsch erzeugt?
            Wenn du dir über die Struktur solcher Variablen nicht im klaren bist, dann mache als erstes eine Kontrollausgabe mittels print_r/var_dump. (<pre> davor setzen, empfiehlt sich zwecks Lesbarkeit.)

            Und stelle bitte, wenn es nicht bereits passiert ist, das error_reporting auf E_ALL und display_errors auf 1. Dann hat PHP die Chance, dich auf Fehler wie nicht definierte Variablen/Array-Elemente etc. selber hinzuweisen.

            Ich hatte diese ganzen if-Verzweigungen und die tabelle in eine Funktion gepackt und dann am Ende aufgerufen. Das hat nicht funktioniert... Jetzt habe ich das alles einfach mal ohne Funktion gemacht und es funktioniert^^
            Dann hast du dir vermutlich keine Gedanken über den Geltungsbereich von Variablen gemacht - siehe http://www.php.net/manual/en/languag...bles.scope.php
            (Auf diesen Fehler hätte dich das erwähnte error_reporting auch hingewiesen.)

            Zitat von Choba Beitrag anzeigen
            Und schon wieder eine Frage, die ich mir selber leider nicht beantworten konnte...
            Vielleicht solltest du dich erst noch mal ein bisschen mit den Grundlagen beschäftigen ... du scheinst von vielem wenig bis gar keine Ahnung zu haben, also übernehme dich nicht gleich mit so einem Spiel.

            http://www.php.de/php-einsteiger/489...nsammlung.html

            Leider krieg ich das nicht so wirklcih hin...
            [...]
            Nur geht das anscheinend nicht so einfach...
            Das taugt als Problembeschreibung gar nichts.

            Schau dir als erstes an, ob dein Script auch wirklich den HTML-Code erzeugt, den du beabsichtigt hast.
            Und validiere deinen HTML-Code, um auszuschließen, dass darin von dir gemachte Fehler clientseitig dafür sorgen, dass das ganz nicht wie gewünscht verarbeitet wird.
            Danach kann man weitersehen.


            Und noch generell: http://www.php.de/wiki-php/index.php...ging:Leitfaden - bitte unbedingt mal durcharbeiten.
            [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

            Kommentar


            • #21
              Zitat von ChrisB Beitrag anzeigen
              Dann hast du dir vermutlich keine Gedanken über den Geltungsbereich von Variablen gemacht - siehe http://www.php.net/manual/en/languag...bles.scope.php
              (Auf diesen Fehler hätte dich das erwähnte error_reporting auch hingewiesen.)
              Ich hab ja nur die for-Schleifen und if-Abfragen in ne Funktion gepackt, das Array natürlich nicht... In der Funktion hab ich keine Variablen erzeugt...

              Vielleicht solltest du dich erst noch mal ein bisschen mit den Grundlagen beschäftigen ... du scheinst von vielem wenig bis gar keine Ahnung zu haben, also übernehme dich nicht gleich mit so einem Spiel.
              Naja, ich hab gerade angefangen zu studieren und da fangen wir jetzt eben mit PHP an, was ich vorher nie gemacht hab, und müssen irgendein Projekt machen, also muss es schon was in der Größenordnung sein... Wir haben auch noch bis Januar Zeit, also lernen wir wahrscheinclih noch einiges, was ich brauchen könnte, aber ich wollte eben trotzdem schonmal anfangen...

              Das taugt als Problembeschreibung gar nichts.
              Naja, deswegen ja auch der Quelltext... Also es passiert überhaupt gar nichts...

              Kommentar


              • #22
                Zitat von Choba Beitrag anzeigen
                Ich hab ja nur die for-Schleifen und if-Abfragen in ne Funktion gepackt, das Array natürlich nicht... In der Funktion hab ich keine Variablen erzeugt...
                Siehste ... das ist ja dann das Problem.

                Also es passiert überhaupt gar nichts...
                Dann finde heraus, warum.

                Die Fähigkeit zum Debugging/Fehlersuche ist eine ganz wesentliche Eigenschaft eines Programmierers.
                [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                Kommentar

                Lädt...
                X