Gå til innhold

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


Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet

Veldig enkelt bare å bruke...

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

 

$kamp_id er da en variabel med et nummer du spesifiserer.

Skrevet

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?

Skrevet (endret)

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
Skrevet (endret)

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
Skrevet

Hehe. Den er nå fikset.

 

Alt fungerer strålende, og en ny, og enklere verden har åpnet seg for meg i dag :D

 

Takk for hjelpen!

Skrevet
: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:
Skrevet

:blush: men teorien er jo rett... sikkerhet er jo en smakssak :roll:

 

med det samme ????????, kan det være tilfelle at noen webhotel har m_e_s som en ting som all kommunikasjon til mysql går gjennom? får nemlig mistanke om det....

Skrevet

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.

Skrevet (endret)
: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
Skrevet

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.

Skrevet

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.

Skrevet

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.

Skrevet

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);

 

:)

Skrevet
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");

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...