15. juli 2003 - 13:20Der er
12 kommentarer og 1 løsning
Formular og mysql
Hej,
Jeg har lavet et script med et formularfelt hvor brugeren skal indtaste navn, email og nogen tekst, nederst er der muligt at vælge "send" eller "om igen". De indtastede data gemmes så i en mysql database.
Hvis brugeren har indtastet navn og valgt send, vises på skærmen "Hey $navn din tekst fil er nu registreret"
Ovenstående fungerer fint, men nu vil jeg gerne modefisere scriptet med følgende
1. Der skal checkes om brugeren har indtastet "navn" og "email" om ikke og brugeren vælger send, skal der vises på skærmen f.eks. "du har ikke indtastet navn eller du har ikke indtastet email"
2. Når man står i navn eller email feltet og brugeren trykker på enter i stedet for tab sendes dataerne til databasen, kan man gøre det således at brugeren skal med musepilen over send feltet således at dataerne ikke bliver send kun fordi brugeren kommer til at trykke på enter før han er færdig med at indtaste data
3. Nu er det således at når brugeren vælger send, vises på samme skærmbillede "Hey $navn din tekst fil er nu registreret" ($navn er så det navn brugeren har indtastet), er det muligt at der i stedet kommer et popup vindue hvori det bl.a. kunnu stå "Hey $navn din tekst fil er nu registreret".
Felterne i databasen er følgende id int(11) navn tinytext email tinytext tekst text
php koden er følgende (i koden er database, brugernavn og psw udskiftet med xxxx)
<?php if($navn){ echo "<B><h2>Hej $navn din tekst fil er nu registreret!</H2></B>";
$conn = mysql_connect("xxxx", "xxxx", "xxxx") or die("Can't connect to server.");
mysql_select_db("xxxx", $conn);
mysql_query("INSERT INTO xxxx (navn, email, tekst) VALUES ('$navn', '$email', '$tekst')");
} else { ?>
<form method=post action="<?=$PHP_SELF;?>"> <table width=580 style=" BORDER-TOP: black 1px solid; BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-RIGHT: black 1px solid;>
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det med enter, skal laves i javascript, hvis muligt.
Jeg ville putte checket for om formen er submittet i toppen, og derefter lave en header, så en refresh af siden ikke smider det ind igen. Og så ville jeg bruge en session til at lave en alert om at data er blevet behandlet.
lav noget i retingen af dette for alle felterne <SCRIPT> function valider() { tjek=minform.Name.value; if (tjek=='') { alert('Navn mangler.'); event.returnValue=false; } } </SCRIPT>
og i din form <form name="minform" onsubmit="valider();">
Hey Sukos, når jeg bruger din kode alene får jeg får ingen medelelse når jeg ikke indtaster navn, email eller tekst om at jeg ikke har indtastet noget, om jeg udfylder felterne og vælger send, så kommer der ingen meddelelse om at "din tekstfil er nu registreret" dataerne kommer heller ikke i databasen. Jeg har selvfølgeligt rettet databasenavnet, tabelnavn, user og psw til. Hvis jeg incl. til min top fil så får jeg nedenstående fejlmeldingen over formularen Warning: Cannot send session cache limiter - headers already sent (output started at /Local/Library/WebServer/WebSites/www.xxxx.xx/include/head_inn.php:11)
Nogen ide om hvad der er galt, da jeg selv har svært ved at overskue koden :-)
Tror du har en ældre version af PHP på serveren, så derfor skal f.eks. if(isset($_POST["input"])){ være if(isset($_HTTP_POST_VARS["input"])){ ligesom måden at sætte sessions på skal gøres på en anden måde. Versionen af PHP kan du se med en <?php phpinfo(); ?>
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.