wil een veld controle hebben op een script van een login. Wanneer mensen hun profiel wijzigen moeten ze iets verplicht invullen, maar elke keer als ik op wijzig klik krijg ik wel de meldign dat bijv. Naam niet ingevuld maar hij veranderd hem wel gewoon en wordt dan wel gewoon door gelikt naar het volgende schrem, en als ik bijv. geen email adres invul dan veranderd hij het weer NIET.
zou er iemand iets voor kunnen verzinnen, gebruik nu deze code, dit is zonder controle...
BEDANKT
<?php
include_once("config.php");
if ($_COOKIE['gebruikersnaam'] == "" AND $_COOKIE['loggedid'] == ""){
echo "$fout";
exit;
}
if($_POST[wijzig]){
$update = "UPDATE members SET naam='".$_POST['naam']."', achternaam='".$_POST['achternaam']."', adres='".$_POST['adres']."', postcode='".$_POST['postcode']."', woonplaats='".$_POST['woonplaats']."', geslacht='".$_POST['geslacht']."', land='".$_POST['land']."', email='".$_POST['email']."', gdatum='".$_POST['gdatum']."' WHERE gebruikersnaam='".$_COOKIE['gebruikersnaam']."'";
$query = mysql_query("$update") or die(mysql_error());
echo "Profiel is succesvol gewijzigt, een moment geduld...";
echo "<META HTTP-EQUIV='refresh' CONTENT='2; URL=?page=fans/profiel&id=".$_COOKIE['gebruikersnaam']."'>";
}
else {
$select = "SELECT * FROM members WHERE gebruikersnaam='".$_COOKIE['gebruikersnaam']."'";
$query = mysql_query($select);
$list = mysql_fetch_object($query);
echo "<table width=100%><form method=post action=?page=fans/wijzigen>
<TD><b>Gebruikersnaam:<TD>$list->gebruikersnaam<TR>
<TD><b>Status:<TD>$list->status<TR>
<TD><b>Email:<TD><input type=text name=email value='".$list->email."'> *<TR>
<TD><b>Voornaam:<TD><input type=text name=naam value='".$list->naam."'> *<TR>
<TD><b>Achternaam:<TD><input type=text name=achternaam value='".$list->achternaam."'> **<TR>
<TD><b>Geslacht:<TD><select name=geslacht><option value=Man>Man
<option value=Vrouw>Vrouw<option value=Stel>Stel<TR>
<TD><b>Adres:<TD><input type=text name=adres value='".$list->adres."'> **<TR>
<TD><b>Postcode:<TD><input type=text name=postcode value='".$list->postcode."'> **<TR>
<TD><b>Woonplaats:<TD><input type=text name=woonplaats value='".$list->woonplaats."'> *<TR>
<TD><b>Land:<TD><select name=land><option value=Nederland>Nederland
<option value=België>België<TR>
<TD><b>Geboorte Datum:<TD><input type=text name=gdatum value='".$list->gdatum."'><TR><TD><TD>
<input type=submit name=wijzig value=Wijzig></form></table>";
echo '<br>';
echo '* verplicht.';
echo '<br>';
echo '** verplicht maar maar wordt <b>niet</b> openbaar gemaakt voor leden.';
}
ob_end_flush();
?>
Maar ik heb geprobeerd deze in die andere ze zetten, maar ik krijg wel de melding van Geen voornaam ingevuld maar hij wordt alsnog door gelinkt en de naam is gewoon veranderd en een ongeldige email linkt hij hem niet door...
en volgens mij hebben $_POST[] velden de volgende opmaak: $_POST['jouwding']
En probeer je php en html gescheiden te houden. Makkelijker debuggen. En ik zie geen ob_start staan maar wel ob_end_flush(); dat snap ik ook niet. Gebruik deze functie btw zo weinig mogelijk
Klopt, zo heb jij het in je script gezet. Je controleert of een variabele is ingevuld, zo niet dan geef je een foutmelding. Nadat je klaar bent met de controles en dit dus helemaal hebt afgesloten, ga je de query uitvoeren. Maar dat wil je dus helemaal niet omdat niet alle gegevens correct zijn ingevoerd!
Kortom, de logica van jouw script is niet goed. Kijk eens naar dit voorbeeldje:
<?php
if(!$var1){
$error_message[] = 'x is niet ingevuld'; // array met foutmeldingen
}
if(!$var2){
$error_message[] = 'y is niet ingevuld'; // array met foutmeldingen
}
if(count($error_message) == 0){ // geen foutmeldingen
// uitvoeren en controleren van de query
}
else {
echo '<ul>';
foreach($error_message as $message){ // toon alle foutmeldingen
echo '<li>'.$message.'</li>';
}
echo '</ul>';
}
?>
Edit: typo