täglich zufällige ID aus Datenbank

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

  • #16
    Ich habe ganze jetzt soweit implementiert. name der ID spalte hab ich nun auch variabel gemacht.

    PHP-Code:
    function GetIDOfTheDay ($IDName$tablename)    {

      if (
    TableExists ($tablename) )    {
          
          
    //check if there is already a entry for $tablename
          
    $sql "SELECT COUNT(*) FROM RandomRows WHERE tablename='$tablename' LIMIT 1";
          
    $result mysql_query ($sql);
          
    $row mysql_fetch_row ($result);
          if (
    $row[0] == ) {
              
    //check if the current random value is valid for today
              
    $sql "SELECT RandomID 
                      FROM RandomRows 
                      WHERE tablename='
    $tablename
                      AND date=CURDATE() 
                      LIMIT 1"
    ;
              
    $result mysql_query ($sql);
              if (
    mysql_num_rows ($result) == 1)    {
                  
    $row mysql_fetch_array ($result);
                  return 
    $row['RandomID'];
              }
              else    {
                  
    //random value is out of date - update with a new random value
                  
                  //generate new random value of the table
                  
    $sql "SELECT $IDName 
                          FROM 
    $tablename 
                          ORDER BY RAND() 
                          LIMIT 1"
    ;
                  
    $result mysql_query ($sql);
                  
    $row mysql_fetch_array ($result);
                  
    $sql "UPDATE RandomRows SET
                                RandomID='
    $row[$IDName]',
                                date=CURDATE()
                                WHERE tablename='
    $tablename
                                LIMIT 1"
    ;
                  
    mysql_query ($sql);              
              }
          }
          else    {
              
    //no random value in RandomRow table
              //generate a random value for the first time
                            
              
    $sql "SELECT $IDName 
                        FROM 
    $tablename 
                        ORDER BY RAND() 
                        LIMIT 1"
    ;
            
    $result mysql_query ($sql);
              
    $row mysql_fetch_array ($result);
                                          
              
    $sql "INSERT INTO RandomRows
                            SET 
                            RandomID='
    $row[$IDName]',
                            tablename = '
    $tablename',
                            date = CURDATE()"
    ;          
              
    mysql_query ($sql);              
          }
          
          
    //select the new random value
          
    $sql "SELECT RandomID 
                  FROM RandomRows 
                  WHERE tablename='
    $tablename
                  AND date=CURDATE()
                  LIMIT 1"
    ;
          
    $result mysql_query ($sql);
          
    $row mysql_fetch_array ($result);
               
          return 
    $row['RandomID'];   }
      
      else    {
          
    //table doesn't exist
          
    return false;
      }


    Zuletzt geändert von geishauserm; 30.06.2007, 17:03.

    Kommentar


    • #17
      Wenn du so viele Tabellen hast, die den gleichen ID-Name haben, dann mach doch ein
      PHP-Code:
      function GetIDOfTheDay ($tablename,$IDName='id')    { 
      //check if there is already a entry for $tablename
      //check if the current random value is valid for today
      letztere Abfrage reicht.

      //generate new random value of the table
      //generate a random value for the first time
      Doppelt gemoppelt

      //select the new random value
      Wozu???

      So, habs jetzt nur überflogen. Und das Englisch ist schlecht.
      Zuletzt geändert von TobiaZ; 30.06.2007, 16:50.

      Kommentar


      • #18
        Vorschlag:
        Um tagesgesteuert Zufallseinträge aus DBs zu fischen kann man mit mktime() einen Timstamp der ersten Sekunde des Tages erzeugen in

        ORDER BY RAND($timestamp) LIMIT 1

        verwenden.
        Nagut, evtl nicht der performanteste Weg, aber dafür einfach
        Zuletzt geändert von combie; 30.06.2007, 23:04.
        Wir werden alle sterben

        Kommentar

        Lädt...
        X