Ankündigung

Einklappen
Keine Ankündigung bisher.

Doppelter Array

Einklappen

Neue Werbung 2019

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

  • Doppelter Array

    Und hier ist sie, die Frage eines Anfängers, die mich zum Verzweifeln bringt:

    Ich möchte ein Array erstellen, welches aus Arrays besteht. Bis jetzt hatte ich es so probiert:

    PHP-Code:
      while($Datensatz=@mysql_fetch_assoc($Anfrage))
      {
       
    $ShipData["Type"]=$Datensatz["ShipType"];
       
    $ShipData["Supp"]=$Datensatz["ShipConstruction"];
       
    $Ships[]=$ShipData;
      } 
    Ich versuchte dann die einzelnen Werte so anzuzeigen:

    PHP-Code:
      for($Runde=0;$Runde<=count($Ships);$Runde++)
      {
       
    $TheBoat=$Ships[$Runde];
       
    $Befehl="Select `ShipType`, `ShipConstruction`, `CenturyBegin`, `CenturyEnd`, `Propulsion`, `Purpose ` "
               
    "from `FNR_News` ".
               
    "where `Headline`='".$TheBoat["Name"]."'";
       
    $Anfrage=@mysql_query($Befehl,$Verbindung); 
       
    $Datensatz=@mysql_fetch_assoc($Anfrage);
       if(
    $Datensatz)
       {
        
    $TheBoat["Desc"]="<font color=\"#008800\">Yes</font>";
       }
       else
       {
        
    $TheBoat["Desc"]="<font color=\"#880000\">No</font>";
       }
       
    $News1.="<tr>\n".
               
    "<td width=\"240\" align=\"left\" valign=\"top\">\n".
               
    $TheBoat["Type"].
               
    "</td>\n".
               
    "<td width=\"150\" align=\"left\" valign=\"top\">\n".
               
    $TheBoat["Type"].
               
    "</td>\n".
               
    "<td width=\"150\" align=\"left\" valign=\"top\">\n".
               
    $TheBoat["Type"].
               
    "</td>\n".
               
    "</tr>\n";
       
    $Ships[$Runde]=$TheBoat;
      } 
    Aber ha! So klappt es anscheinend nicht. Was, was also mache ich falsch? Eure Hilfe ist willkommen. Und danke für die Zeit, die Ihr diesem Problem widmet.

    Sven
    sigpic
    Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
    Sven


  • #2
    Also mal vorneweg:
    Statt mögliche Fehlermeldungen von mysql_xyz zu verstecken solltest Du sie abfangen.
    Wenn mysql_fetch_assoc() eine Fehlermeldung ausgeben will, bringt es Dir nix, diese einfach zu unterdrücken und dann trotzdem das falsche Ergebnis zu verwenden.
    Die ganzen @ sind nur Verschleierung von möglichen Problemen.

    Nun zum Problem:
    Deine Frage ist gelinde gesagt miserabel.
    Was zum Geier heißt "klappt anscheinend nicht"?????
    Mit so einer Aussage verdienst Du eigentlich nicht, dass man der Aufgabe Zeit widmet.

    Hoffentlich ist der Code wenigstens halbwegs vollständig.
    Wenn Du in $Ships[] nur ein Array mit den Schlüsseln "Type" und "Supp" steckst, kannst Du auch keinen Schlüssel "Name" rausholen.
    Das tust Du aber mit $TheBoat["Name"]. Oder zumindest versuchst Du es. Bei aktivierter Fehlerausgabe mit error_reporting(E_ALL) würde Dir auch eine passende Meldung genau das erzählen.
    Dadurch wird die SQL-Query Mist und das würde Dir mysql_query auch sagen, wenn Du den Fehler nicht unterdrücken würdest.

    Außerdem versuchst Du auf ein Element zu viel in $Ships zuzugreifen.

    Also:
    - Alle @ entfernen
    - error_reporting(E_ALL) oben in das Script packen damit Fehler auch schön gemeldet werden.
    - Bei weiteren Problemen eine ordentliche Fehlerbeschreibung liefern.
    **********************************
    Nein, ich bin nicht die Signatur.
    Ich putze hier nur.
    **********************************

    Kommentar


    • #3
      PHP-Code:
      <?php
        
      while($Datensatz=@mysql_fetch_assoc($Anfrage))
        {
         
      $ShipData["Type"]=$Datensatz["ShipType"];
         
      $ShipData["Supp"]=$Datensatz["ShipConstruction"];
         
      $Ships[]=$ShipData;
        }  

      ?>
      wenn ich mir das so angucke sagt mir das irgendwie das du in dem array $ShipData mit jedem durchlauf die daten überschreibst die an der stelle "type" stehen. genauso bei $ShipData["Supp"].
      $Ships[] hier dürfte es funktionieren, weil der index hier automatisch hochgezählt wird.
      leider steige ich durch den untern teil den du da gepostet hast nicht durch. vielleicht tun das ja andere oder du erklärst mal ein wenig mehr.

      eine sache allgemein zu arrays. wenn du mehrdimensionale arrays erstellen willst, klappt es so eigentlich am besten:

      PHP-Code:
      <?php
      $bla
      [] = array( text => hallo);
      ?>
      wenn du das dann in eine schleife packst und an der stelle von hallo eine variable schreiben würdest, würde da immer der inhalt der variable stehen.

      Kommentar


      • #4
        Hallo "Der_Gerhard" und "Snatch-Ic",

        vielen Dank für Eure Hilfe und Hilfsbereitschaft. Ich konnte das Problem endlich lösen und habe ein sehr gutes unf schönes Ergebnis erzielt, dank des Gerhardes, dessen Antwort mir den Fehler zu finden half.

        "Snatch-Ic", danke auch Dir, aber inzwischen konnte ich dank "Der_Gerhard"'s Beitrag vorankommen.

        "Der_Gerhard", Dank an Dich. Gute Hilfe. Tut mir leid, wenn meine Fragestellung zu locker und frei für Dich formuliert war. Manchmal ziehe ich es vor, mich sehr locker auszudrücken, was aber relativ selten ist (dazu muß der Frust sehr hoch sein). Hätte ich gewußt, daß Du derjenige bist, der mir hilft, hätte ich natürlich die Frage ganz anders formuliert. Aber ehrlich: vielen Dank. Du hast den Fehler gesehen, den ich stundenlang nicht sehen konnte. Gerade wenn man etwas sucht, findet man es nicht...

        Grüße,

        Sven
        sigpic
        Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
        Sven

        Kommentar


        • #5
          Was meinst Du denn mit mit "zu locker formuliert"? Du hat ja eigentlich gar nichts formuliert.

          Auch andere Besucher hier können besser helfen, wenn Du sagst, was nicht funktioniert.

          So eine Kleine Meldung wie "undefined index 17 ..." oder so würde allen viel weiter helfen. Das tritt dann nämlich auf, wenn Du über den letzten Eintrag von $Ships hinaus darauf zugreifen willst, weil Du "<= count($Ships)" verwendet hast.

          Vielleicht haben gerade wegen der fehlenden Infos die anderen nicht geantwortet. Wer weiß...?

          Und um noch etwas klugzuscheißen: Im Deutschen gibt es kein Apostroph beim Genitiv-S. Es wird einfach so angehängt.
          **********************************
          Nein, ich bin nicht die Signatur.
          Ich putze hier nur.
          **********************************

          Kommentar


          • #6
            Apostroph im Deutschen: Ja, mag sein. Nur lebe ich halt schon seit Jahren nicht einmal mehr auf dem europäischen Kontinent (Google-Search mit meinem Namen in Anführungszeichen). Mag sein, daß sich da die sprachlichen Eigenheiten etwas mischen. Aber ansonsten, glaube ich, bin ich doch noch ganz gut im Deutschen, oder?

            "Was meinst Du denn mit mit "zu locker formuliert"? Du hat ja eigentlich gar nichts formuliert. "... Ja, nun ist es raus: ich ziehe eine politische Laufbahn in Erwägung!

            "Der_Gerhard", Du hast ja Recht. Aber laß uns nun diesen Thread schließen. Erneut, vielen Dank.

            Grüße,

            Sven
            sigpic
            Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
            Sven

            Kommentar

            Lädt...
            X