Hallo,

Ik heb een probleempje, ik heb een script, dat controleerd op alle gegevens zijn ingevuld, is dat niet zo, dan stopt die het script en geeft die een melding.

if (!$user) {
echo "<h2>Fout</h2>U heeft geen user ingevuld.
</P><a href=index.php?pagina=register> Opnieuw registreren</a>";
exit;}

Nu heb ik het probleem dat dit allemaal perfect werkt, maar als ik het intergreer in de website, dan stopt die het script bij exit() maar dan laat die dus ook de opmaak eronder weg. (De balk die onderaan zit).

Iemand die hier een idee voor heeft?
Probeer het zo te doen (zonder exit):
<?php
if(!$user) //controlepunt
{
//foutmelding
}
elseif(!$email) //controlepunt
{
//foutmelding
}
else //als alles goed gaat
{
//query uitvoeren
}
?>
Dit had ik al geprobeerd, en werkt ook wel.
Alleen dan heb je het probleem dat die de foutmelding geeft, en ook meteen het formulier om een nieuwe user aan te maken eronder opent.

Tevens heb je nou het probleem dat die een leeg record in de database zet, omdat die een foutmelding geeft dat je het niet hebt ingevuld, maar wel verder gaat met het script, en het gewoon in de database zet.
Er staat bij Terence duidelijk

else //als alles goed gaat
{
//query uitvoeren
}

    <?php
    include("db_connect.php");
    if (!empty($_POST)){
       $user = $_POST["user"];
       $wachtwoord = $_POST["wachtwoord"];
       $email = $_POST["email"];
       if (!$user) {
       echo "<h2>Fout</h2>U heeft geen username ingevuld.
       </P><a href=index.php?pagina=register> Opnieuw registreren</a>";
       }
       elseif (!$email) {
       echo "<h2>Fout</h2>U heeft geen email ingevuld. </P>
       <a href=index.php?pagina=register> Opnieuw registreren</a>\n";
       }
       elseif (!$wachtwoord) {
       echo "<h2>Fout</h2>U heeft geen wachtwoord ingevuld. </P>
       <a href=index.php?pagina=register> Opnieuw registreren</a>\n";
       ;}
       $query = "SELECT * from users WHERE user='$user';";
       $result = mysql_query($query) or die ("FOUT: " . mysql_error());
       if (mysql_num_rows($result) > 0) {
          //user al aanwezig in database, foutmelding tonen
          $tekst = "<h2>Fout</h2>Deze user (<b>$user</b>) bestaat al.\n <br>
          <a href=index.php?pagina=register> Opnieuw registreren</a>\n";
          die($tekst);
       }else{
             //OK, Query opbouwen
             $query="INSERT INTO users (user, wachtwoord, email)";
             $query .="VALUES ('$user' , '$wachtwoord' , '$email');";
             $result =  mysql_query($query) or die ("FOUT: "
             . mysql_error());
             $tekst = "<h2>Bedankt voor de aanmelding</h2> <b>$user</B> kan zich nu aanmelden op de
             LAB Database.";
             die ($tekst);
       }
    }
?>

  <h2>Registreren</h2>
  Hier kunt u een nieuwe user aanmaken die in de LAB Database toegang heeft. Vul aub alle velden in.
  <form name="registreren" method="post" action="index.php?pagina=register">
  Username: (Maximaal 25 tekens) <BR> <input name="user" type="text" size="30" maxlength="25"><br>
  E-mailadres: (Maximaal 40 tekens) <BR> <input name="email" type="text" size="30" maxlength="40"><BR>
  Wachtwoord: (Maximaal 15 tekens) <BR> <input name="wachtwoord" type="password" size="15" maxlength="15"><BR>
  </P>
  <input type="submit" name="submit" value="Registreren" class="loginput">
  <input name="reset" type="reset" value="Leegmaken" class="loginput">
  </form>


Dit is wat ik nu heb, en dan geeft die bv. wel een fout dat ik geen username heb ingevuld, maar daarna schrijft die het wel gewoon weg..
En waar het om begon, bij die melding laat die nog steeds de onderkant van me pagina weg.
Hij moet het formulier dus weergeven als alles goed is? of moet hij het juist niet weergeven als het formulier is ingevuld?
Je gaat naar index.php?pagina=registreren (dus registreren.php). Dan krijg je een formulier te zien, je vult hier gegevens in, klikt op versturen.

Nu gaat het php stuk kijken:
-of alles is ingevuld
-of de user al bestaat in de database

Klopt alles, dan schrijft die het weg in de database. (Dit werkt nog perfect)

Klopt het niet, dan geeft die een echo met dat ze het opnieuw moeten proberen. En dan krijg je een link naar de pagina om te registreren (dus dit zie je nog niet meteen). Dit doet het ook nog, nu is alleen het probleem dat die exit(). Dus de pagina stopt, en het onderste deel van de pagina word niet geladen, dus ziet het er niet mooi uit.

Dit heb ik nu:


<?php include("inc_logged_in.php")?>
<HTML>
<HEAD>
 <TITLE>Registreren</TITLE>
</HEAD>
<BODY>
    <?php
    include("db_connect.php");
    if (!empty($_POST)){
       //variabelen maken
       $user = $_POST["user"];
       $wachtwoord = $_POST["wachtwoord"];
       $email = $_POST["email"];
       //controleren of alles is ingevuld
       if (!$user) {
       echo "<h2>Fout</h2>U heeft geen username ingevuld.
       </P><a href=index.php?pagina=register> Opnieuw registreren</a>";
       exit;}
       if (!$email) {
       echo "<h2>Fout</h2>U heeft geen email ingevuld. </P>
       <a href=index.php?pagina=register> Opnieuw registreren</a>\n";
       exit;}
       if (!$wachtwoord) {
       echo "<h2>Fout</h2>U heeft geen wachtwoord ingevuld. </P>
       <a href=index.php?pagina=register> Opnieuw registreren</a>\n";
       exit;}
       //controleren of de user al bestaat
       $query = "SELECT * from users WHERE user='$user';";
       $result = mysql_query($query) or die ("FOUT: " . mysql_error());
       if (mysql_num_rows($result) > 0) {
          //user al aanwezig in database, foutmelding tonen
          $tekst = "<h2>Fout</h2>Deze user (<b>$user</b>) bestaat al.\n <br>
          <a href=index.php?pagina=register> Opnieuw registreren</a>\n";
          die($tekst);
       }else{
             //OK, Query opbouwen
             $query="INSERT INTO users (user, wachtwoord, email)";
             $query .="VALUES ('$user' , '$wachtwoord' , '$email');";
             $result =  mysql_query($query) or die ("FOUT: "
             . mysql_error());
             $tekst = "<h2>Bedankt voor de aanmelding</h2> <b>$user</B> kan zich nu aanmelden op de
             LAB Database.";
             die ($tekst);
       }
    }
  ?>

  <h2>Registreren</h2>
  Hier kunt u een nieuwe user aanmaken die in de LAB Database toegang heeft. Vul aub alle velden in.
  <form name="registreren" method="post" action="index.php?pagina=register">
  Username: (Maximaal 25 tekens) <BR> <input name="user" type="text" size="30" maxlength="25"><br>
  E-mailadres: (Maximaal 40 tekens) <BR> <input name="email" type="text" size="30" maxlength="40"><BR>
  Wachtwoord: (Maximaal 15 tekens) <BR> <input name="wachtwoord" type="password" size="15" maxlength="15"><BR>
  </P>
  <input type="submit" name="submit" value="Registreren" class="loginput">
  <input name="reset" type="reset" value="Leegmaken" class="loginput">
  </form>
</BODY>
</HTML>


Ik zit eraan te denken om dit met javascript op te gaan lossen, hier heb ik alleen geen ervaring mee.
<?php


if(!isset($_GET['action']){

echo 'form';

}

if(isset($_GET['action']) AND $_GET['action'] == "send"){

echo 'controleren op velden';
}

if(empty($_POST['veld']){

echo '<a href="form.php'>er is iets niet goed ingevuld, klik hier om terug te gaan</a>
}
?>


Zoiets?

btw je moet exit() eignelijk niet voor zoiets gebruiken. Exit is handig als je bijv. op een inlogpagina fout inlogt oid.

Jurgen schreef op 25.01.2007 10:18
<?php


if(!isset($_GET['action']){

echo 'form';

}

if(isset($_GET['action']) AND $_GET['action'] == "send"){

echo 'controleren op velden';
}

if(empty($_POST['veld']){

echo '<a href="form.php'>er is iets niet goed ingevuld, klik hier om terug te gaan</a>
}
?>


Zoiets?

btw je moet exit() eignelijk niet voor zoiets gebruiken. Exit is handig als je bijv. op een inlogpagina fout inlogt oid.



Wat bedoel je met 'ACTION'?
Je kan ook een lege class maken die als destructor je footer include ;)
Dus altijd als je pagina stopt wordt nog ff snel je footer geinclude. Zonder dat je er iets voor hoeft te doen...

<?php

class Footer
{
  function __destruct()
  {
    // require_ONCE of include_ONCE omdat als ie al een keer geinclude is hoeft ie niet he...
    require_once("footer.php");
  }
}

?>


En dan in elke pagina bovenaan (of in je config pagina ofzo):

<?php

new Footer;

?>
Djimmy schreef op 25.01.2007 10:54
[quote='Jurgen schreef op 25.01.2007 10:18']<?php


if(!isset($_GET['action']){

echo 'form';

}

if(isset($_GET['action']) AND $_GET['action'] == "send"){

echo 'controleren op velden';
}

if(empty($_POST['veld']){

echo '<a href="form.php'>er is iets niet goed ingevuld, klik hier om terug te gaan</a>
}
?>


Zoiets?

btw je moet exit() eignelijk niet voor zoiets gebruiken. Exit is handig als je bijv. op een inlogpagina fout inlogt oid.



Wat bedoel je met 'ACTION'?[/quote]

action is het variabel dat in de adresbalk komt: register.php?action=send

Reageren