Slumpa fram meningar i PHP/MySQL

Tråden skapades och har fått 10 svar. Det senaste inlägget skrevs .
1

Hej Jag är ute efter lite enkel phpkod...

Jag vill ha en ruta där jag kan skriva in meningar, separerade med ett semikolon eller vad som helst. Sedan skall jag kunna hämta en slumpvist vald mening varsomhelst ifrån sajten genom att skriva nått i stil med {$slumpmening}.

Hur gör man detta? Går det att göra detta i rent PHP eller måste jag blanda in mySQL? Eller javascript?

Ska dessa meningar SPARAS och användas av alla framtida användare eller bara under den aktuella sessionen?

Ska dom sparas måste det ju till en databas alternativt skrivrättigheter i en katalog där du kan spara ner en textfil. Ska dom bara användas under sessionen kan man ju aktivera en session i PHP och konvertera den inmatade texten till en array som sparas i sessionen.
Att sedan göra en funktion som slumpmässigt väljer ett värde ur arrayen är inte så svårt...

/Martin

Nu vet jag iofs inte hur ofta eller hur slumpmässigt du vill visa detta men
om du har tillgång till själva servern så kan du ju lägga meningarna i koden.

Detta är Lasso kod som visar en ny mening varje dag, men det går enkelt att göra om till tex javascript eller PHP.
<?LassoScript
var: 'citat' = (Array:
"Mening1",
"Mening2");
var:'today'= (date)->(format: '%d');
?>

Visa dagens slumpmening:
[$citat->(Get: ($today)(-1))]

/John

Som jag förstår det vill du kunna mata in meningarna först och sedan slumpa ut en.
Då måste du ha en databas eller spara sakerna i en textfil.
Enklast är det att jobba med en databas.

Inmatningen sker med INSERT INTO.

För att sedan slumpa fram en mening skulle jag göra som följer:
Läsa ut antalet poster i meningstabellen sätta det till en variabel.
Sedan slumpa fram en siffra mellan 0 och det talet, denna siffra skulle representera vilken post jag skulle läsa ut från tabellen sedan.

$tabellQuery = "SELECT * FROM meningsTabell";
$tabellResultat = mysql_query($tabellQuery);
$antalPoster = count($tabellResultat);
//Slump i php
$postNummer = rand(0,$antalPoster);
$meningQuery = "SELECT mening FROM meningsTabell WHERE id=$postNummer";
$meningResult = mysql_query($meningQuery);
list($mening) = $meningsResultat;
echo $mening;

Något sådant... med reservation för felskrivningar.

Eller helt enkelt:

$query = "SELECT mening FROM meningsTabell ORDER BY RAND() LIMIT 1";
$result = mysql_query($query);
$mening = mysql_result($result, 0);

Slipper man dessutom få de fel som uppstår med Mattias kod när det saknas ID-nummer.

Lägg sedan förslagsvis det i en funktion:

function slumpMening()
{
    $query = "SELECT mening FROM meningsTabell ORDER BY RAND() LIMIT 1";
    $result = mysql_query($query);
    $mening = mysql_result($result, 0);
    
    return $mening;
}

Och skriv sedan ut den på sidorna så här:

<?=slumpMening()?>

Sen måste givetvis databaskopplingen vara gjord innan.

Så kan man också göra om man tänker till lite.
Jag är ringrostig i mitt phpeande.

Kör man PHP 5 kan man använda SQLite som har direkt stöd i PHP 5. Då behöver man inte en MySQL-databas.

jag har en mySQL liggande uppe.

Syftet är att meningarna skall sparas... och man skall lätt kunna lägga till fler meningar direkt ifrån hemsidan utan att knacka någon kod. Jag behöver alltså en liten ruta någonstans på sidan som jag kan skriva en mening och trycka spara eller liknande. Me´ningen skall då läggas till i mySQL för att sedan hämtas slumpmässigt genom kommando.

Jag tror jag kan pussla ihop detta med hjälp av det ni skrivit, tack!!!

  • Medlem
  • Höganäs
  • 2005-06-22 15:54

Du kan även spara meningarna i en textfil, separerade med ex radslut. Det är ju lite overkill att använda en databas för detta enkla (?) endamål. Har en variant hemma (är på jobbet nu) som gör precis vad du beskriver. PM:a mig och påminn så lägger jag upp här (om jag hittar den ... )

Har man redan en databasserver igång så tycker jag inte att det är overkill. Däremot skulle jag kanske inte installera, konfigurera och köra en databasserver bara för detta ändamålet.

Men som sagt, har man redan en igång är det bara att använda den. Mycket smidigare än en textfil (tycker jag i alla fall).

  • Medlem
  • Höganäs
  • 2005-06-22 17:41
Ursprungligen av capojava:

Har man redan en databasserver igång så tycker jag inte att det är overkill. Däremot skulle jag kanske inte installera, konfigurera och köra en databasserver bara för detta ändamålet.

Men som sagt, har man redan en igång är det bara att använda den. Mycket smidigare än en textfil (tycker jag i alla fall).

Jo. Såg inte att MySQL redan fanns :rolleyes:

Bifogar ändå en variant för att läsa från textfil. Kanske någon som behöver någon gång?

1
Bevaka tråden