Ankündigung

Einklappen
Keine Ankündigung bisher.

Array ansprechen

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

  • Array ansprechen

    Hallo zusammen,

    ich lasse mir aus meiner Datenbank einige Datensätze ausgeben, die ich dann in arrays umwandle. Insgesamt sind es 2 Arrays, die mir ausgegeben werden. Nun frage ich mich, wie ich ich dezidiert nur das erste oder das zweite Array ansprechen kann? Ich habe ein Feld ID, das als eindeutiger Identifikator dient, aber ich weiß leider nicht wie ich das array darüber ansprechen kann... (Bild anbei). Oder kann man bereits in der Ausgabe sagen, dann man nur das Array mit der ID = x ausgeben möchte?

    Vielen Dank!
    Angehängte Dateien


  • #2
    PHP-Grundlagen lernen?

    https://www.php-einfach.de/php-tutorial/php-array/

    https://www.w3schools.com/php/php_arrays.asp

    Kommentar


    • #3
      Sorry, ich glaube wir reden aneinander vorbei... Ich möchte mir nicht das Feld ID ausgeben lassen.

      Also bespielsweise wenn ich
      PHP-Code:
      echo $variable["ID"]; 
      schreibe, gibt es mir die ID 1 und die ID 2 aus. Wie schaffe ich es, dass ich nur eine der beiden IDs ausgebe?

      Kommentar


      • #4
        Indem du Array-Grundlagen lernst, dann weißt du es.

        Wie in den beiden von mir verlinkten Seiten erklärt wird (und du dir offenbar nicht angeschaut hast):

        echo $variable[0]['ID'];
        echo $variable[1]['ID'];

        Kommentar


        • #5
          Genau das habe ich schon probiert, aber genau das funktioniert eben nicht, da ich aus irgend nem Grund keinen Index bei dem Array habe... Es wird mir nämlich gar nichts ausgegeben... Liegt es vielleicht daran, dass ich mein sql query über ne while Schleife hole?

          PHP-Code:
          while($fetch mysql_fetch_assoc($result)) {
          echo 
          $fetch[0]['ID'];
          echo 
          $fetch[1]['ID'];
           } 

          Kommentar


          • #6
            Zeit doch den ganzen Code, dann kann man Dir helfen.

            Kommentar


            • #7
              Das ist soweit der ganze Code. Davor kommt nur ein Standard mysql_query, mit der ich die Sachen aus der DB abfrage.

              Kommentar


              • #8
                Eben, das ist in dem Fall nicht alles.

                Bezüglich mysql_query und allen mysql_*-FUnktionen. Die sind veraltet und dürfen (sollten) nicht mehr verwendet werden.

                Kommentar


                • #9
                  Ok, dann hier der ganze Code:

                  PHP-Code:
                  $result mysql_query("SELECT * FROM component_group, component_subgroup, bicycle_parts, " $selected_val ." WHERE " $selected_val ".bicycle_part=bicycle_parts.ID AND bicycle_parts.component_group_fk=component_group.group_ID AND bicycle_parts.component_subgroup_fk=component_subgroup.subgroup_ID ORDER BY bicycle_parts.ID ASC");

                         while(
                  $fetch mysql_fetch_assoc($result)) {
                  echo 
                  $fetch[0]['ID'];
                  echo 
                  $fetch[1]['ID'];
                   } 

                  Kommentar


                  • #10
                    mysql_* Funktionen gibt es nicht mehr. Wo hast du den Steinzeitcode ausgegraben? Und SELECT * sollte nicht verwendet werden.

                    Kommentar


                    • #11
                      Willst du denn nur den einen Datensatz haben und ausgeben oder willst du alle Datensätze haben und verschiedene ausgeben?

                      Wenn ersteres würde ich das in die SQL-Abfrage reinpacken (WHERE ID=?).
                      Wenn zweiteres: hellbringer hat den Link zu den Arrays schon gepostet. In der While-Schlaufe gibts für jeden Eintrage einen Durchlauf, damit baust du Dir einen Mehrdimensionalen Array.

                      Weiter:
                      - SELECT * ist böse, gibt die Spalten an, die du haben willst.
                      - Keine mysql_* Funktionen mehr verwenden. mysqli oder prepared statements ist das stichwort.
                      - Du hast eine Mysql-Injection-Lücke hier. Mit prepred statements kannst du die beheben.

                      Kommentar


                      • #12
                        Zitat von invers.square Beitrag anzeigen
                        Sorry, ich glaube wir reden aneinander vorbei... Ich möchte mir nicht das Feld ID ausgeben lassen.

                        Also bespielsweise wenn ich
                        PHP-Code:
                        echo $variable["ID"]; 
                        schreibe, gibt es mir die ID 1 und die ID 2 aus. Wie schaffe ich es, dass ich nur eine der beiden IDs ausgebe?
                        Schränke die Bedingung im WHERE Teil halt ein.
                        zum Beispiel mit zusätzlichem
                        Code:
                        .... AND bicycle_parts.ID = 1
                        ausserdem bleibt noch zu erwähnen, dass
                        • man kein SELECT * verwenden sollte, sondern alle Spalten aufführen sollte die man als Ergebnis haben möchte.
                        • man JOINS als ANSI Variante schreibt
                        • man keine while Schleife braucht wenn ganz sicher nur 1 oder kein Datensatz zurückkommt
                        EDIT:
                        Manches ist schon erwähnt worden, was lediglich deren Dringlichkeit auf Korrektur unterstreicht.

                        Kommentar


                        • #13
                          Hey, danke für die ganzen netten Tipps. Es ist leider so, dass die ganzen Tutorials im Netz noch immer mit mysql_* arbeiten - dort habe ich es eben her. Werde meinen Code dementsprechend anpassen.

                          Folgendes zum Problem:

                          Am Ende, wenn alles fertig ist, werden dort wahrscheinlich bis zu 100 Datensätze (letztendlich dann 100 arrays) auf dem Bildschirm stehen und das ist auch gut so, denn ich möchte mir alle ausgeben lassen.
                          Ich könnte es natürlich mit einzelnen Abfragen machen, aber das wäre ja brutal viel Schreibarbeit und auch nicht dynamisch genug...

                          Letztendlich möchte ich dann einen Datensatz im Frontend bearbeiten können und dafür müsste ich mir ja das jeweilige array dann selektieren. Genau da checke ich nicht, wie ich auf ein einzelnes array "zugreifen" kann.

                          Kommentar


                          • #14
                            Zitat von invers.square Beitrag anzeigen
                            Letztendlich möchte ich dann einen Datensatz im Frontend bearbeiten können und dafür müsste ich mir ja das jeweilige array dann selektieren. Genau da checke ich nicht, wie ich auf ein einzelnes array "zugreifen" kann.
                            Nein, du musst nicht auf ein Array selektieren.

                            Du hast eine DB, dort selektierst du und zwar anhand der ID, die du ja mit ausgibst.

                            Beispiel
                            DB gibt Daten aus

                            ID Name Geb-Datum
                            ---------------------
                            34 Florian 2000-01-12
                            35 Babsi 1999-11-09
                            36 Jo-senf 2001-03-14

                            Jetzt willst du das Geburtsdatum von Babsi ändern.
                            Babsi hat ID 35 in der Datenbank und nur diesen Wert übergibst du, mehr nicht.






                            Kommentar


                            • #15
                              Hm, ja das mag sein, aber trotzdem müsste ich die Werte aus dem jeweiligen Array ansprechen. Alleine schon der Formatierung der Ausgabe wegen. Den Wert "image" muss ich ja beispielsweise in ein <img Tag packen.
                              Es bleibt also das Problem, dass ich keine einzelnen Werte ansprechen kann, sondern immer nur alle Werte des arrays ausgegeben werden...

                              Kommentar

                              Lädt...
                              X