Gå til innhold

[Løst]Problemer med php script! (if empty)


Anbefalte innlegg

Hei. Jeg er ganske ny i php, og er vandt til å rette opp feil. Men denne feilen har jeg ikke funnet ut av ennå. Dette scriptet, (som ikke er ferdig) vil jeg at skal rope ut: "Du må fylle ut alle feltene," og det kun hvis alle feltene ikke er fylt ut. Men dette blir ropt ut, uansett hvilke inputser som er/ikke er utfylt.

 

Takker for svar fra de som kan hjelpe! :)

 

 

<html>

<body>

 

<?php

 

$username = $_POST["username"];

$password = $_POST["password"];

$password2 = $_POST["password2"];

$birthdate = $_POST["birthdate"];

$birthdate2 = $_POST["borthdate2"];

 

if (empty($username)) {

die("Du må fylle ut alle feltene!");

}

elseif(empty($password)) {

die("Du må fylle ut alle feltene!");

}

 

elseif(empty($password2)) {

die("Du må fylle ut alle feltene!");

}

 

elseif(empty($birthdate)) {

die("Du må fylle ut alle feltene!");

}

 

elseif(empty($birthdate2)) {

die("Du må fylle ut alle feltene!");

}

 

else {

echo "En feil har oppstått!";

}

 

?>

</body>

</html>

Endret av Jonas9300
Lenke til kommentar
Videoannonse
Annonse

Du har skrevet $birthdate2 = $_POST["borthdate2"];

Mulig det er dette som skaper problemer...

 

Eller du kan prøve den koden her, som gjør det litt enklere å redigere feilmeldingen hvis du skulle legge til flere felter etc.

 

<?php

$username = $_POST["username"];
$password = $_POST["password"];
$password2 = $_POST["password2"];
$birthdate = $_POST["birthdate"];
$birthdate2 = $_POST["birthdate2"];


if(!isset($username)) {
displayError();
}
if(!isset($password)) {
displayError();
}
if(!isset($password2)) {
displayError();
}
if(!isset($birthdate)) {
displayError();
}
if(!isset($birthdate2)) {
displayError();
}

function displayError() {
die("Du må fylle ut alle feltene");
}

?>

 

Lykke til videre :)

Lenke til kommentar

Hvorfor ikke gjøre det enklest, når man først er i gang med å gjøre det enklere?

 

<?php

if ( empty ( $_POST['username'] ) ||
	 empty ( $_POST['password'] ) ||
	 empty ( $_POST['password2'] ) ||
	 empty ( $_POST['birthday'] ) ||
	 empty ( $_POST['birthday2'] ) )
	die("Du må fylle ut alle feltene");

?>

Eller mer dynamisk, slik jeg personlig foretrekker det.

 

<?php

$fields = array (
	'username',
	'password',
	'password2',
	'birthday',
	'birtday2',
);

foreach ( $fields as $field )
	if ( !array_key_exists ( $field, $_POST ) || strlen ( ${$field} = $_POST[$field] ) == 0 )
		die("Du må fylle ut alle feltene");

?>

Endret av Jonas
Lenke til kommentar

Har prøvd ut din metode, Jonas. Jeg liker den også best, men var usikker på om man kunne sette sammen flere enn to og to variabler om gangen.

 

Skrivefeilen påvirker ikke denne feilen. Hjelper heller ikke å bruke "isset" fremfor "empty" :|

Endret av Jonas9300
Lenke til kommentar
Dette scriptet, (som ikke er ferdig) vil jeg at skal rope ut: "Du må fylle ut alle feltene," og det kun hvis alle feltene ikke er fylt ut.

Sånn her da:

*feil*

 

Hva mener du med det? :p

 

Hva jeg ber scriptet om å fortelle har ikke noe å si med resten av kodingen. Beskjeden den gir ut kan være omtrent hva som helst.

Endret av Jonas9300
Lenke til kommentar
<?php

if(count(array_filter($_POST)) == 0) {
	die("Du må fylle ut alle feltene");
}

?>

Ble feil den forrige posten

 

Hehe, ser fortsatt dårlig ut. Er det noe av det du skriver, som jeg må bytte ut? Eller skal jeg skrive inn koden din, uten endre på noe som helst?

Endret av Jonas9300
Lenke til kommentar

Prøver igjen

<?php

$fields = array (
'username',
'password',
'password2',
'birthday',
'birthday2',
);

$callback = function($field) { return ($_POST[$field] != ''); }

if(count(array_filter($fields, $callback)) == 0) {
die("Du må fylle ut alle feltene");
}

?>

Lenke til kommentar
Prøver igjen

<?php

$fields = array (
'username',
'password',
'password2',
'birthday',
'birthday2',
);

$callback = function($field) { return ($_POST[$field] != ''); }

if(count(array_filter($fields, $callback)) == 0) {
die("Du må fylle ut alle feltene");
}

?>

 

Funker fortsatt ikke :\

 

Er nok en eller annen enkel løsning! Men kan ikke forstå hva.

Lenke til kommentar
omg

<?php

if($username == '' && $password == '' && $password2 == '' && $birthday == '' && $birthday2 == '') {
 die("Du må fylle ut alle feltene");
}

?>

Hvis ikke det funker så gidder jeg ikke mer

 

Med den logikken trenger brukeren bare å fylle ut et av felta da ;) Bruk "Eller" sammenligner (|| hvertfall slik i C++).

Lenke til kommentar

Er jeg den eneste som ser at den kun skal printe ut feil hvis alle feltene er tomme?

og det kun hvis alle feltene ikke er fylt ut

 

Det siste forslaget til Epower skal funke sånn.

Det skal ikke være noen merkar forskjell mellom feks

$username == '' og empty($username)

 

Jeg ville brukt sist nevnte.

 

Funker ikke den så har du enten ikke lastet opp scriptet, eller så er det noe feil med servern.

 

Funker det, trykk på løst

Lenke til kommentar

Nope, du og Epower er bare de eneste som tolker det 100% bokstavelig. Sannsynligvis så har trådstarter bare formulert seg litt feil. Jeg mener, hvorfor i all verden skal man bare vise en feilmelding dersom ingen felter er fyllt ut? Makes no sense, så de fleste antar at det er snakk om dersom et eller flere ikke er fyllt ut.

Endret av Jonas
Lenke til kommentar

Med mindre trådstarter virkelig vil det (som virker lite sannsynlig når jeg tenker over det)

 

Uansett så skal koden til Epower funke fint

For å printe ut melding hvis 1 er feil så bytter man ut && med ||

Endret av AlecTBM
Lenke til kommentar

Forumuleringen er riktig? Man må fylle ut alle feltene for at det som skal bli en registrerings funksjon skal få all informasjonen jeg vil ha. Den enkleste koden som jeg var ute etter, har jeg funnet. Og det er ikke verre enn:

 

if (empty($username) || empty($password) || empty($confpassword) || empty($email) || empty($b_day) || empty($b_mounth) || empty($b_year))

die("Du må fylle ut alle felter!");

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...