Whitesnake: Programmierfehler - aber ich finde ihn nicht

Ich versuche gerade ein Forum zu schreiben, dass ohne Datenbank auskommt. Ich generiere für jeden neuen Eintrag (egal ob Thema oder nicht) ein neues <table> Element, dass per Timestamp ein Attribut myid=hierstehtdertimestampdrin bekommt. Ich habe folgenden Code, der alle Tabellen die es im Forum gibt durchsucht:

$tablelist=$doc->getElementsByTagName('table');

for ($i=0; $i <= $tablelist->lenght; $i++) {
  echo $_POST['laufnummer'];
  $table = $tablelist->item($i);
  if ($table->hasAttribute('myid') == $_POST['laufnummer']) {
   $hauptreihe=$doc->createElement('tr');
   $haupttd=$doc->createElement('td');
   $name=$doc->createTextNode($_POST['text'.$_POST['laufnummer']]);
   $table->appendChild($hauptreihe);
   $hauptreihe->appendChild($haupttd);
   $haupttd->appendChild($name);
  }

else {
  echo "Systemfehler";
  }
}

Mein Problem ist, dass er egal, welche $_POST['laufnummer'] ich mitschicke die Elemente etc. in die allererste Tabelle generiert werden, auch wenn diese gar nicht das Attribut hat, das mitgeschickt wurde. Sprich er bleibt immer beim tableitem 0 hängen. Hab ich einen Denkfehler oder ist da im Code etwas falsch?

  1. Hi,

    if ($table->hasAttribute('myid') == $_POST['laufnummer']) {

    was liefert $table->hasAttribute('myid') zurück, sprich: Was vergleichst Du mit dem laufnummer-Parameter?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Ich möchte nachsehen, ob es irgendwo im Quelltext eine table mit dem Attribut myid = " " gibt. Das in " " ist das, was mitgeschickt wird.

      In der if-Schleife will ich dann dieser Tabelle, die diese Eigenschaft hat paar Elemente anhängen etc.

      1. Hi,

        Ich möchte nachsehen,

        ich habe nicht gefragt, was Du möchtest, sondern was Du _machst_. Computer tun nämlich nie was sie sollen, sondern immer nur was Du ihnen sagst. Daher solltest Du schon wissen, was das ist.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Ich sage dem PC folgendes:

          Hole alle Table-Elemente in die Variable $tablelist, gehe anschließend in der Form-Schleife alle Table-Elemene von 0 bis zum letzten Table-Element durch und schaue in der if-Anweisung ob es eine table gibt, die das Attribut "myid" hat, die den Wert der per $_POST['laufnummer'] übergeben wurde hat. Wenn dem so ist, dann create ein Element tr ...

          1. Hi,

            Ich sage dem PC folgendes:

            Hole alle Table-Elemente in die Variable $tablelist, gehe anschließend in der Form-Schleife alle Table-Elemene von 0 bis zum letzten Table-Element durch und schaue in der if-Anweisung ob es eine table gibt, die das Attribut "myid" hat, die den Wert der per $_POST['laufnummer'] übergeben wurde hat.

            nein, das sagst Du nicht. Führe Dir die Frage in meiner ersten Antwort noch einmal zu Gemüte.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
    2. Ich vergleiche ob es ein table gibt deren myid $_Post['laufnummer'] ist. $table->hasAttribute('myid') liefert prinzipiell true zurück, aber ich hab ja noch == $_POST['laufnummer'] dort stehen.

      1. Hi,

        Ich vergleiche ob es ein table gibt deren myid $_Post['laufnummer'] ist. $table->hasAttribute('myid') liefert prinzipiell true zurück, aber ich hab ja noch == $_POST['laufnummer'] dort stehen.

        richtig. Was passiert, wenn Du 'true' mit dem Wert des Parameters 'laufnummer' vergleichst?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Gibt immer true und er wird auch immer in die Schleife reingehen und bei jeder Tabelle diesen Eintrag reinknallen! Aha.

          Ich habe jetzt per echo genau das ausgegeben, was du mir jetzt hast versucht zu erklären. Ich habe im If-Zweig jedes Mal die $i Variable ausgegeben und siehe da, er geht wirklich jedes Mal in den if-Zweig rein.

          Nur wie soll ich das jetzt auflösen? Klammern setzen hilft ja nichts.

          1. Hab jetzt statt set get geschrieben und es klappt! Juhu. Weißt du rein zufällig auf die Schnelle wie ich mir eine Variable erzeuge, die die Systemzeit speichert (so möchte ich nämlich die "myid" belegen, damit jeder Eintrag einzigartig wird)?

            1. Hi,

              Weißt du rein zufällig auf die Schnelle wie ich mir eine Variable erzeuge, die die Systemzeit speichert (so möchte ich nämlich die "myid" belegen, damit jeder Eintrag einzigartig wird)?

              mittels time(). Dass die Zeit alleine nicht ausreichend ist, um Eindeutigkeit zu garantieren, ist Dir bewusst?

              Cheatah

              P.S.: Warum erfindest Du eigentlich ungültige HTML-Attribute, wenn Du einfach gültige nehmen kannst?

              --
              X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
              X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
              1. hi,

                P.S.: Warum erfindest Du eigentlich ungültige HTML-Attribute, wenn Du einfach gültige nehmen kannst?

                weil er in myid ja einfach den stand seiner zählvariable reinschreibt (so klang's jedenfalls) - und das wäre ja vermutlich auch für ID kein gültiger wert.

                gruß,
                wahsaga

                --
                "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                1. Hi,

                  P.S.: Warum erfindest Du eigentlich ungültige HTML-Attribute, wenn Du einfach gültige nehmen kannst?
                  weil er in myid ja einfach den stand seiner zählvariable reinschreibt (so klang's jedenfalls) - und das wäre ja vermutlich auch für ID kein gültiger wert.

                  wenn er einen Buchstaben davor setzt, wäre es das aber. Sooo schwierig ist das ja auch nicht :-)

                  Cheatah

                  --
                  X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                  X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                  X-Will-Answer-Email: No
                  X-Please-Search-Archive-First: Absolutely Yes
              2. Damit es garantiert zu keinen Konflikten kommt. WArum ist die Zeit nicht eindeutig? Ich könnte ja microtime nehmen, dann wäre das Fehlerpotential minimal. Hast du eine besseren Vorschlag eindeutige Variable zu erzeugen?

                1. hi,

                  Hast du eine besseren Vorschlag eindeutige Variable zu erzeugen?

                  $i++;

                  gruß,
                  wahsaga

                  --
                  "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                  1. Also ehrlich gesagt ist das gleich wie das microdate, denn wenn zugleich zwei Leute zugreifen sollten, dann ist sowohl die i++ und microdate Art ebenbürtig, da beide den gleichen Blödsinn fabrizieren würden. Abgesehen davon, werden nicht zur gleichen Millisekunde zwei Leute auf einen Server zugreifen können.

                    1. hi,

                      Also ehrlich gesagt ist das gleich wie das microdate, denn wenn zugleich zwei Leute zugreifen sollten,

                      ach so, es geht dir gar nicht um das hochzählen in _einer_ scriptinstanz. sorry, das kam vorher nicht so deutlich raus.

                      gruß,
                      wahsaga

                      --
                      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                      1. Nein nein, es sollen nur die Tables eine eindeutige myid haben, mehr ist gar nicht gesucht :)

                    2. Hi,

                      Abgesehen davon, werden nicht zur gleichen Millisekunde zwei Leute auf einen Server zugreifen können.

                      Woher weißt du das so genau?

                      Grüße aus Barsinghausen,
                      Fabian

                      --
                      "It's easier not to be wise" - < http://www.fabian-transchel.de/kultur/philosophie/ialone/>
                2. Hi,

                  Damit es garantiert zu keinen Konflikten kommt. WArum ist die Zeit nicht eindeutig?

                  weil zur selben Zeit viel passieren kann.

                  Ich könnte ja microtime nehmen, dann wäre das Fehlerpotential minimal.

                  Die Fehlerwahrscheinlichkeit ist größer Null und damit inakzeptabel. Neben der Zeit sind Prozess-ID und ggf. (bei gebalancten Systemen) Rechnerkennung notwendig. Oder Du zählst wirklich durch, natürlich ein Eindeutigkeit garantierendes System (z.B. eine DB) vorausgesetzt.

                  Cheatah

                  --
                  X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                  X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                  X-Will-Answer-Email: No
                  X-Please-Search-Archive-First: Absolutely Yes
  2. Hi,

    for ($i=0; $i <= $tablelist->lenght; $i++) {

    Wie hast Du lenght definiert?
    Wenn da was vordefiniert sein sollte, dann doch wohl eher length als lenght.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Aaah, da hast du recht! Standardfehler #5. Danke für die Hilfe.

      Allerdings hab ich jetzt das Problem, dass er in alle Tabellen diese Abfolge reinmacht, sprich er generiert die neue reihe, td und textnode nicht in die mit der Variablen, sondern in alle.