Ankündigung

Einklappen
Keine Ankündigung bisher.

Array-Daten in Variable bringen

Einklappen

Neue Werbung 2019

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

  • Array-Daten in Variable bringen

    Hallo zusammen

    Ich habe zur Zeit ein Problem damit Array-Daten in eine Variable zu bringen. Ich hoffe ihr könnt mir vielleicht dabei helfen.

    Hier erstmal mein momentaner Code-Snippet.
    PHP-Code:
    $sql "SELECT * FROM news WHERE news_art = '1' ORDER BY news_date DESC LIMIT 5";

      if( !
    $result $db->sql_query($sql) )
      {
        
    message_die(GENERAL_ERROR"Could not obtain term data"""__LINE____FILE__$sql);
      }


      while( 
    $term_row $db->sql_fetchrow($result) )
      {
        
    $template->assign_block_vars("term_row", array(
          
    "NEWS_ID" => $term_row['news_id'],
          
    "NEWS_HEADER" => $term_row['news_header'],
          
    "NEWS_DATE" => $term_row['news_date'],
          
    "NEWS_AUTOR_ID" => $term_row['news_autor_id'],
          
    "NEWS_TEXT" => $term_row['news_text'],
          
    "NEWS_IMGURL" => $term_row['news_imgurl'],
          
    "NEWS_POSTURL" => $term_row['news_posturl']
        ));
       } 
    Nun möchte ich speziell die Daten aus NEWS_AUTOR_ID auslesen, um mit dieser ID eine weitere MySQL-Abfrage zu gestalten.

    Ich habe schon einiges herumprobiert, bin aber noch nicht auf einen grünen Zweig gekommen.

    Danke schon einmal für das Lesen. Ich wäre um jede Hilfe dankbar.
    Gruß,
    Drift

  • #2
    Und was hast du ausprobiert?
    Die ID steht doch in $term_row['news_autor_id']

    Kommentar


    • #3
      Um helfen zu können müsstest du schon schreiben was du ausprobiert hast und wie das ganze ausgesehen hat.
      Ansonsten wie der Vorredner sagte steht der Inhalt in $term_row['news_autor_id']
      Das ganze könnte so aussehen (nur C&P):
      PHP-Code:
        $myNewsAuhtorIDs = array();
        while( 
      $term_row $db->sql_fetchrow($result) ) 
        { 
          
      $template->assign_block_vars("term_row", array( 
              ...
          )); 
          
      $myNewsAuhtorIDs[] = $term_row['news_autor_id'];
         } 
      "My software never has bugs, it just develops random features."
      "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

      Kommentar


      • #4
        Wenn du zu der autor_id noch die Infos vom Autor haben möchtest dann solltest du dir dringend mal JOINS anlesen. Dann brauchst du keine weiteren DB Abfragen mehr!

        Kommentar


        • #5
          Hallo ihr beiden (edit: sind ja schon drei ^^)

          Danke für die so schnelle Antwort am frühen Morgen

          Mit der Variable $term_row['news_autor_id'] habe ich bereits versucht weiter zu arbeiten. Dabei bin ich so vorgegangen.

          PHP-Code:
          $sql "SELECT * FROM news WHERE news_art = '1' ORDER BY news_date DESC LIMIT 5";

          if( !
          $result $db->sql_query($sql) )
          {
            
          message_die(GENERAL_ERROR"Could not obtain term data"""__LINE____FILE__$sql);
          }

          while( 
          $term_row $db->sql_fetchrow($result) )
          {
            
          $template->assign_block_vars("term_row", array(
              
          "NEWS_ID" => $term_row['news_id'],
              
          "NEWS_HEADER" => $term_row['news_header'],
              
          "NEWS_DATE" => $term_row['news_date'],
              
          "NEWS_AUTOR_ID" => $term_row['news_autor_id'],
              
          "NEWS_TEXT" => $term_row['news_text'],
              
          "NEWS_IMGURL" => $term_row['news_imgurl'],
              
          "NEWS_POSTURL" => $term_row['news_posturl']
            ));
          }  
             
          $sql "SELECT username FROM phpbb_users WHERE user_id = ".$term_row2['news_autor_id']."";

          while( 
          $term_row2 $db->sql_fetchrow($result) )
          {
            
          $template->assign_block_vars("term_row2", array(
              
          "NEWS_AUTOR_NAME" => $term_row2['username'],
            ));

          Ich gebe das Ergebnis (NEWS_AUTOR_NAME), sowie alle Ergebniss aus der ersten MySQL-Abfrage mittels {term_row.NEWS_HEADER} aus. Bei den Array-Inhalten der ersten Abfrage klappt das auch wunderbar. Aber an die zweiten komme ich nicht ran.

          Drift

          Kommentar


          • #6
            1. Woher kommt bitte auch $term_row2? Die Variable existiert nicht, von daher wird auch sicher kein 'news_autor_id' da drinnen stehen.

            2. Hab ich dir bereits gesagt du sollst dir JOINS anschauen. Die Sind exakt das was du brauchst!

            Kommentar


            • #7
              Jopp. mit nem kleinen LEFT JOIN brauchste das zweite SQL nicht!
              "My software never has bugs, it just develops random features."
              "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

              Kommentar


              • #8
                Du arbeitest nicht mit $term_row sondern mit $term_row2, diese Variable existiert aber an der Stelle noch gar nicht. Weiterhin hast du viele Datensätze mit eine Autoren-ID ($term_row wird in einer while Schleife immer wieder neu mit Werten belegt). Wenn du auf $term_row NACH der Schleife zugreifst, steht darin nur der letzte Datensatz.

                edit: omfg, viiiiel zu spät
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  Guten Morgen

                  Kommentar


                  • #10
                    Hallo zusammen

                    Nochmals vielen Dank für eure Hilfe. Ich habe es nun mit JOIN probiert und hinbekommen. Das Stichwort hat mir einfach gefehlt.

                    Danke für eure Zeit,
                    Drift

                    Kommentar

                    Lädt...
                    X