schubert: ergebnis von mysql_fetch_array gezielt abfragen

Guten Abend,

ich habe eine mysql tabelle die ich mit php abfrage, die abfrage speichere ich in einer variable, diese wiederum also das Ergebnis der Abfrage packe ich in ein Array mittels mysql_fetch_array.  In der Tabelle sind drei Zeilen, meine Frage lautet nun wie kann ich z.B auf Atribut B von Zeile 2 direkt zugreifen?

echo $ergebnis[0][1]; ist wohl falsch.

ich komm nur an die erste Zeile ran echo $ergebnis[0];

Hoffe das ist soweit richtig und verständlich.

mfg schubert;

  1. Hello,

    ich komm nur an die erste Zeile ran echo $ergebnis[0];

    jup, weil du einem Irrglaube aufsitzt was die Funktion von mysql_fetch_array angehst - siehe ersten Satz: "einen Datensatz". Du musst es wiederholt aufrufen um alle Datensätze zu bekommen.

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Because good guys need a break every once in a while.  --  Morty in "Click" (Columbia Pictures, 2006)
    1. Hi,

      ok mit einer while schleife könnte ich das ergebnis wohl durchlaufen.

      Ich versuche zeile für zeile etwas zu berechnen und danach die Ergebnisse nach Reinfolge auszugeben, also das niedrigste zuerst.

      $ingrit = array();

      while($veras = mysql_fetch_array($abfrag))
        {

      $ver = $veras[1] + $veras[2];
        $ingrit.$ver; // hier versuche ich das Ergebnis einem Array anzuhängen, ist das irgendwie mit dem punkt möglich
        echo $ver;

      }

      echo $ingrit[1];

      mfg schubert;

      1. Hello,

        Du kannst Deine Variablen so nennen wie Du willst, aber Du solltest sie so benennen, dass jeder, der den Code mal pflegen muss, _sofort_ etwas damit anfangen kann.

        Warum führst Du die Berechnnung außerhalb der Datenbank durch?

        Ein harzliches Glückauf

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hello,

          Du kannst Deine Variablen so nennen wie Du willst, aber Du solltest sie so benennen, dass jeder, der den Code mal pflegen muss, _sofort_ etwas damit anfangen kann.

          beim experementieren nenne ich sie irgendwie um, nachher mach ich alles erkennbar.

          Warum führst Du die Berechnnung außerhalb der Datenbank durch?

          gute Frage, kann ich wohl auch in mysql schon bewerkstelligen, wenn du so fragst.

          Ok, wenn ich dann die ergebnisse habe, wie kann ich die nach reinfolge ausgeben?

          mfg schubert;

          1. hallo,

            mit array_pusch hab ich die ergebnisse einem array hinzugefügt und mit sort sort numeric habe ich die reinfolge sortiert.

            danke soweit bis später.

            $ingrit = array();

            while($veras = mysql_fetch_array($abfrag))
              {

            $ver = $veras[1] + $veras[2];
              array_push($ingrit,$ver);
              //echo $ver;

            }

            sort($ingrit,SORT_NUMERIC);
              foreach($ingrit as $low){
              echo $low.'<br>';}

            mfg schubert;

            1. Moin!

              mit array_pusch hab ich die ergebnisse einem array hinzugefügt und mit sort sort numeric habe ich die reinfolge sortiert.

              danke soweit bis später.

              MySQL kann prima selbst addieren, und es kann auch prima sortieren. Alles das, was du hier suboptimal mit PHP erledigst, könntest du problemlos durch einen passenden SQL-SELECT automatisch erhalten.

              - Sven Rautenberg

              --
              "Love your nation - respect the others."
              1. hallo,

                das hört sich ganz gut an, könntest du mir bitte die wichtigsten Befehle dazu nennen.

                mfg schubert;

                1. Hello,

                  das hört sich ganz gut an, könntest du mir bitte die wichtigsten Befehle dazu nennen.

                  könntest du bitte SELBST im Manual nachschlagen! (+ / ORDER BY)

                  MfG
                  Rouven

                  --
                  -------------------
                  sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
                  Ist Dir langweilig? Willst du Spaß? Willst Du Party? Ganz einfach!!! Schicke eine SMS mit dem Bestellwort "Feuer" an die 112 und innerhalb von 5 Minuten stehen 20 Männer mit lustigen Partyhüten, Sirenen und Partywagen vor deinem Haus!  --  Herkunft unbekannt
                  1. hallo,

                    is ja geil, man kann ja einfach drauf los rechnen bei mysql.

                    cool, werd ich was draus machen.

                    danke soweit.

                    mfg schubert;

                2. Hello,

                  das hört sich ganz gut an, könntest du mir bitte die wichtigsten Befehle dazu nennen.

                  Eine Funktionsübersicht findest Du hier:
                  http://dev.mysql.com/doc/refman/5.0/en/func-op-summary-ref.html

                  Ein harzliches Glückauf

                  Tom vom Berg

                  --
                  Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
  2. Hello (Schu)Bert, :-)

    ich habe eine mysql tabelle die ich mit php abfrage, die abfrage speichere ich in einer variable, diese wiederum also das Ergebnis der Abfrage packe ich in ein Array mittels mysql_fetch_array.  In der Tabelle sind drei Zeilen, meine Frage lautet nun wie kann ich z.B auf Atribut B von Zeile 2 direkt zugreifen?

    Das sieht zwar so aus, als würdest Du es so tun, aber da passiert vermutlich etwas anderes:

    Du fragst das MySQL Datenbanksysteme mit einem "Query-String" ab.
    Dabei greifst Du dann auf Deine Tabelle zu.

    Das Abfrageergebnis wird von MySQL in einem Transfer-Buffer gespeichert.
    PHP holt es aus diesem heraus und legt es unter einem Handle in einem Speicherbereich außerhalb des PHP-Speichers ab (also noch im Bereich der DB).

    Du fragst nun unter Verwendung dieses Handles und einer speziellen Funktion, nämlich in Deinem Fall

    $_record = mysql_fetch_array($handle);

    jeweils den aktuell anstehenden Datensatz (die Zeile) des "Resultsets" ab.
    Der Datensatzzeiger rutscht danach automatisch auf die nächste Zeile.

    In Deinem $_record steht also immer nur der eine eben gerade abgefragte Datensatz.
    Auf dessen Elemente kannst Du zugreifen, wie auf jedes PHP-Array

    echo htmlspecialchars(print_r($_record,1));

    würde Dir diesen einen Satz HTML-konform auf die Standarsausgabe befördern.

    Wenn Du nun aus dem Resultset direkt ein spezielles Element haben willst, ohne vorher alle Zeilen ins den Speicherbereich des PHP-Scriptes zu übernehmen, musst Du eine andere Funktion verwenden

    Du könntest den Satzzeiger z.B. gezielt auf einen Datensatz einstellen
    http://de3.php.net/manual/de/function.mysql-data-seek.php
    und dann mittels mysql_fetch_assoc() die ganze Zeile auslesen.
    Dabei Wird der Datensatzeiger natürlich auch wieder einen Satz weiter bewegt.

    Um alle Zeilen ins PHP-Scope zu übernehmen, kannst Du eine Schleife laufen lassen:

    $res = mysql_query($sql, $con);

    $_resulttable = array();

    if ($res)
       {
         while( $_record =  mysql_fetch_assoc($res))
         {
            $_resulttable[] = $_record;
         }
       }

    echo "<pre>\r\n";
       echo htmlspecialchars(print_r($_resulttable,1));
       echo "</pre>\r\n";

    Den Rest müsstest Du dann selber hinbekommen.

    Außerdem solltest Du Dein SQL-Query immer so gestaslten, dass Du keine nutzlosen Ergebnisse bekommst, also nur soviel aus der Datenbank abfragen, wie auch verwertet wird.

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de