Avatar billede Slettet bruger
07. juli 2010 - 18:34 Der er 20 kommentarer og
1 løsning

Hej har et lille problem, et lille cms jeg er ved at lave, men kan ikke få min content til at vise fra den første id i databasen.

Hej eksperter.dk

har et lille problem, et lille cms jeg er ved at lave, men kan ikke få min content til at vise fra den første id i databasen. Den viser kun fra id 1, og mine id er lavet således:
$id = rand(100,9999);

Så den starter jo ikke fra id 1.

Kan man gøre sådan at den finder det første id i mysqlen og måske tager det, eller har i nogle bedre ideér...

<?php
$id = "1";
$side = (isset($_GET['side'])) ? $_GET['side'] : "$id";
$sql = mysql_query("SELECT `navn`, `indhold` FROM `icms_indhold` WHERE id='$side'");
//while løkke til at hente ud fra vores kilde($TilWhile) :
while ($row = mysql_fetch_array($sql)){
echo "$row[indhold]";
}
?>

I spørger bare hvis der er noget i mangler forklaring på... Håber i kan hjælpe mig... :))
Avatar billede Slettet bruger
07. juli 2010 - 18:36 #1
Forresten så ser mine url sådan ud: index.php?side= id
fx, et tilfældig side: index.php?side=4807
Avatar billede majbom Novice
07. juli 2010 - 19:13 #2
hvad med:

if(isset($_GET['side']) && is_numeric($_GET['side'])){
  $query = "SELECT navn, indhold FROM icms_indhold WHERE id='".$_GET['id']."'";
}else{
  $query = "SELECT navn, indhold FROM icms_indhold ORDER BY id ASC LIMIT 1";
}
$sql = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_array($sql)){
  echo $row['indhold'];
}


hvis $_GET['side'] er sat OG er nummerisk (bare for at tjekke der ikke er hacks i ;) ) finder den data for denne id, eller tager den den første i databasen, uanset om det er 1, 2 eller 17 der er det laveste id...
Avatar billede wanze Nybegynder
07. juli 2010 - 22:15 #3
Må jeg spørge, hvad pointen i at du har tilfældige id'er i din database? Det virker ikke praktisk. Især fordi du hvergang du opretter en side, skal kontrollere om id'et ikke allerede eksisterer i databasen.
Avatar billede Slettet bruger
08. juli 2010 - 08:36 #4
Ja, men hvad mener du så er bedst.. istedet for tilfældige id'er..
Avatar billede Slettet bruger
08. juli 2010 - 08:42 #5
men splazz, det eksempel tager jo bare det id med det laveste nummer. Kan man ikke lave det på en anden måde..

Og det er jo ikke sikkert forside har det laveste id, da det er randome id'er. De ændres sig jo hele tiden.

Jeg ved ikke hvordan man ellers laver sådan noget, det kan være du wanze ved noget om det måske...

Min navigation ser således ud:

<ul>
<?php
// først skal vi lave kilden til at hente ud:
$icms_navigation = mysql_query("SELECT `navn`, `titlen`, `url` FROM `icms_navigation`");
//while løkke til at hente ud fra vores kilde($TilWhile) :
while ($row = mysql_fetch_array($icms_navigation)){
echo "<li><a href='$row[url]' title='$row[title]'>".ucfirst($row[navn])."</a></li>";   
}
?>   
</ul>
Avatar billede Slettet bruger
08. juli 2010 - 08:49 #6
Jeg tror det her var bedre,

<?php
if(isset($_GET['side']) && is_numeric($_GET['side'])){
$query = "SELECT navn, indhold FROM icms_indhold WHERE id='".$_GET['side']."'";
}else{
$query = "SELECT navn, indhold FROM icms_indhold LIMIT 1";
}
$sql = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_array($sql)){
echo $row['indhold'];
}
?>
Avatar billede majbom Novice
08. juli 2010 - 08:53 #7
-> #6 - bedre end?

hvorfor ikke bare bruge fortløbende numre som id?
Avatar billede Slettet bruger
08. juli 2010 - 09:01 #8
Ja, men det skal være sådan at når de vil oprette en ny side, så skal de ikke skrive url ind: index.php?side=1 det er det jeg har lavet med randome id nummer, at den selv skriver url ind.. hvis du forstår... men ved ikke hvordan jeg ellers skal gøre det..
Avatar billede Slettet bruger
08. juli 2010 - 09:12 #9
Men tak for det eksempel du kom med... Men har du en ide til hvordan jeg ellers kan lave det på med de id'er...
Avatar billede majbom Novice
08. juli 2010 - 09:51 #10
som sagt ville jeg lave det med fortløbende numre

brug funktionen autoincrement på dit id-felt i databasen, og lad være med at angive det når du opretter en post, så laver den selv et id der hedder det højeste id i tabellen +1...
Avatar billede Slettet bruger
08. juli 2010 - 10:39 #11
Og husk lige at "vaske" brugerinputtet, inden du bruger det i select-sætningen, f.eks:

...WHERE id='".intval($_GET['id'])."'"...
Avatar billede majbom Novice
08. juli 2010 - 13:51 #12
-> T4NK3R - er det ikke nok at tjekke på at den er nummerisk?
Avatar billede Slettet bruger
08. juli 2010 - 16:19 #13
Hvad mener T4NK3R med at vaske brungerinputtet

...WHERE id='".intval($_GET['id'])."'"...
Avatar billede majbom Novice
08. juli 2010 - 17:21 #14
med at vaske inputtet menes at tjekke det for uønsket indhold, så du undgår sql-injections http://da.wikipedia.org/wiki/SQL_injection
Avatar billede Slettet bruger
08. juli 2010 - 17:38 #15
#12 Ups, overså den is_numeric().
Avatar billede majbom Novice
08. juli 2010 - 18:19 #16
-> #15 - okay, bare i orden, men det kunne jo godt være at den ikke var god nok, selvom jeg ikke lige kunne se hvorfor :)
Avatar billede Slettet bruger
08. juli 2010 - 22:40 #17
Det er bare fantastisk, tak for det splazz.. vil du have point..

Eller har i lyst til at hjælpe mig igen, med nogle checkboxe.

For at vise og skjule ting... Men forstår ikke skal man have en ny tabel for hver ting man vil vise og skjule...
Avatar billede Slettet bruger
08. juli 2010 - 23:02 #18
i kan se min kode her,

http://codepad.org/0jVwVQ1b

og min tabel :

CREATE TABLE IF NOT EXISTS `icms_showandhide` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `print` int(11) NOT NULL,
  `sitemap` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

Ser dette rigtig ud, fordi jeg kan ikke kun vælge at print skal vises så ændre den også på sitemap...

Håber i kan hjælpe mig, har leget med dette i mange timer... Kan ikke finde hoved og hale i det... Tak.
Avatar billede majbom Novice
09. juli 2010 - 06:21 #19
selv tak, det kunne være at du skulle oprette et nyt spørgsmål, for at holde det adskilt...
Avatar billede majbom Novice
09. juli 2010 - 06:21 #20
det skulle have været et svar :)
Avatar billede majbom Novice
09. juli 2010 - 14:20 #21
tfp :)
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