/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Indsamle data
Fra : Christoffer


Dato : 06-04-05 18:42

Hej, jeg er tilbage igen =)

I mit community vil jeg gerne have at brugerne skal have mulighed for at
kunne se andres profiler, men hvordan gør jeg det?
jeg har indtil videre fået lavet at man kan se samtlige oprettede brugere
http://www.buur.info/mdk/site/profiler.php
Det er meningen at man ved at klikke på navnet skal videresendes til
profil.php hvor brugerens data så fremkommer. Hvordan får jeg de data'er
hentet fra min database?

Indtil videre ser min profiler.php sådan her ud
<?php

include "config.php";
mysql_connect($mysql_host, $mysql_user, $mysql_pw);
mysql_select_db($mysql_db);

$query = mysql_query("SELECT * FROM bruger ORDER BY id DESC") or print
mysql_error();

while ($row = mysql_fetch_array($query)) {

Print "Navn: <a
href='profil.php?id={$row['id']}'>".$row['brugernavn']."</a><br />";
}
?>


Skal jeg tilføje noget i det? Har prøvet at hente data på profil.php men det
fungere ikk rigtig!
<?php

include "config.php";
mysql_connect($mysql_host, $mysql_user, $mysql_pw);
mysql_select_db($mysql_db);
$_GET['id'] = $id

$query = mysql_query("SELECT * FROM bruger WHERE '$id' = id ") or print
mysql_error();
?>


Hvordan gør jeg?
Christoffer



 
 
Martin (06-04-2005)
Kommentar
Fra : Martin


Dato : 06-04-05 19:23

Christoffer wrote:
> http://www.buur.info/mdk/site/profiler.php
> Det er meningen at man ved at klikke på navnet skal videresendes til
> profil.php hvor brugerens data så fremkommer. Hvordan får jeg de data'er
> hentet fra min database?
> Indtil videre ser min profiler.php sådan her ud
> <?php
>
> include "config.php";
> mysql_connect($mysql_host, $mysql_user, $mysql_pw);
> mysql_select_db($mysql_db);
>
> $query = mysql_query("SELECT * FROM bruger ORDER BY id DESC") or print
> mysql_error();
>
> while ($row = mysql_fetch_array($query)) {
>
> Print "Navn: <a
> href='profil.php?id={$row['id']}'>".$row['brugernavn']."</a><br />";
> }
> ?>
>
>
> Skal jeg tilføje noget i det? Har prøvet at hente data på profil.php men det
> fungere ikk rigtig!
> <?php
>
> include "config.php";
> mysql_connect($mysql_host, $mysql_user, $mysql_pw);
> mysql_select_db($mysql_db);
> $_GET['id'] = $id
>
> $query = mysql_query("SELECT * FROM bruger WHERE '$id' = id ") or print
> mysql_error();
> ?>
>

Din syntax er forkert i din sql sætning
Syntax for en where klausul er således:

WHERE række = user_defineret

Dvs din sql skal se således ud:
$query = mysql_query("SELECT * FROM bruger WHERE id = '$id' ")

Desuden er det IKKE godt at selecte med * kun tage de nødvendige felter
ud af databasen.

Fx i din første "SELECT * FROM bruger ORDER BY id DESC" kan jeg kun se
du bruger id og brugernavn derfor burde den være således:
"SELECT id, brugernavn FROM bruger ORDER BY id DESC"

Christoffer (06-04-2005)
Kommentar
Fra : Christoffer


Dato : 06-04-05 19:34


> Din syntax er forkert i din sql sætning
> Syntax for en where klausul er således:
>
> WHERE række = user_defineret
>
> Dvs din sql skal se således ud:
> $query = mysql_query("SELECT * FROM bruger WHERE id = '$id' ")
>
> Desuden er det IKKE godt at selecte med * kun tage de nødvendige felter
> ud af databasen.
>
> Fx i din første "SELECT * FROM bruger ORDER BY id DESC" kan jeg kun se
> du bruger id og brugernavn derfor burde den være således:
> "SELECT id, brugernavn FROM bruger ORDER BY id DESC"

Men hvordan henter jeg og indsætter dataer omkring den valgte bruger på
profil.php fra profiler.php?



Martin (06-04-2005)
Kommentar
Fra : Martin


Dato : 06-04-05 20:43

Christoffer wrote:
>>Din syntax er forkert i din sql sætning
>>Syntax for en where klausul er således:
>>
>>WHERE række = user_defineret
>>
>>Dvs din sql skal se således ud:
>>$query = mysql_query("SELECT * FROM bruger WHERE id = '$id' ")
>>
>>Desuden er det IKKE godt at selecte med * kun tage de nødvendige felter
>>ud af databasen.
>>
>>Fx i din første "SELECT * FROM bruger ORDER BY id DESC" kan jeg kun se
>>du bruger id og brugernavn derfor burde den være således:
>>"SELECT id, brugernavn FROM bruger ORDER BY id DESC"
>
>
> Men hvordan henter jeg og indsætter dataer omkring den valgte bruger på
> profil.php fra profiler.php?

// profil.php

// connect database

$sql = mysql_query("SELECT id, navn FROM brugere");
while($r = mysql_fetch_array($sql)) {
print "<a href='profiler.php?id=".$r["id"]."'>".$r["navn"]."</a>";
}

//Nu skulle du gerne have en liste med alle dine bruger :)


// profiler.php

// connect database
$sql = mysql_query("SELECT navn, flere_data FROM brugere WHERE id =
'".$_GET["id"]."'");
list($navn,$flere_data) = mysql_fetch_row($sql);

print $navn." ".$flere_data;


// Lig mærke til WHERE klausulen :)

Hvis jeg var dig - så ville jeg traske
http://www.webcafe.dk/artikler/php/
og
http://www.webcafe.dk/artikler/sql/
igennem. Læs, lær, prøv, prøv lidt mere, tilføj flere funktioner, slet
det hele og lav det ca. fra hovedet af :) - og prøv igen og igen og igen
og hele tiden tilføj flere funktioner :)

RF (06-04-2005)
Kommentar
Fra : RF


Dato : 06-04-05 22:22


"Martin" <news@natten-i.dk> wrote in message
news:42543bcb$0$684$edfadb0f@dread16.news.tele.dk...

<snip snap>

> // connect database
> $sql = mysql_query("SELECT navn, flere_data FROM brugere WHERE id =
> '".$_GET["id"]."'");

<snip snap>

> // Lig mærke til WHERE klausulen :)

Og her skal det så lige påpeges at det IKKE anbefales at anvende parametre
fra $_GET, $_POST mv. direkte i en sql forespørgsel!!!
Især ikke hvis man kun har én db-bruger med alle rettigheder, så kan man
ende med en rigtig skidt situation i stil med Valus Hacker historien.

Tjek derfor dine parametre inden du bruger dem i en sql forespørgsel!

m v h
Ronni



Christoffer (08-04-2005)
Kommentar
Fra : Christoffer


Dato : 08-04-05 19:27

>> // connect database
>> $sql = mysql_query("SELECT navn, flere_data FROM brugere WHERE id =
>> '".$_GET["id"]."'");
>
> <snip snap>
>
>> // Lig mærke til WHERE klausulen :)
>
> Og her skal det så lige påpeges at det IKKE anbefales at anvende parametre
> fra $_GET, $_POST mv. direkte i en sql forespørgsel!!!
> Især ikke hvis man kun har én db-bruger med alle rettigheder, så kan man
> ende med en rigtig skidt situation i stil med Valus Hacker historien.
aaei? jeg er begynder ang. php så det passerede vist lige over mit hoved!

men.. jeg er kommet til et nyt problem som siger:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
resource in /customers/buur.info/buur.info/httpd.www/mdk/site/profil.php on
line 114

Koden på profil.php hedder

$resultat = mysql_query("SELECT * FROM brugere WHERE id =
'".$_GET["id"]."'");

while ($raekke = mysql_fetch_array($resultat)){ <<< Linje
114
print $raekke["brugernavn"];
}

Det skal dertil siges at man kommer ind på siden fra
www.buur.info/mdk/site/profiler.php som henviser til siden på følgende måde

$query = mysql_query("SELECT id, brugernavn FROM bruger ORDER BY id DESC")
or print mysql_error();

while ($row = mysql_fetch_array($query)) {
print "<a
href='profil.php?id=".$row["id"]."'>".$row["brugernavn"]."</a><br>";
}


Fejlen er ?? Er langt fra god nok til selv at kunne udlede den



Peter Brodersen (09-04-2005)
Kommentar
Fra : Peter Brodersen


Dato : 09-04-05 03:41

On Fri, 8 Apr 2005 20:27:23 +0200, "Christoffer"
<christoffer@buur.info> wrote:

>men.. jeg er kommet til et nyt problem som siger:
>
>Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
>resource in /customers/buur.info/buur.info/httpd.www/mdk/site/profil.php on
>line 114

Kig på:
http://php-faq.dk/index.php/Hvorfor_f%E5r_jeg_%22Warning:_supplied_argument_is_not_a_valid_MySQL_result_resource%22

--
- Peter Brodersen

RF (09-04-2005)
Kommentar
Fra : RF


Dato : 09-04-05 12:35

>> Og her skal det så lige påpeges at det IKKE anbefales at anvende
>> parametre fra $_GET, $_POST mv. direkte i en sql forespørgsel!!!
>> Især ikke hvis man kun har én db-bruger med alle rettigheder, så kan man
>> ende med en rigtig skidt situation i stil med Valus Hacker historien.

> aaei? jeg er begynder ang. php så det passerede vist lige over mit hoved!

Så er det især vigtigt at du følger dette råd!
Valus Hacker historien stammer fra dengang Valus indførte et
online-betalingsmiddel, som var så dårlig kodet at man ikke tjekkede de
parametre der blev overført via URL'en, hvilket resulterede i at en mand
(aka Valus Hackeren) via URL'en fik databasen til at gå ned.

Det mistede de formentlig ikke data ved, men pointen er at hvis du ikke
tjekker parametre fra URL'en inden brug i SQL forespørgsler, er det muligt
for almindeligt besøgende at manipulere dine SQL forespørgsler og derved
indsætte, ændre og slette data i din database.

m v h
Ronni



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste