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

  • 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


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

    Kommentar


    • #3
      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?

      Kommentar


      • #4
        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++;
        }

        Kommentar


        • #5
          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

          Kommentar


          • #6
            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 (-:

            Kommentar


            • #7
              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?

              Kommentar


              • #8
                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.

                Kommentar


                • #9
                  Ah ha, also abwechselnd.

                  Kommentar


                  • #10
                    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...

                    Kommentar


                    • #11
                      achja und stell deine Fragen demnächst so wie Du sie meinst...

                      Kommentar


                      • #12
                        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;

                        Gruss
                        L

                        Kommentar


                        • #13
                          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?

                          Kommentar

                          Lädt...
                          X