[MySQL 3.23.X] Rand()

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

  • [MySQL 3.23.X] Rand()

    Was ist daran falsch?
    PHP-Code:
    $res mysql_query("SELECT id FROM kunstwerke ORDER BY rand() LIMIT 0,1");
    $num mysql_num_rows($res);
    if(
    $num == 1)
        {
        while(
    $row mysql_fetch_array($res))
            {
            
    $img "$row[bild_m]";
            }
        }
    else
        {
        
    $img "/img/bild_m/dontknow.gif";
        } 
    Habe ich keinen Datensatz in der DB wird das else-Bild angezeigt.
    Habe ich aber einen Datensatz wir mir nur eine leeres $img angezeigt.
    *winks*
    Gilbert
    ------------------------------------------------
    Hilfe für eine Vielzahl von Problemen!!!
    http://www.1st-rootserver.de/

  • #2
    LIMIT 1
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Kommentar


    • #3
      Original geschrieben von schmalle
      LIMIT 1
      Was LIMIT 1?

      LIMIT 1,1 oder nur LIMIT 1?

      Egal wie $img bleibt leer
      *winks*
      Gilbert
      ------------------------------------------------
      Hilfe für eine Vielzahl von Problemen!!!
      http://www.1st-rootserver.de/

      Kommentar


      • #4
        öhm, 1. nur LIMIT 1
        2. wie soll $row[bild_m] angezeigt werden, wenn im select nur id drin ist?
        h.a.n.d.
        Schmalle

        http://impressed.by
        http://blog.schmalenberger.it



        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
        ... nur ohne :-)

        Kommentar


        • #5
          Deien Sig stimmt mal wieder! *schäme*
          *winks*
          Gilbert
          ------------------------------------------------
          Hilfe für eine Vielzahl von Problemen!!!
          http://www.1st-rootserver.de/

          Kommentar


          • #6
            Gut die Bilder zeigt er mir jetzt zwar an, aber er wechselt nicht!
            *winks*
            Gilbert
            ------------------------------------------------
            Hilfe für eine Vielzahl von Problemen!!!
            http://www.1st-rootserver.de/

            Kommentar


            • #7
              mh... also ich hab die Abfrage gerade mal in einer eigenen Tabelle getestet:
              SELECT * FROM `termine` ORDER BY rand() LIMIT 1

              und das ging einwandfrei... schick die Abfrage mal mit MyCC oder dem PHPmyAdmin ab!

              gruss

              Kommentar


              • #8
                Egal was ich mach, ich bekomme immer nur das erste bild in der Datenbank!
                *winks*
                Gilbert
                ------------------------------------------------
                Hilfe für eine Vielzahl von Problemen!!!
                http://www.1st-rootserver.de/

                Kommentar


                • #9
                  @Abraxax
                  Hast du hierfür auch noch eine Lösung?
                  PHP-Code:
                  $res mysql_query("SELECT bild_k FROM kunstwerke ORDER BY rand() LIMIT 1");
                  $num mysql_num_rows($res);
                  if(
                  $num == 1)
                      {
                      while(
                  $row mysql_fetch_array($res))
                          {
                          
                  $img "$row[bild_k]";
                          }
                      }
                  else
                      {
                      
                  $img "/img/bild_k/dontknow.gif";
                      } 
                  Bekomme zum 80% immer das Erste Bild in der Datenbank!!!
                  *winks*
                  Gilbert
                  ------------------------------------------------
                  Hilfe für eine Vielzahl von Problemen!!!
                  http://www.1st-rootserver.de/

                  Kommentar


                  • #10
                    Original geschrieben von Wotan
                    @Abraxax
                    Hast du hierfür auch noch eine Lösung?
                    leider nein....

                    aber vielleicht ist nur ein bild drin, oder der zuffi spinnt.
                    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


                    • #11
                      Erste Bild ID 12 derzeit Letzte Bild ID 83. Sollte woll reichen, oder?
                      *winks*
                      Gilbert
                      ------------------------------------------------
                      Hilfe für eine Vielzahl von Problemen!!!
                      http://www.1st-rootserver.de/

                      Kommentar


                      • #12
                        normalerweise eigentlich schon. vielleicht kann deine mysql nicht sauber das rand() verarbeiten?

                        suche mal im forum. da gab es glaube ich auch schon ein paar threads zum thema rand().
                        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


                        • #13
                          hmmm laut mysql-docu

                          http://www.mysql.com/doc/en/Mathematical_functions.html

                          You can't use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times. From version 3.23 you can do: SELECT * FROM table_name ORDER BY RAND() This is useful to get a random sample of a set SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000. Note that a RAND() in a WHERE clause will be re-evaluated every time the WHERE is executed. RAND() is not meant to be a perfect random generator, but instead a fast way to generate ad hoc random numbers that will be portable between platforms for the same MySQL version.




                          also sollte deins eigentlich klappen .....

                          greetz
                          iglo

                          Kommentar


                          • #14
                            alternative ...
                            nicht so performant aber dafuer sollte es klappen:

                            zaehl die reihen.

                            generier dir ne zufallszahl die kleiner ist als die anzahl der reihen, dann hol dir die reihe ...


                            greetz
                            iglo

                            Kommentar


                            • #15
                              Original geschrieben von kapitaeniglo
                              zaehl die reihen.
                              @Wotan
                              bevor du jetzt wegen erschöpfung fragst.....

                              SELECT count(*) FROM tabelle

                              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

                              Lädt...
                              X