Gå til innhold

If ( isset ( $_POST[''] ) fungerer ikke


Anbefalte innlegg

Har en form.php hvor vi skal fylle ut info i en del felter, submit knappen sender dette til en reg.php som skriver innholdet til en mySql base.

 

jeg vil selvsagt ha en sjekk som sjekker at alle felter er fyllt ut

Jeg bruker denne løkken for å sjekke dette:

 

PHP
if ( isset ( $_POST['navn'] ) && isset ( $_POST['ip'] ) && isset ( $_POST['merke'] ) && isset ( $_POST['modell']) && isset ($_POST['lok'])) { 

 

bla bla bla

 

} else

echo "Du må fylle ut alle felt";

 

Poenget er at den utfører "bla bla bla" uansett om jeg fyller ut alle felt eller ikke.

Endret av rwd-drifter
Lenke til kommentar
Videoannonse
Annonse

variabelen blir satt selv om den har tom verdi. bruk strlen() i stedet:

 

PHP
<?php

 

if (strlen($_POST['navn']) && strlen($_POST['ip']) && strlen($_POST['merke']) && strlen($_POST['modell']) && strlen($_POST['lok'])) { 

 

bla bla bla

 

} else

echo "Du må fylle ut alle felt";

 

?>

Endret av ventle
Lenke til kommentar
Poenget er at den utfører "bla bla bla" uansett om jeg fyller ut alle felt eller ikke.

9493440[/snapback]

 

Hvis du har feltet på forms-siden din, vil ikke variabelen bli satt til å være blank da?

Jeg er ikke sikekr på dette, har ikkem ulighet til å sjekke nå, men legg til en

 

isset ( $_POST['finnesikkeiforms'] )

 

og se om den godtar det.

Lenke til kommentar

Har løst det slik:

 

PHP

if ( isset ( $_POST['navn'] ) && !empty($_POST['navn']) 

&& isset ( $_POST['ip'] ) && !empty($_POST['ip']) 

&& isset ( $_POST['merke'] ) && !empty($_POST['merke']) 

&& isset ( $_POST['modell']) && !empty($_POST['modell']) 

&& isset ($_POST['lok']) && !empty($_POST['lok'])) {

 

 

 

Men skulle gjerne fått scriptet til å si hvilket felt den stopper på, slik at brukern vet hva han har glemt å fylle ut i formen.

Endret av rwd-drifter
Lenke til kommentar

Da kan du lage en if for hver av feltene.

 

if( empty( $_POST['navn'] ) )
{
 $msg .= 'Feltet "Navn" er ikke fylt ut<br />';
 $error = TRUE;
}
if( empty( $_POST['merke' ) )
{
 $msg .= 'Feltet "Merke" er ikke fylt ut<br />';
 $error = TRUE;
}

if( $error === TRUE )
{
 echo $msg;
 /* 
  * Vis formen på nytt
  * Sett value='{$_POST['foo']}' for at tidligere 
  * verdier ikke skal forsvinne.
  */
}
else
{
 /* Do the processing */
}

Lenke til kommentar
Har løst det slik:

PHP

if ( isset ( $_POST['navn'] ) && !empty($_POST['navn']) 

&& isset ( $_POST['ip'] ) && !empty($_POST['ip']) 

&& isset ( $_POST['merke'] ) && !empty($_POST['merke']) 

&& isset ( $_POST['modell']) && !empty($_POST['modell']) 

&& isset ($_POST['lok']) && !empty($_POST['lok'])) {

9496572[/snapback]

Det er ikke vits i å bruke både isset() og !empty(). !empty() sjekker at den både er definert og at det er noe innhold i den (det kan ikke være noe innhold i den uten at den er definert).

 

For å luke ut hvilken som mangler kan du nøste dem sammen.

PHP
<?php

if (!empty($_POST['navn'])) {

if (!empty($_POST['ip'])) {

if (!empty($_POST['merke'])) {

// GJØR MASSE SKIT

} else {

echo "Du har ikke fylt ut merke";

}

 } else {

echo "Du har ikke fylt ut ip";

 }

} else {

echo "Du har ikke fylt ut navn";

}

?>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...