02. september 2006 - 22:34Der er
18 kommentarer og 1 løsning
Update script problem
Hej Eksperter Jeg er ved at lave et script, der skal update data som allerede findes i min mysql database.
Jeg har en side hvor brugeren kan oprette sin egen profil. Lad os nu sige, at denne har skrevet sin adresse forkert, og nu gerne vil rette den - det er den update funktion jeg er ude efter.
Jeg henter den allerede eksisterende data ud med scriptet - ret.php: <? include("include/session.php"); if(!$session->checkLogin()) { header("Location: index.php"); exit(); } ?> <html> <head> <title>Ret profil</title> </head> <body> <? mysql_connect("xxx", "xxx", "xxx") or die(mysql_error()); mysql_select_db("xxx") or die(mysql_error());
Problem 1. Dette script henter ikke den eksisterende data ud!!! Hvorfor ikke???
Ret.php linker til ret_ok.php, som ser således ud: <? $connection = mysql_connect("xxx","xxx","xxx"); mysql_select_db("xxx", $connection);
mysql_query("update bruger set navn = '$navn', adresse = '$adresse', postnr = '$postnr', bydk = '$bydk', land = '$bydk', beskriv = '$beskriv', teaser = '$teaser' WHERE design='$session->username'") or die(mysql_error()); print "Profilen er nu blevet rettet"; ?>
Dette script ved jeg ikke om det dur, da jeg ikke er kommet så langt :-)
jeg har brugt username fordi det er det min kolonne hedder i mysql. Jeg satser jo på at ved at skrive design='$session->username'")så kalder jeg på den profil, som tilhører den person, der har logget sig ind.
Når jeg udskrifter design med username får jeg: Unknown column 'username' in 'where clause'
ja, design svarer til værdien af $session->username' :-)
Hvis du ellers har adgang til phpmyadmin, så prøv lige at udskrive SQL-sætningen og afprøv den derefter i phpmyadmin. Giver det noget resultat ud? Det forstår jeg ikke helt. Skal jeg udskrive en sql sætning fra phpmyadmin - som jeg forresten har adgang til.
Hvor skal: $row = mysql_fetxc_assoc($result); sættes ind?
Lav lige rettelsen 02/09-2006 23:08:58 - jeg er 99% sikker på at det er det hele der skal til.
Mht. at afprøve tingene i phpmyadmin: I stedet for at bare udføre en SQL-sætning har du jo altid debug-muligheden at udskrive den til skærmen lige før at du førsøger at sende den til MySQL (eller endda i stedet for at ud føre den). Når at du har udskrevet den, kan du efterfølgende kopiere den, og så paste den til phpmyadmin for der at se hvad der sker når du gør det.
øhhh... virker stadig ikke. mysql_fetch_assoc() er vel rigtig sat ind? Man kan jo sige, at jeg med ?> på 5. linie afslutter min Php del... er det et problem, da jeg skal bruge resultaterne længere nede i en html form???
I hvert tekstfelt står der blot: $row[land]. Det er som om, at der enten ikke connectes til databasen ordentligt, eller at mysql_fetxc_assoc() ikke har nogle resultater at tage med over.
Ja, der var fejlen :-) Nu får jeg kaldt de eksisterende informationer frem, og kan rette i den. Når jeg så klikker på submit, så bliver filen ret_ok.phh kørt:
mysql_query("update bruger set navn = '$navn', adresse = '$adresse', postnr = '$postnr', bydk = '$bydk', land = '$bydk', beskriv = '$beskriv', teaser = '$teaser' WHERE design='$session->username'") or die(mysql_error()); print "Profilen er nu blevet rettet"; ?>
Men selvom jeg så får teksten "Profilen er nu blevet rettet", bliver mine rettelser i formularen ikke updated i databasen. Hvad er der galt med ret_ok.php???
Jeg endte med at hente mine værdier som '$_POST[navn]' - det virker. Jeg går også ud fra at man kan bruge $_POST["navn"] - jeg ved bare ikke i hvilke sammenhænge. Jeg roder nemlig rundt i ' og ".
Men nu virker det - jeg har siddet lagt tid med dette problem, og så er det jo super fedt du kan løse det på ingen tid!!! :-)
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.