Avatar billede henriklaursen Nybegynder
04. oktober 2004 - 13:37 Der er 11 kommentarer og
1 løsning

Variabel overførelse ?

Hejsa..

jeg er ved at lave en startside som skal bestemme visning af en bestemt side ud fra en database (mysql).

tanken er at man skal kalde startsiden med f.eks. : index.php?17
- 17 er så id'et på den side der skal vises (altså hentes i DB)

Er der nogle der kan forklare hvordan jeg henter dette id som en variabel (altså 17). - umiddelbart får jeg bare 17 til at være variabelnavnet, men den har så ikke noget indhol.

kan man på nogen måde udskrive navnet på en variabel - og altså ikke indholdet..?
Avatar billede sukos Juniormester
04. oktober 2004 - 13:48 #1
Du skal lave noget i denne stil:

<?php
if(!isset($_GET["page"])) {
$id = 1;
}else{
$id = $_GET["page"];
}

$indhold = mysql_query("SELECT * FROM `table` WHERE `id` = '". $id ."'") or die (mysql_error());

?>
Avatar billede sukos Juniormester
04. oktober 2004 - 13:57 #2
Lidt bedre endnu, hvis du har alle dine sider i DB'en, med hvert deres id

<?php
$sider = array();
$pages = mysql_query("SELECT `id` FROM `table`") or die (mysql_error());
while($i = mysql_fetch_object($pages)) {
$sider[] = $i->id;
}
mysql_free_result($pages);

f(!isset($_GET["page"]) || !in_array($_GET["page"], $sider)) {
$id = current($sider); // første nummer er så forsiden
}else{
$id = $_GET["page"];
}

$indhold = mysql_query("SELECT * FROM `table` WHERE `id` = '". $id ."'") or die (mysql_error());

?>
Avatar billede henriklaursen Nybegynder
04. oktober 2004 - 14:15 #3
jeg har lige arbejdet lidt videre med dit første forslag.
men, hvad jeg lige kan se, så kræver det, at jeg kalder variabelen "page"
altså index.php?page=17

her vil jeg gerne undgå at skrive "page="
så det kun kommer til at hedde index.php?17

men det kan være det ikke kan lade sig gøre
Avatar billede drbean Nybegynder
04. oktober 2004 - 14:16 #4
Du er vel bare nød til at bruge index.php?page=17
Det andet kan også lade sig gøre. Så skal du bare kalde den på denne måde:
index.php/17
Jeg kan ikke huske hvordan man gør dette med php koden, men søg lidt i forumet, og jeg er sikker på du finde hvad du søger
Avatar billede bojo Nybegynder
04. oktober 2004 - 14:22 #5
Henriks eks. formoder at du skriver ?page=id

Hvis du kun vil skrive ?id skal du sætte $page til $_SERVER["QUERY_STRING"] eller $QUERY_STRING
Avatar billede bojo Nybegynder
04. oktober 2004 - 14:25 #6
ikke Henriks - sukos var det

Så han eks. bliver til

<?php
$page = $QUERY_STRING;
$sider = array();
$pages = mysql_query("SELECT `id` FROM `table`") or die (mysql_error());
while($i = mysql_fetch_object($pages)) {
$sider[] = $i->id;
}
mysql_free_result($pages);

f(!isset($_GET["page"]) || !in_array($_GET["page"], $sider)) {
$id = current($sider); // første nummer er så forsiden
}else{
$id = $_GET["page"];
}

$indhold = mysql_query("SELECT * FROM `table` WHERE `id` = '". $id ."'") or die (mysql_error());

?>
Avatar billede henriklaursen Nybegynder
04. oktober 2004 - 14:28 #7
Hey Bojo..
det var lige det jeg skulle bruge..

kan du ikke smide et svar ?
Avatar billede bojo Nybegynder
04. oktober 2004 - 14:48 #8
det var vist ikke mig, men sukos der løste det egentlige problem
Avatar billede henriklaursen Nybegynder
04. oktober 2004 - 15:06 #9
oki..
sukos --- please answer
Avatar billede sukos Juniormester
04. oktober 2004 - 17:26 #10
ehh, ved ikke lige, tror du skal ha' fat i noget apache's mod_rewrite for IKKE at skulle skrive
domain.dk/?page=23
f.eks men derimod få det samme her på exp
domain.dk/spm/546629

Men ok, du kan vel også bruge et mix med bojo's

<?php
$page = $_SERVER["QUERY_STRING"];
// Brug heller $_SERVER["QUERY_STRING"], så vil det virke på tværs af div. serveropsætninger

$sider = array();
$pages = mysql_query("SELECT `id` FROM `table`") or die (mysql_error());
while($i = mysql_fetch_object($pages)) {
$sider[] = $i->id;
}
mysql_free_result($pages);

f(trim($page) == "" || !in_array($page, $sider)) {
$id = current($sider); // første nummer er så forsiden
}else{
$id = $page;
}

$indhold = mysql_query("SELECT * FROM `table` WHERE `id` = '". $id ."'") or die (mysql_error());

?>
Avatar billede bojo Nybegynder
05. oktober 2004 - 00:10 #11
sukos < henrik vil gi dig point da din kommentar 04/10-2004 13:57:04 var løsningen ( sammen med min ene linie )
Avatar billede sukos Juniormester
05. oktober 2004 - 08:14 #12
ja, ok
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