Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL Ausgabe anpassen

Einklappen

Neue Werbung 2019

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

  • michaelxxx
    hat ein Thema erstellt SQL Ausgabe anpassen.

    SQL Ausgabe anpassen

    Hallo,

    ich hätte ein Frage. Ich möchte mit einer sql Abfrage eine Art Tagcloud ausgeben.

    Code:
    ...
    $query = sprintf("SELECT name, ordner FROM photographers order by rand(now()) Limit 20");
    $result = @mysql_query($query);
    while ($row = @mysql_fetch_array($result)) {
      echo "<font size='2'><a href='../".$row[ordner]."' title='".$row[name]."'>".$row[name]."</a>&nbsp;";
      echo "<font size='1'><a href='../".$row[ordner]."' title='".$row[name]."'>".$row[name]."</a>&nbsp;";
      }
    ?>
    Hier hätte ich es gerne, das er in der while Schleife den ersten Namen mit size=2 ausgibt, den nächsten Namen aber nur noch mit size=1.

    So wie ich es hier habe, schreibt er mir logischerweise den gleichen Namen 2mal hin - einmal mit size=2 und dann mit size=1.

    Wie müsste ich das abändern?

    Wäre für Tips dankbar.

    Grüße
    Michael

  • phpler
    antwortet
    das funktioniert sicherlich.

    Aber von einer TagCloud ist's ja noch himmelweit entfernt.

    Soll's denn bei abwechselnd size=2?1 bleiben oder doch mal "gecloudet" werden?

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Für diesen einfachen Wechsel brauchst du nicht mal eine Modulo-Berechnung:
    PHP-Code:
    ...
    $query "
        SELECT 
            name, 
            ordner 
        FROM 
            photographers 
        ORDER BY 
            rand() 
        LIMIT 20"
    ;
    $result mysql_query($query) or die(mysql_error());
    $size 2;
    while (
    $row mysql_fetch_assoc($result)) {
      echo 
    "<font size='$size'><a href='../" $row[ordner] . "' title='" $row[name] . "'>" $row[name] . "</a>&nbsp;";
      
    $size $size == 1;

    Einen Kommentar schreiben:


  • HPR1974
    antwortet
    achja und stell deine Fragen demnächst so wie Du sie meinst...

    Einen Kommentar schreiben:


  • HPR1974
    antwortet
    Zitat von michaelxxx
    Hier hätte ich es gerne, das er in der while Schleife den ersten Namen mit size=2 ausgibt, den nächsten Namen aber nur noch mit size=1.
    also wenn das immer abwechselnd sein soll dann kann modulo ($i%2==0) Dein Freund werden...

    Einen Kommentar schreiben:


  • David
    antwortet
    Ah ha, also abwechselnd.

    Einen Kommentar schreiben:


  • michaelxxx
    antwortet
    wie schon oben geschrieben möchte ich damit eine "Art" Tagcloud ausgeben, mit 20 zufällig ausgewählten Namen aus meiner Datenbank.

    Um die Namen optisch voneinander abzuheben, hätte ich den ersten Namen deshalb in size=2, den 2. Namen in size=1, den 3. wieder in size=2 usw.

    das wäre es, was ich bräuchte.

    Einen Kommentar schreiben:


  • David
    antwortet
    Zitat von michaelxxx Beitrag anzeigen
    Hier hätte ich es gerne, das er in der while Schleife den ersten Namen mit size=2 ausgibt, den nächsten Namen aber nur noch mit size=1.
    Das es mehr als zwei Namen gibt, kann man aus der Beschreibung nicht heraus lesen. Was soll mit den folgenden Einträgen passieren?

    Einen Kommentar schreiben:


  • michaelxxx
    antwortet
    ok, mit dem mysql_error hab ich hoffentlich richtig eingebaut.

    Code:
    $result = mysql_query($query) OR die(mysql_error());
    $i=1;
    while ($row = @mysql_fetch_array($result)) {
      echo '<font size="'.($i==1?'2':'1').'"><a href="../'.$row[ordner].'" title="'.$row[name].'">'.$row[name].'</a>&nbsp;';
    $i++;
      }
    ?>
    Aber Deine Zähl-Schleife scheint noch nicht ganz richtig zu sein. Momentan schreibt er mir so nur das erste Wort in size=2, den ganzen rest aber wieder nur in size=1...

    bitte nochmal um hilfe (-:

    Einen Kommentar schreiben:


  • HPR1974
    antwortet
    btw
    was soll das bringen:
    $query = sprintf("SELECT name, ordner FROM photographers order by rand(now()) Limit 20");
    und hier:
    $result = @mysql_query($query);
    gewöhn Dir mal gleich das @ab und mach immer ein mysql_error() an Deine mysql_query

    Einen Kommentar schreiben:


  • HPR1974
    antwortet
    zB so:
    $i=1;
    while ($row = mysql_fetch_array($result)) {
    echo '<font size="'.($i==1?'2':'1').'"><a href="../'..$row[ordner].'" title="'.$row[name].'">'.$row[name].'</a>&nbsp;';
    $i++;
    }

    Einen Kommentar schreiben:


  • michaelxxx
    antwortet
    klingt gut und logisch, hilft mir aber noch nicht ganz weiter, da ich nicht weiß, wie ich das anstellen soll.

    kannst du mir da bitte helfen?

    Einen Kommentar schreiben:


  • HPR1974
    antwortet
    ein zähler mitlaufen lassen und entsprechend verwenden Also wenn Zähler == 1 dann size 2 sonst size 1

    Einen Kommentar schreiben:

Lädt...
X