Avatar billede dumazz.dk Nybegynder
20. august 2004 - 13:56 Der er 6 kommentarer og
1 løsning

Helt nyeste indlæg fra tilfældig tabeller

Jeg har en masse forskellige tabeller, og jeg ønsker at lave en oversigt der tilfældigt skal vise den nyeste fra en af tabellerne...


Hvordan kan jeg lave dette?
Avatar billede dumazz.dk Nybegynder
20. august 2004 - 14:03 #1
Nej den skal egentlig bare lave en distinct i 1 tabel, og så vælge et af de fundne tilfældigt...
Avatar billede dennismp Nybegynder
20. august 2004 - 14:15 #2
Er ikke sikker på at jeg forstår dig.. skal du bare have een tilfældig række ud fra tabel ?

SELECT DISTINCT * FROM tabel ORDER BY RAND() LIMIT 1

Hvis du skal have de nyeste 10 rækker fra tabel1 og 3 tilfældige fra tabel2

SELECT * FROM tabel1 ORDER BY dato DESC LIMIT 10

og

SELECT * FROM tabel2 ORDER BY rand() LIMIT 3
Avatar billede jakoba Nybegynder
20. august 2004 - 14:16 #3
prøv at gentage spørgsmålet lidt mere udførligt. Lige nu aner vi ikke hvad du ønsker.
Avatar billede sukos Juniormester
20. august 2004 - 15:05 #4
Prøv:

<?php

$database = "databasenavn";

$host = "localhost";
$user = "root";
$pass = "password";

$db = mysql_connect($host, $user, $pass) or die (mysql_error());
mysql_select_db($database, $db) or die (mysql_error());

$dbs = mysql_query("SHOW TABLES FROM `". $database ."`") or die (mysql_error());
$tables = array();
while($v = mysql_fetch_row($dbs)) {
$tables[] = $v[0];
}

mysql_free_result($dbs);
$getdb = rand(0, count($tables) -1);

echo"<p> Tablevalg: <b>". $tables[$getdb] ."</b></p>";

$felter = array();
$fields = mysql_list_fields($database, $tables[$getdb], $db);
for($i = 0; $i < mysql_num_fields($fields); $i++) {
$felter[] = mysql_field_name($fields, $i);
}
$getfelt = rand(0, count($felter) -1);
echo"<p> Kolonnevalg: <b>". $felter[$getfelt] ."</b></p>";

$last = mysql_query("SELECT `". $felter[$getfelt] ."` FROM `". $tables[$getdb] ."` LIMIT 0,1") or die (mysql_error());
echo"<p>Slutresultat: ". mysql_result($last, 0);
mysql_free_result($last);


?>

Ved ikke om det kunne laves lidt smartere?
Avatar billede sukos Juniormester
20. august 2004 - 15:08 #5
hmm, nyeste?
Hvis du har en kolonne som er primary og autoincrement,

$last = mysql_query("SELECT `". $felter[$getfelt] ."` FROM `". $tables[$getdb] ."` LIMIT 0,1" ORDER BY `id` DESC) or die (mysql_error());
Avatar billede sukos Juniormester
20. august 2004 - 15:25 #6
Nåh, skal vi lige prøve igen!

Hvis du har en kolonne, "id", som er autoincrement og primary i ALLE dine tabeller:

<?php

$database = "databasenavn";

$host = "localhost";
$user = "root";
$pass = "password";

$db = mysql_connect($host, $user, $pass) or die (mysql_error());
mysql_select_db($database, $db) or die (mysql_error());

$dbs = mysql_query("SHOW TABLES FROM `". $database ."`") or die (mysql_error());
$tables = array();
while($v = mysql_fetch_row($dbs)) {
$tables[] = $v[0];
}

mysql_free_result($dbs);
$getdb = rand(0, count($tables) -1);

echo"<p> Tablevalg: <b>". $tables[$getdb] ."</b></p>";

$felter = array();
$fields = mysql_list_fields($database, $tables[$getdb], $db);
for($i = 0; $i < mysql_num_fields($fields); $i++) {

if(mysql_field_name($fields, $i) == "id") {
continue;
}

$felter[] = mysql_field_name($fields, $i);
}
$getfelt = rand(0, count($felter) -1);
echo"<p> Kolonnevalg: <b>". $felter[$getfelt] ."</b></p>";

$last = mysql_query("SELECT `". $felter[$getfelt] ."` FROM `". $tables[$getdb] ."` ORDER BY `id` DESC LIMIT 0,1") or die (mysql_error());
echo"<p>Slutresultat: ". mysql_result($last, 0);
mysql_free_result($last);


?>
Avatar billede dumazz.dk Nybegynder
14. september 2004 - 14:40 #7
Lukker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester