25. februar 2005 - 19:52Der er
19 kommentarer og 1 løsning
Problemer med validering af form
Hej folkens.
Jeg er ved at lave et community, og er igang med noget profil oprettelse. Men jeg løber desværre inde i nogle problemer, når jeg når til validering af formen.
Jeg får denne fejl: Parse error: parse error, unexpected T_LOGICAL_OR in /var/www/hotels/.dk/webweaver/html/community/opretbruger.php on line 95
$query = mysql_query("SELECT 1 FROM `Profil` WHERE `brugernavn` LIKE '{$_POST[brugernavn]}'", $db);
if (mysql_num_rows($query) != 0) or die(mysql_error()); { echo "<ul><li><p class=\"profilopret_error\">Brugernavnet <i>", $_POST[brugernavn],"</i> er allerede i brug.</p></li></ul>";
} elseif ($kodeord_kryp != $kodeord2_kryp) or die(mysql_error()); { echo "<ul><li><p class=\"profilopret_error\">De to kodeord er ikke ens.</p></li></ul>";
$showform = true;
} else { mysql_query("INSERT INTO Profil (brugernavn, kodeord, kodeord2, fornavn, efternavn, nickname, birthday, email, mobil, msn, icq, city, adresse, adresse2, telefon, postnr, gender, land, dato, ip) VALUES ('$_POST[brugernavn]','$kodeord_kryp','$kodeord2_kryp','$_POST[fo rnavn]','$_POST[efternavn]','$_POST[nickname]','$birthday','$_POS T[email]','$_POST[mobil]','$_POST[msn]','$_POST[icq]','$_POST[cit y]','$_POST[adresse]','$_POST[adresse2]','$_POST[telefon]','$_POS T[postnr]','$_POST[gender]','$_POST[land]',NOW(),'$ip')") or die(mysql_error()); echo "<p class=\"text-style\" align=\"center\"><br><br>Du er nu oprettet i systemet...</p>";
$showform = false; } } if ($showform) {
...
Linie 95 ser sådan her ud: if (mysql_num_rows($query) != 0) or die(mysql_error()); {
Det skyldes dog ikke den linie der, men den elseif der ligger nedenunder. Hvis jeg nemlig fjerner den så virker det. Så jeg tror det er noget med placering af if sætningerne inden i hinanden jeg er galt med. Håber ihvertfald I kan hjælpe!?
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.
Ok det virkede at jeg fjernede det. Jeg skulle dog også fjerne "or die'en" nedenunder... Men der er stadig et problem, fordi det virker ikke. Den kommer ikke frem med nogen besked, hvis de 2 kodeord ikke er ens. Hvorfor ikke? Det er kun den som tjekker om brugernavnet er optaget som virker.
Det gør jeg heller ikke.. Jeg har fjernet den igen.. Men det virker ikke. Den melder ikke nogen fejl, men den registrerer ikke korrekt om kodeord 1 og kodeord2 er ens eller ej.
Jo det har jeg også prøvet, og det virker på en måde også, men så får man en anden større fejl. Og det er at at profilen bliver oprettet hvis de 2 kodeord er ens, også selvom brugernavnet er optaget. Det er jo kun meningen at profilen skal oprettes hvis alle felter er korrekte. Men det kan jeg ikke få den til. Hvordan skal if sætningerne placeres for at alting bliver nødt til at være korrekt før profilen bliver oprettet.?
Ok men så kan jeg bare ikke lige se hvordan jeg kan få 2 forskellige beskeder frem når de står i samme if sætning? Der skal jo komme en bestemt besked hvis brugernavnet er optaget, og en anden hvis kodeord ikke er ens...
Det er da ikke den samme if sætning, men 2 forskellige...
$query = mysql_query("SELECT * FROM Profil WHERE brugernavn = '$_POST[brugernavn]', $db); $antal = mysql_num_rows($query);
if ($antal != 0) { echo "<ul><li><p class=\"profilopret_error\">Brugernavnet <i>", $_POST[brugernavn],"</i> er allerede i brug.</p></li></ul>"; $showform = true; }
if ($kodeord_kryp != $kodeord2_kryp) { echo "<ul><li><p class=\"profilopret_error\">De to kodeord er ikke ens.</p></li></ul>"; $showform = true; }
if($kodeord_kryp != $kodeord2_kryp and $antal == 0) { mysql_query("INSERT INTO Profil (brugernavn, kodeord, kodeord2, fornavn, efternavn, nickname, birthday, email, mobil, msn, icq, city, adresse, adresse2, telefon, postnr, gender, land, dato, ip) VALUES ('$_POST[brugernavn]','$kodeord_kryp','$kodeord2_kryp','$_POST[fornavn]','$_POST[efternavn]','$_POST[nickname]','$birthday','$_POST[email]','$_POST[mobil]','$_POST[msn]','$_POST[icq]','$_POST[city]','$_POST[adresse]','$_POST[adresse2]','$_POST[telefon]','$_POST[postnr]','$_POST[gender]','$_POST[land]',NOW(),'$ip')") or die(mysql_error()); echo "<p class=\"text-style\" align=\"center\"><br><br>Du er nu oprettet i systemet...</p>";
if ($antal != 0) { echo "<ul><li><p class=\"profilopret_error\">Brugernavnet <i>", $_POST[brugernavn],"</i> er allerede i brug.</p></li></ul>"; $showform = true; }
elseif ($kodeord_kryp != $kodeord2_kryp) { echo "<ul><li><p class=\"profilopret_error\">De to kodeord er ikke ens.</p></li></ul>"; $showform = true; } else { mysql_query("INSERT INTO Profil (brugernavn, kodeord, kodeord2, fornavn, efternavn, nickname, birthday, email, mobil, msn, icq, city, adresse, adresse2, telefon, postnr, gender, land, dato, ip) VALUES ('$_POST[brugernavn]','$kodeord_kryp','$kodeord2_kryp','$_POST[fornavn]','$_POST[efternavn]', '$_POST[nickname]','$birthday','$_POST[email]','$_POST[mobil]','$_POST[msn]','$_POST[icq]' ,'$_POST[city]','$_POST[adresse]','$_POST[adresse2]','$_POST[telefon]','$_POST[postnr]', '$_POST[gender]','$_POST[land]',NOW(),'$ip') or die(mysql_error());
echo "<p class=\"text-style\" align=\"center\"><br><br>Du er nu oprettet i systemet...</p>"; $showform = false;
}
Du skal så bare bruge den $antal variabel til mysql_num_rows jeg skrev før..
Koden ser lidt rodet ud, har fundet ud af at det ik er dig men eksperten der roder ;-)
Hehe, jeg det er eksperten som desværre roder tingene lidt sammen. Hehe..
Har lige et spørgsmål, er der nogen forskelle ved at bruge koden bestående af if sætningerne og den kode med if, elseif og else? Det giver samme resultat ikke?
Ja ok hehe, jeg forstår dig godt. Men det var bare fordi jeg ikke kunne få det til at virke med en ordinær if sætning først, og så måtte jeg jo prøve noget andet.. :P
Mange tak :D Altid godt med ros! Og angående points, så var det så lidt! :P
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.