16. marts 2007 - 23:11Der er
17 kommentarer og 1 løsning
Accepter eller gå retur (Form-action)
Hej. Det driller, så jeg håber på lidt hjælp. I fil_1.php er der nogle input-felter, som via Form-action smides over i fil_2.php, hvor tanken er følgende: 1. Fejlkontrol på input-felterne. Hvis fejl, så vis fejl og en Tilbage-knap 2. Hvis ingen fejl, så vis input-felterne + en retur-knap og en accepter-knap 3. Hvis, der accepteres, så updater Mysql.
Jeg kan ikke finde ud af, hvordan <Form> skal anvendes og rækkefølgen -noget med if osv. Tilbageknap kan jeg godt finde ud af - her bruger jeg javascript. En der vil hjælpe med et eksempel. Koden til <form> må gerne være præcis, mens jeg ikke behøver deltaljer på visning af input-felter, fejlkontrol m.m. Håber det er forståeligt.
<script type="text/javascript"> function valider(f){ if(!f.navn.value.match(/\w{4,}/)){ alert("Du skal udfylde navn med mindst 4 ordtegn"); f.navn.focus(); return false; } if(!f.zip.value.match(/^\d{4}$/)){ alert("Du skal udfylde postnummer med netop 4 cifre"); f.zip.focus(); return false; } return true; } </script>
<form action="fil_2.php" method="POST" name="accept"> Indtast dit navn:<br> <input type="text" name="navn"><br> Indtast nu din email:<br> <input type="text" name="email"></br> <input type="submit" value="Opret" name="submit> </form> ------------------------------------------------------ fil_2.php ------------------------------------------------------ Her skal du så have PHP til at undersøge de data vi har lagt i formen fra fil_1.php. Det gør du først ved at sætte nogle variabler op, som henter de data. <? $navn = $_POST['navn']; $email = $_POST['email']; //Nu har vi forenklet processen ved at hente data. vi har deklereret variablerne med dataen fra formen.
//nu laver vi så en tjek på om der er fejl, F.eks, der er et felt der mangler at blive udfyldt.
//Vi bruger en if-Else sætning til det, ved at skrive et ( ! ) foran variablens navn betyder det. "Hvis den er tom. så gør følgende" if (!$navn) { echo "Du skal skrive noget i Navn feltet!": echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM> } elseif (!$email) { echo "Du skal skrive noget i Email feltet!": echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM> } else { ?> Acceptere du disse data for at være dine?<br> <form action="fil_3.php" method="POST" name="accept2"> Er dette dit navn?:<br> <input type="text" name="navn" value="<? $navn ?>"><br> Og er dette din email:<br> <input type="text" name="email" value="<? $email ?>"></br> <input type="submit" value="Jeg acceptere dette er mine data" name="submit> </form> <? } ?>
Roenving - tak for dine input fejlkontrol på klienten. Skriger's svar imødekommer min efterspørgsel. Jeg er lidt i tvivl. Den nederste form imødekommer ikke helt mit ønske. Du viser muligheden for at acceptere, men jeg synes der mangler muligheden for, at gå tilbage, hvis jeg nu ikke vil acceptere (altså både en accept-knap og en tilbage-knap. Og endelig, hvis jeg vil acceptere, hvor i koden skal jeg smide "Mysql" update?? Du kan bare vise noget i stil med: "Dette er kvittering på, at du har accepteret dine data". Håber du vil svare på dette også.
Selføldig Nemlig. ser du. Vi bruger fil_2.php fra det gamle eksempel:
<? $navn = $_POST['navn']; $email = $_POST['email']; //Nu har vi forenklet processen ved at hente data. vi har deklereret variablerne med dataen fra formen.
//nu laver vi så en tjek på om der er fejl, F.eks, der er et felt der mangler at blive udfyldt.
//Vi bruger en if-Else sætning til det, ved at skrive et ( ! ) foran variablens navn betyder det. "Hvis den er tom. så gør følgende" if (!$navn) { echo "Du skal skrive noget i Navn feltet!": echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>" } elseif (!$email) { echo "Du skal skrive noget i Email feltet!": echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>" } else { ?> Acceptere du disse data for at være dine?<br> <form action="fil_3.php" method="POST" name="accept2"> Er dette dit navn?:<br> <input type="text" name="navn" value="<? $navn ?>"><br> Og er dette din email:<br> <input type="text" name="email" value="<? $email ?>"></br> <input type="submit" value="Jeg acceptere dette er mine data" name="submit><br> <FORM><INPUT TYPE="button" VALUE="Jeg acceptere ikke" onClick="history.go(-1);return true;"> </FORM> </form> <? } ?>
-- Så er Tilbage knappen placeret under accept knappen. For at vi så kan gemme i mysql kan vi bruge to metoder. jeg vil vise begge.
----------------------------------------------- Første metode: Vise til anden fil "fil_3.php" -Her går vi til fil_3.php hvis accept knappen bliver trykket og gemmer i mysql ----------------------------------------------- ( Vi bruger fil_2.php ) <? $navn = $_POST['navn']; $email = $_POST['email']; //Nu har vi forenklet processen ved at hente data. vi har deklereret variablerne med dataen fra formen.
//nu laver vi så en tjek på om der er fejl, F.eks, der er et felt der mangler at blive udfyldt.
//Vi bruger en if-Else sætning til det, ved at skrive et ( ! ) foran variablens navn betyder det. "Hvis den er tom. så gør følgende" if (!$navn) { echo "Du skal skrive noget i Navn feltet!": echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>" } elseif (!$email) { echo "Du skal skrive noget i Email feltet!": echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>" } else { ?> Acceptere du disse data for at være dine?<br> <form action="fil_3.php" method="POST" name="accept2"> Er dette dit navn?:<br> <input type="text" name="navn" value="<? $navn ?>"><br> Og er dette din email:<br> <input type="text" name="email" value="<? $email ?>"></br> <input type="submit" value="Jeg acceptere dette er mine data" name="submit_accept><br> <FORM><INPUT TYPE="button" VALUE="Jeg acceptere ikke" onClick="history.go(-1);return true;"> </FORM> </form> <? } ?>
-------------------------- Når der trykkes Accept knappen, går vi til fil_3.php Som ser sådan her ud ---------------------------
<? //først forbinder vi til databasen $forbind = mysql_connect('localhost', 'mysql_bruger', 'mysql_kode'); mysql_select_db($database);
//så kigger vi om felterne er tomme if (!$navn) { echo "Du skal skrive noget i Navn feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>" } elseif (!$email) { echo "Du skal skrive noget i Email feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>" } elseif (!$submit_accept) { echo "Du kommer ikke fra accept siden. vær venlig at prøve igen.!"; } else { //Hvis alting er iorden, gemmer vi i databasen. mysql_query("INSERT INTO person (navn, email) VALUES ($navn, $email)"); echo "Du blev indført i vores database. tusinde tak.!"; } ?>
----- Har du brug for mere hjælp, så skriv du bare, hvis ikke scriptet virker, så lige giv et pift så løser vi det sammen, har ikke lige haft det oploaded så kan sagtens være nogle små fejl.
Ups kom lige i tanke om den anden ting du kunne gøre: Her får vi simpelthen siden til at gå til sig selv hvis der trykkes accept, og derved indsætte data ------------------------------------------------------ fil_2.php
<? //først forbinder vi til databasen $forbind = mysql_connect('localhost', 'mysql_bruger', 'mysql_kode'); mysql_select_db($database);
$navn = $_POST['navn']; $email = $_POST['email']; $submit_accept = $_POST['submit_accept']; //Nu har vi forenklet processen ved at hente data. vi har deklereret variablerne med dataen fra formen.
//nu laver vi så en tjek på om der er fejl, F.eks, der er et felt der mangler at blive udfyldt.
//Vi bruger en if-Else sætning til det, ved at skrive et ( ! ) foran variablens navn betyder det. "Hvis den er tom. så gør følgende" if (!$navn) { echo "Du skal skrive noget i Navn feltet!": echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>" } elseif (!$email) { echo "Du skal skrive noget i Email feltet!": echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>" } elseif ($submit_accept) { //Hvis alting er iorden, gemmer vi i databasen. mysql_query("INSERT INTO person (navn, email) VALUES ($navn, $email)"); echo "Du blev indført i vores database. tusinde tak.!"; } else { ?> Acceptere du disse data for at være dine?<br> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" name="accept2"> Er dette dit navn?:<br> <input type="text" name="navn" value="<? $navn ?>"><br> Og er dette din email:<br> <input type="text" name="email" value="<? $email ?>"></br> <input type="submit" value="Jeg acceptere dette er mine data" name="submit_accept><br> <FORM><INPUT TYPE="button" VALUE="Jeg acceptere ikke" onClick="history.go(-1);return true;"> </FORM> </form> <? } ?>
Det driller lidt. Der manglede nogle ";" flere steder. Jeg får denne fejl:
Parse error: syntax error, unexpected $end in C:\wamp\www\kalender\ret_aflaes2.php on line 42
Min kode ser sådan her ud: <?php //først forbinder vi til databasen $forbind = mysql_connect('localhost', 'root', ''); mysql_select_db('mysql');
$navn = $_POST['navn']; $email = $_POST['email']; $submit_accept = $_POST['submit_accept']; //Nu har vi forenklet processen ved at hente data. vi har deklereret variablerne med dataen fra formen.
//nu laver vi så en tjek på om der er fejl, F.eks, der er et felt der mangler at blive udfyldt.
//Vi bruger en if-Else sætning til det, ved at skrive et ( ! ) foran variablens navn betyder det. "Hvis den er tom. så gør følgende" if ($navn > '0') { echo "Du skal skrive noget i Navn feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>"; } elseif (!$email) { echo "Du skal skrive noget i Email feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>"; } elseif ($submit_accept) { //Hvis alting er iorden, gemmer vi i databasen. mysql_query("UPDATE tabelnavn SET navn=$navn, email=$email WHERE ID = {$_SESSION['id_ret_aflaes']}"); //Id hentet fra fil1.php
echo "Du blev indført i vores database. tusinde tak.!"; } else { ?> Acceptere du disse data for at være dine?<br> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" name="accept2"> Er dette dit navn?:<br> <input type="text" name="navn" value="<? $navn ?>"><br> Og er dette din email:<br> <input type="text" name="email" value="<? $email ?>"></br> <input type="submit" value="Jeg acceptere dette er mine data" name="submit_accept><br> <FORM><INPUT TYPE="button" VALUE="Jeg acceptere ikke" onClick="history.go(-1);return true;"> </FORM> </form> <? } ?>
<?php //først forbinder vi til databasen $forbind = mysql_connect('localhost', 'root', ''); mysql_select_db('mysql');
$navn = $_POST['navn']; $email = $_POST['email']; $submit_accept = $_POST['submit_accept']; //Nu har vi forenklet processen ved at hente data. vi har deklereret variablerne med dataen fra formen.
//nu laver vi så en tjek på om der er fejl, F.eks, der er et felt der mangler at blive udfyldt.
//Vi bruger en if-Else sætning til det, ved at skrive et ( ! ) foran variablens navn betyder det. "Hvis den er tom. så gør følgende" if (!$navn) { echo "Du skal skrive noget i Navn feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>"; } elseif (!$email) { echo "Du skal skrive noget i Email feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>"; } elseif ($submit_accept) { //Hvis alting er iorden, gemmer vi i databasen. mysql_query("UPDATE tabelnavn SET navn=$navn, email=$email WHERE ID = {$_SESSION['id_ret_aflaes']}"); //Id hentet fra fil1.php
echo "Du blev indført i vores database. tusinde tak.!"; } else { echo "Acceptere du disse data for at være dine?<br> <form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='POST' name='accept2'> Er dette dit navn?:<br> <input type='text' name='navn' value='<? $navn ?>'><br> Og er dette din email:<br> <input type='text' name='email' value='<? $email ?>'></br> <input type='submit' value='Jeg acceptere dette er mine data' name='submit_accept><br> </form>"; <form> <INPUT TYPE='button' VALUE='Jeg acceptere ikke' onClick='history.go(-1);return true;'> </FORM> } ?>
SÅ NEMLIG. Uploadede den lige, og har rettet alle fejl nu: -Husk at ændre <form action=""> til det din fil hedder, altså FX fil_2.php ( samme fil som scriptet ligger i ) ---------------------------------------------- <?php //først forbinder vi til databasen $forbind = mysql_connect('localhost', 'root', ''); mysql_select_db('mysql');
$navn = $_POST['navn']; $email = $_POST['email']; $submit_accept = $_POST['submit_accept']; //Nu har vi forenklet processen ved at hente data. vi har deklereret variablerne med dataen fra formen.
//nu laver vi så en tjek på om der er fejl, F.eks, der er et felt der mangler at blive udfyldt.
//Vi bruger en if-Else sætning til det, ved at skrive et ( ! ) foran variablens navn betyder det. "Hvis den er tom. så gør følgende" if (!$navn) { echo "Du skal skrive noget i Navn feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>"; } elseif (!$email) { echo "Du skal skrive noget i Email feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>"; } elseif ($submit_accept) { //Hvis alting er iorden, gemmer vi i databasen. mysql_query("UPDATE tabelnavn SET navn=$navn, email=$email WHERE ID = {$_SESSION['id_ret_aflaes']}"); //Id hentet fra fil1.php
echo "Du blev indført i vores database. tusinde tak.!"; } else { echo "Acceptere du disse data for at være dine?<br> <form action='fil_2.php' method='POST' name='accept2'> Er dette dit navn?:<br> <input type='text' name='navn' value='<? $navn ?>'><br> Og er dette din email:<br> <input type='text' name='email' value='<? $email ?>'></br> <input type='submit' value='Jeg acceptere dette er mine data' name='submit_accept><br> </form>"; echo "<form> <INPUT TYPE='button' VALUE='Jeg acceptere ikke' onClick='history.go(-1);return true;'> </FORM>"; } ?>
Først og fremmest tak for dit arbejde. Det fungerer ikke helt, men næsten. 1. Fejlkontrollen virker. 2. Når jeg så bliver mødt med "accepterer du disse data.....", så står de 2 indtastede data ($navn og $email) i input-felterne, men omkranset af "<? **** ?>" 3. "Accepter ikke" knappen vises ikke.
Ups, fejl fra min side: here you go. --------------------------------------- <?php //først forbinder vi til databasen $forbind = mysql_connect('localhost', 'root', ''); mysql_select_db('mysql');
$navn = $_POST['navn']; $email = $_POST['email']; $submit_accept = $_POST['submit_accept']; //Nu har vi forenklet processen ved at hente data. vi har deklereret variablerne med dataen fra formen.
//nu laver vi så en tjek på om der er fejl, F.eks, der er et felt der mangler at blive udfyldt.
//Vi bruger en if-Else sætning til det, ved at skrive et ( ! ) foran variablens navn betyder det. "Hvis den er tom. så gør følgende" if (!$navn) { echo "Du skal skrive noget i Navn feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>"; } elseif (!$email) { echo "Du skal skrive noget i Email feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>"; } elseif ($submit_accept) { //Hvis alting er iorden, gemmer vi i databasen. mysql_query("UPDATE tabelnavn SET navn=$navn, email=$email WHERE ID = {$_SESSION['id_ret_aflaes']}"); //Id hentet fra fil1.php
echo "Du blev indført i vores database. tusinde tak.!"; } else { echo "Acceptere du disse data for at være dine?<br> <form action='fil_2.php' method='POST' name='accept2'> Er dette dit navn?:<br> <input type='text' name='navn' value=$navn><br> Og er dette din email:<br> <input type='text' name='email' value=$email></br> <input type='submit' value='Jeg acceptere dette er mine data' name='submit_accept><br> <INPUT TYPE='button' VALUE='Jeg acceptere ikke' onClick='history.go(-1);return true;'> </form>"; <form> } ?>
Og lige en respons fra det med navnet, fixer lige... PRøv nu ----------------
<?php //først forbinder vi til databasen $forbind = mysql_connect('localhost', 'root', ''); mysql_select_db('mysql');
$navn = $_POST['navn']; $email = $_POST['email']; $submit_accept = $_POST['submit_accept']; //Nu har vi forenklet processen ved at hente data. vi har deklereret variablerne med dataen fra formen.
//nu laver vi så en tjek på om der er fejl, F.eks, der er et felt der mangler at blive udfyldt.
//Vi bruger en if-Else sætning til det, ved at skrive et ( ! ) foran variablens navn betyder det. "Hvis den er tom. så gør følgende" if (!$navn) { echo "Du skal skrive noget i Navn feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>"; } elseif (!$email) { echo "Du skal skrive noget i Email feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>"; } elseif ($submit_accept) { //Hvis alting er iorden, gemmer vi i databasen. mysql_query("UPDATE tabelnavn SET navn=$navn, email=$email WHERE ID = {$_SESSION['id_ret_aflaes']}"); //Id hentet fra fil1.php
echo "Du blev indført i vores database. tusinde tak.!"; } else { echo "Acceptere du disse data for at være dine?<br> <form action='fil_2.php' method='POST' name='accept2'> Er dette dit navn?:<br> <input type='text' name='navn2' value=$navn><br> Og er dette din email:<br> <input type='text' name='email2' value=$email></br> <input type='submit' value='Jeg acceptere dette er mine data' name='submit_accept><br> <INPUT TYPE='button' VALUE='Jeg acceptere ikke' onClick='history.go(-1);return true;'> </form>"; <form> } ?>
Ift. sidste tilbagemelding, er det alene indholdet i input, der nu funger. Jeg mangler stadig "accepter ikke" knappen og når jeg accepterer, går den til fejlkontrol. Fil2.php bliver jo indlæst igen, hvorfor fejlkontrollen starter forfra. Og nu er indholdet fra $_POST['navn'] vel tomt, hvorfor det giver fejl?
prøv igen sådan her, nu fylder vi dem simpelthen op igen :)
<?php //først forbinder vi til databasen $forbind = mysql_connect('localhost', 'root', ''); mysql_select_db('mysql');
$navn = $_POST['navn']; $email = $_POST['email']; $submit_accept = $_POST['submit_accept']; //Nu har vi forenklet processen ved at hente data. vi har deklereret variablerne med dataen fra formen.
//nu laver vi så en tjek på om der er fejl, F.eks, der er et felt der mangler at blive udfyldt.
//Vi bruger en if-Else sætning til det, ved at skrive et ( ! ) foran variablens navn betyder det. "Hvis den er tom. så gør følgende" if (!$navn) { echo "Du skal skrive noget i Navn feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>"; } elseif (!$email) { echo "Du skal skrive noget i Email feltet!"; echo "<FORM><INPUT TYPE='button' VALUE='Tilbage' onClick='history.go(-1);return true;'> </FORM>"; } elseif ($submit_accept) { //Hvis alting er iorden, gemmer vi i databasen. mysql_query("UPDATE tabelnavn SET navn=$navn, email=$email WHERE ID = {$_SESSION['id_ret_aflaes']}"); //Id hentet fra fil1.php
echo "Du blev indført i vores database. tusinde tak.!"; } else { echo "Acceptere du disse data for at være dine?<br> <form action='fil_2.php' method='POST' name='accept2'> Er dette dit navn?:<br> <input type='text' name='navn' value=$navn><br> Og er dette din email:<br> <input type='text' name='email' value=$email></br> <input type='submit' value='Jeg acceptere dette er mine data' name='submit_accept><br> <INPUT TYPE='button' VALUE='Jeg acceptere ikke' onClick='history.go(-1);return true;'> </form>"; <form> } ?>
Jeg kommer ikke længere til fejlkontrollen, men jeg får fortsat ikke knappen "accepter ikke". Når jeg trykker på "Jeg accepterer..."knappen, så sker der heller ingen ting.
Hør nemlig, gider du tilføje mig på MSN-Messenger, Darkstormarkai@hotmail.com, det ville være meget lettere at hjælpe dig der. og kan se dette ikke er det eneste problem du har :) -Skriger
Synes godt om
Ny brugerNybegynder
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.