Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Array

Einklappen

Neue Werbung 2019

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

  • Problem mit Array

    Hallo Community!

    Ich habe da gerade ein, vermutlich kleines Problem und mein Kopf bekommt keine Logik rein

    Ich möchte eine MySQL-Tabelle mit rand() auslesen und mache das so:

    PHP-Code:
    $sql mysql_query("SELECT * FROM tabelle ORDER BY Rand() Limit 5");
    while (
    $ds mysql_fetch_object($sql)){
    $produkt $ds -> produkt;
    $proid $ds -> proid;
    $dummy mysql_query($query); }
    mysql_close($dz);

    if (
    is_array($produkt))
      {
        foreach(
    $produkt as $value)
          {
         
        
    echo 
    "$value<br>";
    }

    Soweit so gut, das ganze funzt auch, ich bekomme die gewünschten 5 Produkte per Zufall gelistet. Nun möchte ich jedoch auch die Produkt ID ($proid) zu dem Produkt gelistet bekommen und bekomme gerade nicht auf den Schirm, wie diese auch noch in den Array haue. Kann mir jemand helfen?

  • #2
    PHP-Code:
    $sql mysql_query("SELECT * FROM tabelle ORDER BY Rand() Limit 5");
    $produkt = array();
    while (
    $ds mysql_fetch_object($sql))
    {
        
    $produkt[$ds -> proid] = $ds -> produkt;
        
    $dummy mysql_query($query); 
    }

    mysql_close($dz);

    if (
    is_array($produkt))
    {
        foreach(
    $produkt as $key=>$value)
        {
                 echo 
    $key.":".$value."<br>";
            }

    Du erstellst einfach ein neues Array. In diesem Legst du deine Produkte ab und nimmst als Schlüssel die ID. Wenn du dann über das Array iterierst kannst du dann beides anzeigen.

    Kommentar


    • #3
      Dein code würde erstmal gar nichts ausgeben. Du bildest doch gar kein array $produkt

      Kommentar


      • #4
        @SJahr
        while ($ds = mysql_fetch_object($sql))
        {
        $produkt = array();
        $produkt[$ds -> proid] = $ds -> produkt;
        $dummy = mysql_query($query);
        }
        hiermit wirst Du genau ein produkt erhalten, da Du $produkt immer wieder neu initialisierst
        ach und für was steht die dummy zeile???

        Kommentar


        • #5
          Selektier doch einfach nur die Spaltenwerte die du benoetigst, dann hast du ja schon das gewuenschte Objekt. Was du dann damit machst, ob du die Objekte in einen Array schiebst bleibt dir ueberlassen.
          "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

          Kommentar


          • #6
            Zitat von HPR1974 Beitrag anzeigen
            @SJahr
            while ($ds = mysql_fetch_object($sql))
            {
            $produkt = array();
            $produkt[$ds -> proid] = $ds -> produkt;
            $dummy = mysql_query($query);
            }
            hiermit wirst Du genau ein produkt erhalten, da Du $produkt immer wieder neu initialisierst
            ach und für was steht die dummy zeile???
            Habs schon nach deinem ersten Post geändert. Habs gesehen gehabt

            Die Dummyzeile kommt von ihm. Hab die einfach mal gelassen

            Kommentar


            • #7
              Wenn du nicht SELECT * FROM schreiben würdest, wärst du wahrscheinlich selber auf die Lösung gekommen. Und wenn du die Daten nur ausgeben willst, dann kannst du auch den ganzen Array-Schrott weglassen. Der langen Diskussion kurzer Sinn:
              PHP-Code:
              $sql "
                  SELECT
                      proid,
                      produkt
                  FROM
                      tabelle
                  ORDER BY
                      RAND()"
              ;
              $res mysql_query($sql) or exit(mysql_error());
              while (
              $obj mysql_fetch_object($res)){
                  
              printf('%-4d: %s<br />'$obj->proid$obj->produkt);

              oder so ähnllich.
              Gruss
              L

              Kommentar


              • #8
                du willst doch die produkt id zum dazugehörigen produkt, dann hol dir aus der tabelle einfach beides und hau es ins array rein und dann führ deine srand operation aus

                Kommentar


                • #9
                  Autsch. Das tut weh. Warum seh ich nicht selber, dass eine Schleife reicht?

                  Kommentar


                  • #10
                    also ich würde schon den datenfetch von der ausgabe entkoppeln.

                    Kommentar


                    • #11
                      Danke @SJahr,

                      das hat mir sehr geholfen, jetzt läuft das ganze, wie ich es will.
                      Allen anderen natürlich auch ein großes "Dankeschön".

                      Das ganze befindet sich jetzt natürlich schon im Live-Einsatz

                      Kommentar


                      • #12
                        Zitat von HPR1974 Beitrag anzeigen
                        also ich würde schon den datenfetch von der ausgabe entkoppeln.
                        Vielleicht kannst du mir eine logische Begründung dafür liefern. Dann mach ich das in Zukunft möglicherweise auch.
                        Gruss
                        L

                        Kommentar


                        • #13
                          naja ich mache das immer so schon ganz einfach aus Strukturgründen, so wird die Ausgabe letztendlich von Funktionalitäten getrennt.

                          Stichworte: Übersichtlichkeit, CodingStyle, Trennung von Funktionalität und Ausgabe, Wiederverwendbarkeit, etc.

                          Kommentar


                          • #14
                            Also bis jetzt hast du mich nicht überzeugt! Was macht es für die Funktionalität für einen Unterschied, ob ich bei der Ausgabe über einen Array oder über einen Datenbank-Cursor iteriere. Und was ist daran übersichtlicher, wenn ich zuerst aus eine DB-Abfrage einen Array fülle und anschliessend in einer zweiten Iteration diese Daten wieder ausgebe. Mal ganz abgesehen vom erzeugten Overhead. Direkt wiederverwendbar ist das in beiden Versionen nicht. Und was du unter CodingStyle verstehst entzieht sich leider meiner Kenntnis.
                            Gruss
                            L

                            Kommentar


                            • #15
                              Außerdem kann man mit sowas auch an die grenzen des Allowed Memory Size kommen, wenn man alle Daten einer großen Abfrage in ein Array speichert. Das hab ich selbst schon erlebt, gut für die die diese Einstellung ändern können ist das nicht das Problem, gibt aber auch genug Leute die Webspace ohne Vollzugriff haben...

                              Kommentar

                              Lädt...
                              X