Random selection ? logica..

  • Onderwerp starter Onderwerp starter Kproz
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Kproz

Gebruiker
Lid geworden
11 jul 2007
Berichten
138
als je een tabel hebt met daarin een aantal items, en je wilt alleen diegenen selecteren die bijvoordbeeld status=actief hebben, en dan uit diegenen die actief zijn een random id kiezen om de data van af te printen, hoe doe je dat precies? ik zie het gewoon niet
 
Waarom gebruik je niet gewoon rand()? Dat kan ook met gegevens uit een database.
 
Waarom gebruik je niet gewoon rand()? Dat kan ook met gegevens uit een database.


ik weet niet hoe ik die rand() in mijn code moet verwerken dit is wat ik heb:
PHP:
      Connect();
      select_db('db');
      
      $query = "SELECT * FROM rotation WHERE status=1";
      $res = mysql_query($query);
      if (mysql_num_rows($res) >= 1) {
      	while ($data=mysql_fetch_array($res)) {
      		
      		if(date() == strtotime("+1 month", $data['date'])) {
      			// verwijderen als het ouder is als 1 maand
      		}
      		else {
      			// print de data af
      		}
      		
      	}
      	
      }
 
Je kunt ook alle id's in een array zetten

PHP:
Connect(); 
select_db('db'); 
//Lege array aanmaken
$randArray = array();
//Alle elementen ophalen welke status 1 hebben
$query = "SELECT *
          FROM rotation
          WHERE status=1";
$res = mysql_query($query);
if (mysql_num_rows($res) >= 1) { 
  while ($data=mysql_fetch_array($res)) { 
    if(date() == strtotime("+1 month", $data['date'])) { 
      // verwijderen als het ouder is als 1 maand 
    } else {
      //id toevoegen aan array
      $randArray[] = $data['id'];
    }
  } 
}
//Aantal elementen in array
$numElements = length($randArray)-1;
//Willekeurig getal kiezen
$randomElement = rand(0, $numElements);

//Nieuwe query aanmaken
$elementQuery = "SELECT *
                 FROM rotation
                 WHERE id = '$randArray[$randomElement]'";
$elementResult = mysql_query($elementQuery) or die(mysql_error());
$elementRow = mysql_fetch_array($elementResult);
// Resultaat weergeven
echo $elementRow['naam'];
 
Laatst bewerkt:
Je kunt ook alle id's in een array zetten

PHP:
Connect(); 
select_db('db'); 
//Lege array aanmaken
$randArray = array();
//Alle elementen ophalen welke status 1 hebben
$query = "SELECT *
          FROM rotation
          WHERE status=1";
$res = mysql_query($query);
if (mysql_num_rows($res) >= 1) { 
  while ($data=mysql_fetch_array($res)) { 
    if(date() == strtotime("+1 month", $data['date'])) { 
      // verwijderen als het ouder is als 1 maand 
    } else {
      //id toevoegen aan array
      $randArray[] = $data['id'];
    }
  } 
}
//Aantal elementen in array
$numElements = length($randArray)-1;
//Willekeurig getal kiezen
$randomElement = rand(0, $numElements);

//Nieuwe query aanmaken
$elementQuery = "SELECT *
                 FROM rotation
                 WHERE id = '$randArray[$randomElement]'";
$elementResult = mysql_query($elementQuery) or die(mysql_error());
$elementRow = mysql_fetch_array($elementResult);
// Resultaat weergeven
echo $elementRow['naam'];

waarom kan ik zoiets niet bedenken :(
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan