gerena: SELECT-ABGRAGE

Hallo.
Ganz einfache Tabelle "text":
id   textNa      text
_______________________

1  home            ....
 2  adresse          la-la
 3  bank           lu-lu

usw.

ABFRAGE:
$result=mysql("$DBName","SELECT text FROM text
WHERE textNa='adresse' OR textNa='RegisterDaten'
 OR textNa='bank'");
while ($row  =  mysql_fetch_row($result)) {
$ADRESSE=$row[0];
$REGISTER=$row[1];
$BANK=$row[2];
}

echo "$ADRESSE $REGISTER $BANK";...

Als Ergebniss bekomme ich nur $BANK (lu-lu). Aber ich brauche alle drei Texte.

Ich bitte um Hilfe.
MfG

  1. Hi folks,

    Als Ergebniss bekomme ich nur $BANK (lu-lu). Aber ich brauche alle drei Texte.

    Du hast da einen Denkfehler drin.
    Der läuft die Schleife zwar 3mal durch, aber anders als du möchtest ;-)
    Da du die Variabeln ($ADRESSE,$REGISTER,$BANK) bei jedem Durchlauf wieder überschreibst stehen nur noch die values aus dem letzten Durchlauf drinne, in dem Fall eben "lu-lu" für $BANK.
    $row (sollte) nur ein Element enthalten, da du im Query ja angibst, dass du nur die Spalte "text" haben möchtest.
    Probiers doch mal so:

    <?php
    $result=mysql("$DBName","SELECT text FROM text
    WHERE textNa='adresse' OR textNa='RegisterDaten'
     OR textNa='bank'");
    while ($row  =  mysql_fetch_row($result)) {
    $ADRESSE=$row[0];

    echo "$ADRESSE";

    }
    ?>

    Dann wirst du es besser verstehen ;-)

    Oder so:

    <?php
    $ADRESSE = array();
    $result=mysql("$DBName","SELECT text FROM text
    WHERE textNa='adresse' OR textNa='RegisterDaten'
     OR textNa='bank'");
    while ($row  =  mysql_fetch_row($result)) {
    $ADRESSE.=$row[0];
    }
    foreach ($ADRESSE as $printOut)
     {
      echo $printOut."\n";
     }

    ?>

    Dann (sollte) es funktionieren :-)

    Greets - parse_error;

    --
    Dont ask to ask...
    .oO(Ohne Parse_Errors waere das Leben doch langweilig)
    SELFCode: ie:{ fl:{ br:< va:? ls:< fo:) rl:( n4:{ ss:} de:/ js:| ch:] sh:( mo:| zu:{
    1. Hallo. Danke für Antwort.
      Das ist  wirklich Denkfehler, jetzt habe ich mit Schleife verstanden (hoffentlich).
      Aber wie kann man alle drei Texte bekommen?

      1. Hi folks,

        Aber wie kann man alle drei Texte bekommen?

        lies mein vorgies Posting?
        das letzte <? (...) ?> ist die komplette Lösung.
        Du musst sie nur noch kopieren und einfügen.

        Greets - parse_error;

        --
        Dont ask to ask...
        .oO(Ohne Parse_Errors waere das Leben doch langweilig)
        SELFCode: ie:{ fl:{ br:< va:? ls:< fo:) rl:( n4:{ ss:} de:/ js:| ch:] sh:( mo:| zu:{
        1. Copiert und eingefögt. Bekomme Antwort:
          Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\PROBA.php on line 21
          linie 21:
          foreach ($ADRESSE as $printOut)

          MfG
          folks

          1. Moin,

            Copiert und eingefögt. Bekomme Antwort:
            Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\PROBA.php on line 21
            linie 21:
            foreach ($ADRESSE as $printOut)

            ich glaub das Problem ist hier
            while ($row  =  mysql_fetch_row($result)) {
            $ADRESSE.=$row[0];
            }

            ersetze das:
            $ADRESSE.=$row[0];

            durch:
            $ADRESSE[]=$row[0];

            dann sollte es auch klappen. foreach erwartet ein Array.
            HTH,
             Juan

            1. Hi folks,

              foreach erwartet ein Array.

              ja, drum habe ich oben geschrieben $ADRESSE = array();
              ;-)
              Normalerweise müsste er dann durch $ADRESSE.="foo"; "foo" als neues Element hinzufügen.
              Habe es aber auch im Verdacht, drum habe ich es so auch in meinem neuen Posting so geschrieben.
              Aber ich möchte ihm eben nicht alles fix&fertig vor die Nase setzen *hmpf*

              "Gib einem Armen einen Fisch und du ernährst ihn für einen Tag. Gib ihm eine Angel und du ernährst ihn für ein Leben"
              oder:
              "Gib einem Scripter ein Stück fertigen Code und er wird das aktuelle Problem lösen können. Hilf ihm zu verstehen wo der Fehler liegt und er wird ähnliche Probleme in Zukunft selbst lösen können und auch anderen bei der Lösung helfen"
              oder:
              "Wissen ist Macht"
              So, genug von Confuzius :-P

              Greets - parse_error;

              --
              Dont ask to ask...
              .oO(Ohne Parse_Errors waere das Leben doch langweilig)
              SELFCode: ie:{ fl:{ br:< va:? ls:< fo:) rl:( n4:{ ss:} de:/ js:| ch:] sh:( mo:| zu:{
              1. Auf  welche Podest stehst Du? Ich habe nur um Hilfe gebeten, weil selbst schon viele Stunde gebracht und weiss nicht mehr.
                Falls jemand um Wasser bettelt, gibst Du ihm dann Gemüse, weil es aus deine Sicht gesunder ist?

                1. Moin!

                  Auf welche Podest stehst Du? Ich habe nur um Hilfe gebeten, weil selbst schon viele Stunde gebracht und weiss nicht mehr.

                  Deshalb diskutiert man ja mit dir - trotz Doppelposting übrigens.

                  Die Tatsache, dass sich jemand jetzt aber um dich kümmert, erlaubt dir nicht, ihm jetzt einfach alle Arbeit zu überlassen. Es ist weiterhin _dein_ Problem, es ist auch _deine_ Aufgabe, die Lösung zu finden, und logischerweise ist es _dein_ Interesse, zu lernen, wie es geht.

                  Falls jemand um Wasser bettelt, gibst Du ihm dann Gemüse, weil es aus deine Sicht gesunder ist?

                  Dein Vergleich hinkt - wie jeder Vergleich.

                  Erstens: Du bist nicht in Not und am Verdursten, sondern stehst eher entspannt an einer Selbstbedienungs-Bar.

                  Zweitens: Jeder, den du trotzdem darum bittest, für dich ein Glas Wasser einzuschenken, wird das mit einigem befremden registrieren. Denn das Schild an der Bar sagt ja deutlich: "Selbstbedienung".

                  Drittens: Wenn du ein Problem hast, den Mechanismus am Wasserhahn in Gang zu setzen, hilft dir jeder gern, das zu verstehen, damit du künftig jederzeit und selbständig an dein Wasser gelangen kannst.

                  - Sven Rautenberg

                  --
                  My sssignature, my preciousssss!
                  1. Hallo, Sven
                    Im Prinzip hast Du Recht: parse_error lehrt mit Confizius, und ich antworte mit Vergleich...
                    Auf jedem Fall - was Leute hier im Forum machen ist einzigartig und belohnungswert.

            2. Bekomme Antwort:
              "Array, Array,Array"

              MfG

              1. Poste doch mal bitte den Code, den du jetzt benutzt. Vielleicht können wir ja den Fehler finden.

                MfG,
                  Juan

                1. $result=mysql("$DBName","SELECT * FROM text WHERE textNa='adresse' OR textNa='RegisterDaten' OR textNa='bank'");
                  while ($row  =  mysql_fetch_row($result)) {
                  $ADRESSE[]=$row[0];
                  $REGISTER[]=$row[1];
                  $BANK[]=$row[2];

                  }
                  echo "$ADRESSE";
                   echo "$REGISTER";
                  echo "$BANK";

                  Texte sollen in verschidene td-Tags stehen

                  Best regards

                  1. Moin!

                    $result=mysql("$DBName","SELECT * FROM text WHERE textNa='adresse' OR textNa='RegisterDaten' OR textNa='bank'");
                    while ($row  =  mysql_fetch_row($result)) {
                    $ADRESSE[]=$row[0];
                    $REGISTER[]=$row[1];
                    $BANK[]=$row[2];

                    }

                    bis hierher sieht es ganz gut aus.
                    Hast du dich mal gefragt, was dieser Teil macht?
                    Du holst dir die Daten aus der Datenbank und schreibst die Spalten jeweils in ein Array.
                    $ADRESSE, $REGISTER und $BANK sind also Arrays und deswegen kannst du sie nicht mit echo ausgeben.

                    Statt:

                    echo "$ADRESSE";
                    echo "$REGISTER";
                    echo "$BANK";

                    musst du also folgendes verwenden:

                    foreach ($ADRESSE as $out){
                      echo $out."<br>";
                    }
                    foreach ($REGISTER as $out){
                      echo $out."<br>";
                    }
                    foreach ($BANK as $out){
                      echo $out."<br>";
                    }

                    Probier das also mal aus!
                    HTH,
                      Juan

                    1. Danke, funktioniert.
                      Ich muss leider feststellen, dass  bei mir einfach Verstand von PHP fällt. Eizige Entschuldigung - ich lerne das nur seit paar Tagen
                      Ich bemühe mich...  Ihre Erklärung ist super

                  2. Hallo,

                    $result=mysql("$DBName","SELECT * FROM text WHERE textNa='adresse' OR textNa='RegisterDaten' OR textNa='bank'");
                    while ($row  =  mysql_fetch_row($result)) {
                    $ADRESSE[]=$row[0];
                    $REGISTER[]=$row[1];
                    $BANK[]=$row[2];
                    }

                    Wie ich schon im anderen Thread sagte:
                    Die einzelnen Werte stehen in unterschiedlichen Datensätze. Du musst also alle Datensätze auslesen und je nach Inhalt von textNa entscheiden in welche Variable Du den eigentlichen Wert ablegst.

                    Also ungefähr so:

                    $result=mysql("$DBName","SELECT textNa, text  FROM text WHERE textNa='adresse' OR textNa='RegisterDaten' OR textNa='bank'");

                    while($row = mysql_fetch_row($result)) {
                    if($row[0] == 'adresse')
                       $Adresse = $row[1];
                    else if($row[0] == 'RegisterDaten')
                       $Register = $row[1];
                    else
                       $Bank = $row[1];

                    Achtung: Kopiere diesen Code nicht direkt in Dein Script, da das mit Sicherheit nicht lauffähig ist, da ich mich in PHP praktisch nicht auskenne.

                    Grüße
                      Klaus

          2. Hi folks,

            Also tut mir leid, ich werde dir nicht alles vor die Nase setzen.
            Beschäftige dich mit folgenden Funktionen:

            count()
            array_push()
            und allgemein mit Arrays.

            -Schaue, ob er in der Schleife jeweils das richtige ausgibt (Stichwort "echo")
            -Schaue ob er den Text korrekt als _Element_ zu $ADRESSE hinzufügt und versuche es ansonsten mit Array_push() oder $ADRESSE[] = $deintext
            -Google nach echo-debugging

            Greets - parse_error;

            --
            Dont ask to ask...
            .oO(Ohne Parse_Errors waere das Leben doch langweilig)
            SELFCode: ie:{ fl:{ br:< va:? ls:< fo:) rl:( n4:{ ss:} de:/ js:| ch:] sh:( mo:| zu:{
  2. Hallo gerena,

    Ich bitte um Hilfe.

    Das hast du bereits in deinem 1. Thread - warum bleibst du nicht dort?

    Grüße aus Nürnberg
    Tobias

    1. Hallo gerena,

      Ich bitte um Hilfe.
      Das hast du bereits in deinem 1. Thread - warum bleibst du nicht dort?

      Grüße aus Nürnberg
      Tobias

      Vielleicht aus Verzweifelung. Aber du hast Recht...