Avatar billede henrik6666 Nybegynder
09. november 2003 - 17:37 Der er 22 kommentarer og
1 løsning

PHP-formular 5

Se link for at teste mine test-sider : http://www.linksguide.1go.dk/hovedside.htm

Problemet er at det virker som om min formular nulstiller de oplysninger jeg har indskrevet i min MySQL database lige så snart den indlæses men håber der er en der vil kikke mine koder igennem og løse problemet så det virker på følgende måde :

Man skal kunne kikke på ens oplysninger, og rette dem efter behov og så vil jeg gerne have at når formular-siden indlæses at de input der står i forvejen fra databasen vises i inputs felterne

Nøjes i første omgang at vise koderne for formular siden :

<html>
<body bgcolor="#CCCCCC">
<?php
$connection = mysql_connect("localhost","XXXX","XXXX");
mysql_select_db("XXXX", $connection);
?>
<?php
$result = mysql_query("select status1,status2,status3,status4,status5 from id16 where nr = '16'");
$row    = mysql_fetch_array($result);
?>
<?php
mysql_query("update id16 set status1='$status1',status2='$status2',status3='$status3',status4='$status4',status5='$status5' where nr = '16'");
?>
<form method=post action=<? echo $PHP_SELF; ?>>
   
Status1 :<input type=text name=status1 value="<? echo "$row[status1]"; ?>"><br>
     
Status2 :<input type=text name=status2 value="<? echo "$row[status2]"; ?>"><br>

Status3 :<input type=text name=status3 value="<? echo "$row[status3]"; ?>"><br>

Status4 :<input type=text name=status4 value="<? echo "$row[status4]"; ?>"><br>
 
Status5 :<input type=text name=status5 value="<? echo "$row[status5]"; ?>"><br>
   
<input type=submit value="Opdater">
</form>

</body>
</html>
Avatar billede henrik6666 Nybegynder
09. november 2003 - 18:27 #1
Sådan ..nu skulle test siden være fuldt funktionelt så det er nemt at se det er formular siden der ikke virker efter hensigten ;-))

Plz ..help :-((
Avatar billede erikjacobsen Ekspert
09. november 2003 - 18:30 #2
Du skal nok:

$status1 = $_POST['status1'];
Avatar billede henrik6666 Nybegynder
09. november 2003 - 18:40 #3
Okay ..og kan du ikke lige vise det lidt tydeligt hvor jeg præcist skal indføre dit mulige svar ;-))
Avatar billede erikjacobsen Ekspert
09. november 2003 - 19:53 #4
Bare i starten af din PHP - og selvfølgelig for alle felter i formen.
Avatar billede henrik6666 Nybegynder
09. november 2003 - 22:30 #5
Kan stadig ikke se hvor i starten du mener jeg skal indføre noget ..

I nedenstående koder har jeg indsat "dit forslag" i "felterne" ..det er vel korrekt ?

<html>
<body bgcolor="#CCCCCC">
<?php
$connection = mysql_connect("localhost","XXXX","XXXX");
mysql_select_db("XXXX", $connection);
?>
<?php
$result = mysql_query("select status1,status2,status3,status4,status5 from id16 where nr = '16'");
$row    = mysql_fetch_array($result);
?>
<?php
mysql_query("update id16 set status1='$status1',status2='$status2',status3='$status3',status4='$status4',status5='$status5' where nr = '16'");
?>

<form method=post action=<? echo $PHP_SELF; ?>>
   
Status1 :<input type=text name=status1 value="<? echo $status1 = $_POST['status1']; ?>"><br>
     
Status2 :<input type=text name=status2 value="<? echo $status2 = $_POST['status2']; ?>"><br>

Status3 :<input type=text name=status3 value="<? echo $status3 = $_POST['status3']; ?>"><br>

Status4 :<input type=text name=status4 value="<? echo $status4 = $_POST['status4']; ?>"><br>
 
Status5 :<input type=text name=status5 value="<? echo $status5 = $_POST['status5']; ?>"><br>
   
<input type=submit value="Opdater">
</form>

</body>
</html>
Avatar billede erikjacobsen Ekspert
09. november 2003 - 22:36 #6
Nej, bare oppe i toppen af din php-kode.
Avatar billede henrik6666 Nybegynder
09. november 2003 - 23:35 #7
Ser ud til lyset blev "tændt" ..det virker :-) Tusind tak for hjælpen ..
Avatar billede henrik6666 Nybegynder
09. november 2003 - 23:38 #8
Men noget af det sværeste er da at uddele point når man ikke ligefrem spammer i Eksperten ..tror lige du skal skrive en lille tekst før jeg kan aflevere pointene ;-)
Avatar billede erikjacobsen Ekspert
09. november 2003 - 23:41 #9
Så har du jo selv gjort det meste arbejde - skidt med point.
Avatar billede henrik6666 Nybegynder
10. november 2003 - 09:12 #10
He he .. ok men kan kun se en mulighed og det er at trykke "udfør" og markere radioknappen "svar" så det prøver jeg lige :-)
Avatar billede henrik6666 Nybegynder
10. november 2003 - 09:15 #11
Men så kan jeg kun afgive point til mig selv ?!?! Det burde være anderledes .. så jeg afviser lige "henrik6666".
Avatar billede erikjacobsen Ekspert
10. november 2003 - 09:15 #12
Det er den rigtige måde at gøre det på.
Avatar billede henrik6666 Nybegynder
10. november 2003 - 09:15 #13
Så er der kun en mulighed tilbage og det er "udfør" og "kommentar" ..
Avatar billede henrik6666 Nybegynder
10. november 2003 - 09:17 #14
Opgiver .. og forstår stadig ikke hvorfor jeg ikke kunne afgive pointene da du havde svaret sidst! Trykker "udfør" og markerer "svar" og tildeler pointene til mig selv :-(
Avatar billede henrik6666 Nybegynder
10. november 2003 - 09:19 #15
Okay .. har lige læst din "hurtige" kommentar ;-)) Ok ..så er alt iorden ..synes bare det er noget misvisende :-|
Avatar billede Slettet bruger
10. november 2003 - 09:24 #16
Istedet for at skulle skrive $_POST[status1] ... $_POST[status5], var det måske en ide at kigge på http://dk2.php.net/extract

Det er jo noget smartere at bruge extract($_POST) hvis vi havde haft flere end 5 inputs
Avatar billede henrik6666 Nybegynder
10. november 2003 - 09:47 #17
Ok ..skriver det bag øret til en anden gang men erikjacobsen`s svar virker perfekt så det benytter jeg mig af indtil videre da jeg stadig betragter mig selv som værende "nybegynder" og har ikke den store lyst til at eksperimentere endnu ;-)) men tak for muligheden ..
Avatar billede erikjacobsen Ekspert
10. november 2003 - 10:05 #18
Jeg vil nu fraråde generel brug af extract. I dette tilfælde, kun med $_POST,
gør det vist ikke det helt store, men brug af extract med fx $_SESSION og $_GET
er katastrofalt. Så er vi tilbage ved de oldnordiske "registerglobals", og
de problemer de gav.
Avatar billede henrik6666 Nybegynder
10. november 2003 - 10:19 #19
Testede det igår og sov godt inat og da jeg skulle igang med at ændre samtlige "registrede" til min nye database opdagede jeg til min store skræk at når formular siden blev kaldt frem så man kunne se ens "input" for derved at sige de er ok og klikke væk fra formular siden igen ..ja så sletter den desværre alle oplysninger på "id16" ..

Her er min formular side igen og hvad er det som der går galt ? :


<html>
<body bgcolor="#CCCCCC">
<?php
$connection = mysql_connect("XXXX","XXXX","XXXX");
mysql_select_db("XXXX", $connection);
?>

<?php
$result = mysql_query("select status1,status2,status3,status4,status5 from id16 where nr = '16'");
$row    = mysql_fetch_array($result);
?>

<?php
mysql_query("update id16 set status1='$status1',status2='$status2',status3='$status3',status4='$status4',status5='$status5' where nr = '16'");
?>

<?php
$status1 = $_POST['status1'];
$status2 = $_POST['status2'];
$status3 = $_POST['status3'];
$status4 = $_POST['status4'];
$status5 = $_POST['status5'];
?>

<form method=post action=<? echo $PHP_SELF; ?>>
   
Status1 :<input type=text name=status1 value="<? echo "$row[status1]"; ?>"><br>
 
Status2 :<input type=text name=status2 value="<? echo "$row[status2]"; ?>"><br>

Status3 :<input type=text name=status3 value="<? echo "$row[status3]"; ?>"><br>

Status4 :<input type=text name=status4 value="<? echo "$row[status4]"; ?>"><br>
 
Status5 :<input type=text name=status5 value="<? echo "$row[status5]"; ?>"><br>
   
<input type=submit value="Opdater">
</form>

</body>
</html>
Avatar billede erikjacobsen Ekspert
10. november 2003 - 11:29 #20
De der 5 linier skal jo nok stå før du anvender fx $status1
Avatar billede henrik6666 Nybegynder
10. november 2003 - 12:09 #21
Jep .. men det havde jeg også prøvet som nedenstående koder illustrerer

<html>
<body bgcolor="#CCCCCC">
<?php
$connection = mysql_connect("XXXX","XXXX","XXXX");
mysql_select_db("XXXX", $connection);
?>

<?php
$result = mysql_query("select status1,status2,status3,status4,status5 from id16 where nr = '16'");
$row    = mysql_fetch_array($result);
?>

<?php
$status1 = $_POST['status1'];
$status2 = $_POST['status2'];
$status3 = $_POST['status3'];
$status4 = $_POST['status4'];
$status5 = $_POST['status5'];
?>

<?php
mysql_query("update id16 set status1='$status1',status2='$status2',status3='$status3',status4='$status4',status5='$status5' where nr = '16'");
?>

<form method=post action=<? echo $PHP_SELF; ?>>
   
Status1 :<input type=text name=status1 value="<? echo "$row[status1]"; ?>"><br>
 
Status2 :<input type=text name=status2 value="<? echo "$row[status2]"; ?>"><br>

Status3 :<input type=text name=status3 value="<? echo "$row[status3]"; ?>"><br>

Status4 :<input type=text name=status4 value="<? echo "$row[status4]"; ?>"><br>
 
Status5 :<input type=text name=status5 value="<? echo "$row[status5]"; ?>"><br>
   
<input type=submit value="Opdater">
</form>

</body>
</html>

Men DB-oplysningerne bliver stadig slettet hvis formularen fremkaldes og du intet ændrer i oplysningerne.

Jeg ser ellers "metoden" masser af steder fx i forums hvor man kan logge ind og se ens personlige oplysninger men der sker dog ikke det at alt slettes når man logger ud (uden at have foretaget ændringer) eller for den sags skyld lukker browseren "på den hårde måde" ;-)) ..altså vores fine rød/hvide kryds oppe i højre hjørne (der findes undtagelser*G*) ..
Avatar billede erikjacobsen Ekspert
10. november 2003 - 12:11 #22
Men du udfører jo også din UPDATE hver gang siden hentes. Du skal vel kun
gøre det hvis der kommer oplysninger fra formen. Kan ske du skal have en if
Avatar billede henrik6666 Nybegynder
10. november 2003 - 13:47 #23
Korrekt og det har jeg osse hele tiden haft på fornemmelsen at det var "update" den var gal med ;-))

Fik hjælp fra Kammeyer (privat) og nedenstående koder virker hvis andre vil gøre brug af det ..

<html>
<body bgcolor="#CCCCCC">
<?php
$connection = mysql_connect("XXXX","XXXX","XXXX");
mysql_select_db("XXXX", $connection);
?>

<?php
if ($_POST["action"] == "update")
    {
        $status1 = $_POST['status1'];
        $status2 = $_POST['status2'];
        $status3 = $_POST['status3'];
        $status4 = $_POST['status4'];
        $status5 = $_POST['status5'];
        mysql_query("update id16 set status1='$status1',status2='$status2',status3='$status3',status4='$status4',status5='$status5' where nr = '16'");
    }
?>

<?php
// Du skal ikke vise de gamle data - fra før updaten - men du vil vise de nye data fra EFTER updaten.
// Derfor skal selecten først komme nu
$result = mysql_query("select status1,status2,status3,status4,status5 from id16 where nr = '16'");
$row    = mysql_fetch_array($result);
?>

<form method=post action="<? echo $_SERVER["PHP_SELF"]; ?>">
   
Status1 :<input type=text name=status1 value="<? echo $row["status1"]; ?>"><br>
 
Status2 :<input type=text name=status2 value="<? echo $row["status2"]; ?>"><br>

Status3 :<input type=text name=status3 value="<? echo $row["status3"]; ?>"><br>

Status4 :<input type=text name=status4 value="<? echo $row["status4"]; ?>"><br>
 
Status5 :<input type=text name=status5 value="<? echo $row["status5"]; ?>"><br>

<input type=hidden name=action value=update>
   
<input type=submit value="Opdater">
</form>

</body>
</html>
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