Variable erstellen?

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

  • Variable erstellen?

    Hi.

    Ich habe folgendes Problem.

    Ich habe ein News Script, welches aus 3 Tabellen besteht.
    1) News
    2) authoren
    3) icons

    Die Informationen des postings stammen alle aus der Tabelle 'News'

    In dieser Tabelle sind zwei Felder, die eine ID ausgeben (authoren_id und icon_id)

    Nun habe ich diese Schleife um die Datensätze der News Datenbank auszugeben

    PHP-Code:
    if (!ISSET($step))  # Einträge anschauen
        
    {
            
        echo 
    "<h3><center>Übersicht aller Einträge:</center></h3>";

        
        
    $view_sql="SELECT * FROM $news";
        
    $view_erg=mysql_query($view_sql);
        
    $view_num=mysql_num_rows($view_erg);

        for (
    $i 0$i $view_num$i++) {
        
    $view_output mysql_fetch_array($view_erg);

        
    // HTML Ausgabe habe ich mal rausgeschnitten.
            
    }
            } 
    Da ich sowohl für die Authoren als auch für die Icons ja nur die IDs habe, muss ich beides nochmal mit einer Abfrage aus der jeweiligen Tabelle holen.
    Also habe ich in die bereits vorhandene For-Schleife eine weitere Abfrage eingefügt. Sieht dann folgendermassen aus:

    PHP-Code:
    if (!ISSET($step))  # Einträge anschauen
        
    {    
        echo 
    "<h3><center>Übersicht aller Einträge:</center></h3>";

        
        
    $view_sql="SELECT * FROM $news";
        
    $view_erg=mysql_query($view_sql);
        
    $view_num=mysql_num_rows($view_erg);

        for (
    $i 0$i $view_num$i++) {
        
    $view_output mysql_fetch_array($view_erg);

        
    # Start der Authoren-Schleife
        
    $authoren_sql="SELECT * FROM $authoren WHERE id = '$view_output[author_id]'";
        
    $authoren_erg=mysql_query($authoren_sql);
        
    $authoren_num=mysql_num_rows($authoren_erg);
        
            for (
    $j 0$j $authoren_num$j++) {
        
    $authoren mysql_fetch_array($authoren_erg);
        echo 
    "<a href=\"mailto:$authoren[email]\">$authoren[name]</a>";
                }    
    # Ende der Authoren-Schleife
        

            
    }
            } 
    Diese Konstruktion funktioniert aber leider nur beim ersten Datensatz.
    Danach meldet PHP: mysql_num_rows(): supplied argument is not a valid MySQL result resource in d:\wamp\public\alex\index.php on line 36.
    Das ist die Zeile, in der der Num_rows für die Authoren-Schleife ausgeführt wird.

    Nun hatte ich vielleicht die Idee, dass man das lösen könnte, in dem man eine Schleife macht, die alle Authoren raussucht und dessen Wert dann in bezug auf die $news[author_id] ausgibt. Das währe auch wesentlich schneller, als bei jeder Ausgabe, noch 2 Abfragen zu machen. (Die Icon Tabelle funktioniert nach dem gleichen Prinzip)

    Also bei $news[author_id] wird $author_sammlung1 oder so ausgegeben.

    Ich habe dazu aber leider nichts brauchbares gefunden und frage mich, wie man das machen könnte.

    Hat da jemand 'ne Idee?

    Thx schonmal
    Greetz und nen schönen Freitag

  • #2
    teste mal so.
    ohne garantie.

    PHP-Code:
    $authoren_sql "SELECT * FROM ".$authoren." WHERE id = '".$view_output["author_id"]."'"
    ich hoffe, du siehst, was ich gemacht habe.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Hoi,
      also ich würde die abfrage nach der anzahl an einträgen so gestallten...
      PHP-Code:
      $counter mysql_query("SELECT Count(*) as total FROM $news");
      $eintraege mysql_fetch_array($counter);

      for (
      $i 0$i $eintraege[total]; $i++) { 
      so hast du gleich zwei fliegen mit einer klappe geschlagen :-)

      jedoch würde ich generell keine for sondern while schleifen nehmen. die schleife beendet sich nach den durchlaufen des letzten eintrags selbst.

      Kommentar


      • #4
        so hast du gleich zwei fliegen mit einer klappe geschlagen :-)
        und wie gehts hier weiter?
        PHP-Code:
        $counter mysql_query("SELECT Count(*) as total FROM $news");
        $eintraege mysql_fetch_array($counter);

        for (
        $i 0$i $eintraege[total]; $i++) { 
        dir ist schon klar, dass deine query nur einen datensatz zurückliefert?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Original geschrieben von Qwox

          jedoch würde ich generell keine for sondern while schleifen nehmen. die schleife beendet sich nach den durchlaufen des letzten eintrags selbst.
          Was spricht gegen For-Next Schleifen? Ich kann genauso gut
          PHP-Code:
          $menge = @mysql_numrows($result); 
          Die Anzahl der Datensätze ermitteln und davon dann rechnerisch das Minimum und das Maximum davon ermitteln mit Anzahl der Beiträge pro Seite in Abhängigkeit. So hab ich immer den Start und Endwert für die jeweilige Seite.

          Aber dein Posting ist doch ein bissle seltsam oder?
          [color=blue]MfG Payne_of_Death[/color]

          [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
          [color=red]Merke:[/color]
          [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

          Murphy`s Importanst LAWS
          Jede Lösung bringt nur neue Probleme
          Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
          In jedem kleinen Problem steckt ein großes, das gern raus moechte.

          Kommentar

          Lädt...
          X