Gå til innhold

Hente ut én spesiell ID fra database [OPPFØLGING]


Anbefalte innlegg

Som alt annet i IT-verdenen lærer jeg ved å prøve og feile, og nå har det stoppet seg igjen...

 

Jeg har klart (lærte det i natt) å lage en database med tabeller og det hele, og fylt denne med informasjon. Jeg klarer til å med å printe informasjonen fra databasen til en webside.

 

Det som imidlertid er saken, er at jeg har gitt alle "linjene" mine en unik ID. Og nå vil jeg printe ut en spesiell ID, eller dvs mer informasjon fra en ID.

 

 

Er det noen som kan hjelpe meg litt på veien med kode på dette området?

 

 

Dette er koden som printer alt:

<?php

//logger på database
$connection = @mysql_connect(hhh, hhh, hhh) or die("Umulig å
få kontakt med database");

//Velger database
mysql_select_db(hhh);

//Sender setningen mot database som skal hente ut infoen
$setning = @mysql_query("SELECT * FROM kamper");

//Bruker en loop for aa faa all informasjonen ut
while($kamper = @mysql_fetch_array($setning))
{

//Naa er informasjonen lagret i arrays
print("$kamper[hjemmelag] - $kamper[bortelag]");
}

//Slutter av tabellen
print('</table>');
?>

 

...mens denne koden printer 28 kamper, vil jeg altså ha hjemmelag og bortelag for f.eks. kamp_id 7.

 

Takker for hjelp, og hvis det er noe som må utgreies så si ifra!

Endret av Glenn'ern
Lenke til kommentar
Videoannonse
Annonse

Kjempeflott! Tusen takk!

 

Jeg tar et lite "oppfølgingsspørsmål" også;

 

Hvordan får jeg laget linker til en side der alle fakta om da en kamp_id listes opp.

 

Jeg har altså laget "infrastrukturen", og denne funker (filen heter kamp.php), men hva skal jeg gjøre for å kunne plukke forskjellig kamp_id til hver link?

Lenke til kommentar

på en side med linker til de forskjellige kampene, skriver du en link med kamp id'en: kamp.php?id=3

 

og i kamp.php henter du variabelen med $kamp_id = $_GET['id']; og henter ut fra sql som Pangaea skriver.

 

edit: man kan jo selvfølgelig hente ut siste 5 kamper og lage automatisk linker osv. oxo ;)

Endret av fjartan
Lenke til kommentar

Så det du mener er at jeg bare skal plusse det på etter det Pangae skrev?

 

-->

 

$setning = @mysql_query("SELECT * FROM kamper WHERE kamp_id = $_GET['id'];");

 

Det funka ikke er jeg redd... :dontgetit:

 

"Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in..:"

 

Edit: prøvd forskjellige ting her, men ser ikke til å gå...

Endret av Glenn'ern
Lenke til kommentar

Det er mange webhoteller som har magic qoutes enabled, annet enn det er det ikke vanlig at hosten vil gjøre noe med data'en. En bra ting når det gjelder sikkerhet er å opprette en bruker som kun kan skrive og lese - og fjerne rettighetene til å legge til en bruker og lignende.

Lenke til kommentar
:nei: Ikke helt bra, nå har du nettopp åpnet databasen din for en av de vanligste måtene å hace sider på. Sett ikke inn data fra en bruker uten å kontrollere de. Ta en kikk på mysql_escape_string()  :fun:

Ok. Dette var ikke særlig oppløftende.

 

Databasen min kan komme til å bli svært omfattende, og inneholde mange timers arbeid, som jeg ikke vil gjøre igjen...

 

Så på php.net på den stringen du skrev, men skjønte ikke særlig mye.

 

Hvordan kan jeg få sikret databasen min? Jeg har allerede laget en egen fil der passord også videre ligger...

 

Forøvrig undersøkte jeg mulighet for å opprette en "leser-bruker", men dette får ikke jeg gjort hos dagens leverandør (som det er uaktuelt å bytte ut pga meget god stabilitet).

Endret av Glenn'ern
Lenke til kommentar

Desverre er mange webhoteller så "vrange" at de kun lar deg opprette en bruker. Hvorfor det skyldes nok som regel at de ikke kan nok om SQL.

 

Du bruker den funksjonen på denne måten:

$navn = mysql_escape_string($_POST['navn']);

Da escaper den tegn som ' og " slik at de ikke kan avslutte feltet.

 

Hvis du lagrer passord og lignende burde dette krypteres, slik at hvis noen skulle hacke databasen og finne passord får de ikke brukt dem. md5() er veldig vansklig å kovertere tilbake fra.

Lenke til kommentar

Ok. Skal vi se om jeg har forstått riktig her...:

 

Jeg vil altså være sikret bare jeg paster den linja du skrev for eksempel på linja før

 

$setning = @mysql_query("SELECT * FROM kamper WHERE kamp_id = '".$_GET['id']."'");

 

?

 

Jeg kan forøvrig opprette flere brukere. Problemet er bare at jeg har null styring over bruker-rettigheter. Navn og passord er alt jeg får gjort noe med.

Lenke til kommentar

Du bør være sikker på at det er et tall du putter inn i queryet ditt, derfor bør du gjøre følgende:

 

$kamp_id = intval($_GET['kamp_id']);

$setning = @mysql_query("SELECT * FROM kamper WHERE kamp_id = $kamp_id);

 

intval() konverterer det som ligger i $_GET['kamp_id'] til et tall.

Lenke til kommentar
Altså:

$kamp_id = mysql_escape_string($_GET['kamp_id']);
$kamp_id = intval($kamp_id);

$setning = @mysql_query("SELECT * FROM kamper WHERE kamp_id = $kamp_id);

Litt smør på flesk her i og med at du kun vil ha inn et tall.

mysql_escape_string brukes for å sikre at strenger ikke inneholder "ulovlige" tegn.

 

I dette tilfellet holder det med:

 

$kamp_id = intval($kamp_id);
$setning = @mysql_query("SELECT * FROM kamper WHERE kamp_id = $kamp_id");

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...