17. april 2003 - 08:00Der er
44 kommentarer og 1 løsning
Check variabler
Hej.
Jeg har en del felter i en form der bagefter flyttes til en session variabel. Men inden skal der kontrolleres om variablen er tom, altså der er ikke skrevet noget i formularen. Den kan f. eks. se sådan ud:
$_SESSION['skole'] = $_POST['skole'];
Er det så
if $_POST['skole'] = "" .... og hvad gør man så. Den skal jo blive på samme side og gøre brugeren opmærksom på at der skal stå noget i feltet. Da der er en del, kan man så evt. lave det som en lille rutine, så der ikke skal stå en masse linier for hvert felt. Man kan jo nok ikke gøre det før der trykkes på submit, men det er sådan set også godt nok.
Jeg har også en $email og den ville jeg også gerne have checket for om den er skrevet nogenlunde rigtigt.
Jeg er meget villig til at give 60 til 100 point pr. GODE løsning ;-)
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.
Ja den tjekker alle POST varabler... Det det sker at den laver et kontrol-array med navne på dem der var tomme - og en variabel med antal der var tomme.
Du kan godt lave en name til submit-knappen. Denne sendes også til scriptet i action. Jeg plejer at have form og script i samme fil hvor jeg så har action=$_SERVER['PHP_SELF'] - har du ikke det? Bruger den anden fil?
Intel4004
Synes godt om
Slettet bruger
17. april 2003 - 08:53#6
Jo form og script er i en fil, derefter sendes den til en side magen til hvor man kan kontrollere sine indtastninger inden afsendelse.
Nu har jeg lagt dit script ind og den skriver at der er en parse error i linien efter sidste linie, hvis du forstår. Linien eksisterer ikke.
Forstår den at du skriver value="Videre >" siden > er et specielt tegn i html (og php)...??
Synes godt om
Slettet bruger
17. april 2003 - 09:12#17
intel4004 skrev: sorry - foreach mangler en sorry
Men hvor skal den afsluttende stå ?
Synes godt om
Slettet bruger
17. april 2003 - 09:14#18
Ja videre > virker fint nok, og det gjorde Næste > også, men da jeg trode det var den knap der skulle bruges til check, så rettede jeg det så der ingen dk bogstaver var i ;) Og så var det slet ikke det.
Nu har jeg fået den til at køre videre, men nu skriver den ingen fejl ved tomme felter, så den afsluttende } står nok forkert.
Hvor skal den være: if (isset($_POST['submitbutton'])) { $post_empty = 0; foreach ($_POST as $key => $value) { if ($_POST[$key] == "" || $_POST[$key] == NULL) { $post_emptykey[] = $key; $post_empty++; } for ($i = 0; $i < $post_empty; $i++) { echo 'Du skrev ikke noget i '.$post_emptykey[$i].'!<br>'; } } --->>> her har jeg sat den ;) }
Jeg er pludselig i tvivl om formen sender felterne via POST hvis de er tomme. Hvis ikke eksisterer de slet ikke i $_POST-arrayet :(
intel4004
Synes godt om
Slettet bruger
17. april 2003 - 09:23#26
Jeg har nu:
<form method="post" name="form2"
og
if (isset($_POST['form2'])) { $post_empty = 0; foreach ($_POST as $key => $value) { if ($_POST[$key] == "" || $_POST[$key] == NULL) { $post_emptykey[] = $key; $post_empty++; } } for ($i = 0; $i < $post_empty; $i++) { echo 'Du skrev ikke noget i '.$post_emptykey[$i].'!<br>'; }
}
Skulle det så ikke være OK ?
Synes godt om
Slettet bruger
17. april 2003 - 09:24#27
Ok, men hvis ikke den sender dem, er de jo tomme, eller ?
Synes godt om
Slettet bruger
17. april 2003 - 09:32#28
Hvis jeg skriver:
if (!isset($_POST['form2']))
får jeg:
Warning: Cannot add header information - headers already sent by (output started at /usr/local/apache/htdocs/biograf/bestil.php:60) in /usr/local/apache/htdocs/biograf/bestil.php on line 102
og linie 102 er:
header(sprintf("Location: %s", $insertGoTo));
Synes godt om
Slettet bruger
17. april 2003 - 09:34#29
og først udskriver den alle de tomme felter, så det virker. Nu skal det der header bare rettes, men jeg er nok ikke god nok til at hitte ud af det selv.
Synes godt om
Slettet bruger
17. april 2003 - 09:55#30
Hvis det hjælper noget kan hele koden til siden ses her:
Fejlen med header() er fordi der er skrevet noget tekst til browseren. Har du en header efter mit kodeeksempel eller får du en fejlmeddelelse inden header-fejlen? En fejl-meddelelse er jo også tekst sendt fra php-parseren - derfor kan der forekomme fejl ved header() senere i scriptet...
Synes godt om
Slettet bruger
17. april 2003 - 10:44#33
Det virker sådan nu, at er der et tomt felt så skriver den at man skal skrive i det felt og så kommer fejlen.
Jeg ved ikke hvormeget du er inde i dete, men jeg lagde en link til hele siden så I kan se hvad der sker. Det er lidt kompliseret at se i synes jeg. Siden er genereret maf Dreamweaver MX og jeg har så rettet til i den derefter.
Du skal bare flytte mit kode eksempel nedunder din header(), men før html'en... Der er en echo før din header() - det vil ikke fungere da du benytter en location: i headeren... Den kan ikke sende denne header-type hvis der allerede er skrevet noget til browseren...
Intel4004
Synes godt om
Slettet bruger
17. april 2003 - 11:14#35
Det har jeg prøvet og igen lige under location .... header linien, men så checker den ingenting og der kommer heller ingen fejl. Hmmm, det er da vist mere besværligt end jeg lige regnede med.
Synes godt om
Slettet bruger
17. april 2003 - 11:24#36
Nu har jeg prøvet at flytte noget rundt med dit eksempel, og lige så snart det er uden for denne rutine:
if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form2")) {
checker den ikke noget. Og inde i rutinen kommr header fejlen. Så det driller ;)
Synes godt om
Slettet bruger
17. april 2003 - 12:59#37
Nå. Jeg slog Warnings fra i php.ini og det løste så mit problem i denne omgang. Om det så starter nogle andre problemer vil tiden vise.
intel4004 > Du får de 60 point for besværet og idén.
Du har vel ikke lige en idé også til det email check jeg også skrev om ? Så kan jeg jo altid lave et spørgsmål med point, hvis det også løses.
if (preg_match("/^([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)$/i", $email)) { // email adresse er ok } else { // email adresse er ikke ok }
Synes godt om
Slettet bruger
18. april 2003 - 10:45#44
Det ser ud til at det også var det jeg gjorde, men det ville ikke samarbejde, men jeg fandt så den anden og den virker, så jeg er glad for den :-)
Men bortset fra det vil jeg da gerne give dig noget for din ulejlighed. Man skulle jo gerne kunne komme igen ;)
Synes godt om
Slettet bruger
18. april 2003 - 10:46#45
Nårh nej, det er jo lige et sæt paranteser for lidt.
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.