Avatar billede kellesen Nybegynder
19. august 2007 - 20:37 Der er 25 kommentarer

random funktion

hej eksperter,

jeg prøver at få en random funktion til at køre.
det er meningen jeg skal skrive hvilke spg_id ind i en variabel som den så kører random imellem..

<?php
include("mysql.php");
$result = mysql_query("select debat_id from debat");
$maxnum = mysql_num_rows($result);

// Giv $num et tilfældigt nummer, op til det højeste mulige i databasen.
// Hvis nummeret er det samme som sidste gang (lastsideframe), skal den finde et nyt nummer
// så den aldrig viser samme side to gange i træk.
do {
$num = intval(rand(2, $maxnum));
}

$result = mysql_query('select * from debat spg WHERE debat.spg = spg.spg_id');
$row = mysql_fetch_array($result) or die mysql_error();.

echo $row['kommentar'];
echo "<br />";

?>

Lige nu skriver den en "unexpected T_VARIABLE, expecting T_WHILE "
Avatar billede nielle Nybegynder
19. august 2007 - 20:39 #1
Hvad skal du med en 'do' for? Den mangler i hvertfald en while del for at være korrekt.
Avatar billede kellesen Nybegynder
19. august 2007 - 20:41 #2
havde noget sessions på - som jeg åbenbart kun havde fjernet halvt.. har slettet det nu - altså do.. stadig fejl..
Avatar billede nielle Nybegynder
19. august 2007 - 20:42 #3
Din do mangler som sagt en while-del for at være korrekt PHP-kode.
Avatar billede olebole Juniormester
19. august 2007 - 20:42 #4
<ole>

Din kode levner vel heller ikke mulighed for, at et indlæg kan slettes ... er det ikke en fejl?

/mvh
</bole>
Avatar billede hmortensen Nybegynder
19. august 2007 - 20:43 #5
Du kan vel bruge mySQL's random funktion kombineret med en session.
Avatar billede jakobdo Ekspert
19. august 2007 - 20:44 #6
Kunne du ikke bruge:
$result = mysql_query("select kommentar from debat ORDER BY RAND() LIMIT 1");
Avatar billede nielle Nybegynder
19. august 2007 - 20:46 #7
Som de andre skriver ... noget med rand().

Muligvis noget i denne stil:

$forrigeSpgId = $_SESSION['forrigeSpgId'];

$sql = "SELECT * FROM debat spg WHERE debat.spg = spg.spg_id AND spg.spg_id != forrigeSpgId ORDER BY rand() LIMIT 1"
Avatar billede kellesen Nybegynder
19. august 2007 - 21:28 #8
okay- har nu skrevet koden:

$result = mysql_query('select * from debat spg WHERE debat.spg = spg.spg_id ORDER BY RAND() LIMIT 1' );
$row = mysql_fetch_array($result);

echo $row['kommentar'];

og får fejlen; mysql_fetch_array(): supplied argument is not a valid MySQL
Avatar billede olebole Juniormester
19. august 2007 - 21:32 #9
<ole>

$result = mysql_query('select * from debat spg WHERE debat.spg = spg.spg_id ORDER BY RAND() LIMIT 1' ) or die( mysql_error() );

- så kan du se, hvad du laver af fejl  =)

/mvh
</bole>
Avatar billede hmortensen Nybegynder
20. august 2007 - 15:50 #10
Det skal nok være "debat, spg" i tabel udvælgelsen.
Avatar billede nielle Nybegynder
27. august 2007 - 21:06 #11
Har du fået det til at virke?
Avatar billede kellesen Nybegynder
30. august 2007 - 20:41 #12
ja, det har jeg faktisk.. mangler dog en detalje..
den skal kun køre random imellem nogle få "debat_id" hvordan indstiller jeg det?
håber på et hurtigt svar..
Avatar billede kellesen Nybegynder
30. august 2007 - 20:42 #13
altså f.eks. debat_id; 1,5,67;
Avatar billede jakobdo Ekspert
30. august 2007 - 20:44 #14
Smid dem i et array(1,5,67) og brug shuffle()
Avatar billede kellesen Nybegynder
30. august 2007 - 20:46 #15
hvordan ville jeg skulle skrive det? lige nu er min kode:
<?
include("mysql.php");


$result = mysql_query('select * from debat, spg WHERE debat.spg = spg.spg_id ORDER BY RAND() LIMIT 1' ) or die( mysql_error() );
$row = mysql_fetch_array($result);

echo $row['spg_raw'];
echo "<br>";
echo $row['emne'];
echo "<br>";
echo $row['kommentar'];
echo "<br>";
echo $row['bruger'];
echo "<br>";

echo '<a href="debat'.$row['spg'].'.php">Deltag i debatten</a>';
echo "<br>";


?>
Avatar billede jakobdo Ekspert
30. august 2007 - 21:18 #16
Det kommer an på hvad du præcist ønsker som resultat! :o)
Avatar billede kellesen Nybegynder
30. august 2007 - 21:22 #17
jeg ønsker at de ting jeg skriver ud kun skal bestå af ting som har id 1,5 eller 67.

random 1: ting udfra debat_id=1

titel fra debat_id=1
navn fra debat_id=1

random 2: ting udfra debat_id=5

titel fra debat_id=5
navn fra debat_id=5

Så den kun bladrer random igennem de debat_id'er jeg har skrevet..
Avatar billede jakobdo Ekspert
30. august 2007 - 21:28 #18
Så kunne du vel lave:

select * from debat, spg WHERE debat.spg IN (1,5,67) ORDER BY RAND() LIMIT 1'
Avatar billede kellesen Nybegynder
30. august 2007 - 21:29 #19
har skrevet;
$result = mysql_query('select * from debat, spg WHERE debat.spg = spg.spg_id AND debat.debat_id=105 ORDER BY RAND() LIMIT 1' ) or die( mysql_error() );

men hvordan skriver jeg også debat_id=120
Avatar billede kellesen Nybegynder
30. august 2007 - 21:30 #20
i det du har skrevet mangler jeg jo:
WHERE debat.spg = spg.spg_id
og hvordan ved den IN er debat_id?
Avatar billede jakobdo Ekspert
30. august 2007 - 21:35 #21
Sådan så: ?
select * from debat, spg WHERE debat.spg = spg.spg_id AND debat.id IN (1,5,67) ORDER BY RAND() LIMIT 1
Avatar billede kellesen Nybegynder
30. august 2007 - 21:37 #22
får: Operand should contain 1 column(s)
Avatar billede jakobdo Ekspert
30. august 2007 - 21:42 #23
Måske denne: debat.id skal rettes til: debat_id
Har ikke lige styr på dine feltnavne.
Avatar billede kellesen Nybegynder
30. august 2007 - 21:51 #24
'select * from debat, spg WHERE debat.spg = spg.spg_id AND debat.debat_id IN (105, 111, 113) ORDER BY RAND() LIMIT 1'

og den virker - takker
Avatar billede jakobdo Ekspert
30. august 2007 - 22:01 #25
Det var så lidt...
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