15. april 2011 - 23:10Der 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)) {
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.
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']);
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";
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.
@ 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.
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.