Avatar billede pemo123456 Novice
15. april 2011 - 23:10 Der er 7 kommentarer og
1 løsning

kalde en $row frem i en siden ved klik på anden side ???

Mit problem er som følger: Jeg har lavet en mysql database, hvor jeg i en form kan indtaste oplysninger, som så gemmes i databasen. Jeg har herefter en anden side, hvor jeg kan hente alle resultaterne ud (fornavn, efternavn, telefon etc). På denne liste forsøger jeg så at få indlagt et link i row=fornavn, således at jeg ved klik på fornavn vil få åbnet en ny side, hvor jeg kan redigere indholdet og hvor de eksisterende data vises (hvis eksempelvis telefonnummer skal checkes og efterfølgende opdateres). Denne del går desværre ikke helt så godt, hvorfor jeg håber på lidt hjælp her - tak.

I filen liste.php har jeg bl.a. følgende kode:

$sqlCommand = "SELECT * FROM personer";
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());
while ($row = mysqli_fetch_array($query)) {

    $uid = $row["id"];
    $fnavn = $row["fornavn"];
   
    $fornavn = '<a href="rediger_kunde.php?pid=' . $uid . '">' . $fnavn . '</a>';   

    $listeid .= "$uid<br /><hr />";
    $listefornavn .= "$fornavn<br /><hr />";

Dette bliver kaldt i et echo i en tabel, der principielt virker ok. Dvs. tabellen skabes med korrekt indhold, og der bliver "lagt" et link i fornavnet til personen, der svarer til ID i tabellen. Linket ser således ud: ../rediger_person.php?pid=2

Men heri ligger også problemet, for ?pid=2 skal egentlig ikke "lægges" til url'en, men i stedet kalde den $row i tabellen som skal redigeres via siden "rediger_person.php". Og måske er det alligevel OK, hvis blot der findes en måde at kalde det på, når siden "rediger_person.php" afvikles.

Den kode, jeg forsøger at kalde en $row frem i "rediger_person.php", ser således ud, og det bliver brugt i en query, som i bund og grund også virker ok - har lavet et test script, hvor jeg selv indtaster ID, og herefter afvikles "rediger_person.php" som den skal.

$sqlCommand = "SELECT * FROM golfside WHERE id='$pid' LIMIT 1";

Håber mit problem er forståeligt og kan afhjælpes rimeligt nemt.
Avatar billede Six Nybegynder
16. april 2011 - 01:10 #1
Du skal hente pid fra querystringen.

Det kan du gøre med:

$_GET['pid'];

Dvs inden du bruger pid i din SQL skal du lave en.

$pid = $_GET['pid'];
Avatar billede webweaver Praktikant
16. april 2011 - 01:20 #2
Hvis du har en url med variabel i og den bliver overført, så er det jo lige til. Du skal bare lige fange din variabel.

Det vil sige, at du skriver inde i rediger_person.php

<?php

$id = mysql_real_escape_string($_GET['pid']);

$sqlCommand = "SELECT * FROM golfside WHERE id = '$id' LIMIT 1";

?>
Avatar billede pemo123456 Novice
16. april 2011 - 08:18 #3
Hej

Jeg er lidt meget i tvivl om, hvorvidt jeg rent faktisk får overført variablen andet en til url'en. Jeg tror som sådan ikke at det script, der afvikles i rediger_person.php har denne variable med i afviklingen af scriptet. Jeg har prøvet at kopiere dit forslag ind (skulle tilføje et i til mysqli, da jeg ellers fik en password error, hvilket jeg ikke lige forstår, men det er ikke vigtigt lige nu).

Med med dit forslag får jeg følgende fejl, hvilket vist indikerer, at variablen ikke bliver overført korrekt.

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in ../rediger_person.php on line 7
hvor linie 7 er:      $id = mysqli_real_escape_string($_GET['pid']);
Avatar billede Six Nybegynder
16. april 2011 - 09:48 #4
Hvis der - når du kommer ind på rediger_kunde.php, står rediger_kunde.php?pid={dittal} i dit adressefelt på browseren, så er variblen overført som den skal. Og du kan hente den med $_GET['pid']

Virker det, hvis du gør det uden mysql_real_escape_string?

$pid = $_GET['pid'];
$sqlCommand = "SELECT * FROM golfside WHERE id='$pid' LIMIT 1";

?
Avatar billede webweaver Praktikant
16. april 2011 - 09:49 #5
Sidder du med PHP5?

Prøv i første omgang bare at fjerne real_escape funktionen. Det er noget sikkerhedsmæsigt noget, som du bør have med, men det kan vi tage efterfølgende ...

Hvis du vil checke om din variabel kommer med over, kan du altid bare bruge;

echo $_GET['pid']; for at se om der kommer noget ud.

Men hvis du ender ud med et link, hvor du har det korrekte id nummer med, så ser det ud til, at den del er god nok.
Avatar billede webweaver Praktikant
16. april 2011 - 09:52 #6
I øvrigt kan du prøve at connecte til MySQL databasen før, at du har mysql_real_escape_string sat ind, istedet for efter. Det kan være problemet.
Avatar billede pemo123456 Novice
17. april 2011 - 10:05 #7
@ fjappe => din løsning kører igennem uden problemer. Havde ikke lige set dit forslag i går.

@ webweaver => jeg bliver ved med at få fejl, som tidligere beskrevet med dine forslag. Så mysql_real_escape_string ser ud til at skabe problemer for mig, selvom jeg selvfølgelig også gerne vil have øget sikkerhed.

Tak for hjælp til begge.
Avatar billede webweaver Praktikant
17. april 2011 - 10:50 #8
Det var så lidt.

Fortsat god weekend :-)
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