Omschrijf je probleem in detail
Ik heb een website, waar mensen kunnen registreren en inloggen, ook hebben deze gebruikers toegang tot een profiel pagina waar hun gegevens staan weergegeven tijdens hun regestratie...

Wat ik nu dus er nog graag bij wil hebben is dat ze hun gegevens kunnen veranderen
'edit_profiel.php' 'profiel.php?edit' oid. Ik heb al een aantal tips gehad maar ik kom er maar niet uit!! :(:(


Wat heb je geprobeerd om je probleem op te lossen?
Op google gezocht naar formulier verwerking.
Zoeken naar een vergelijkbaar script. [niet gevonden]
Van zelf aantal dingen geprobeerd [zometeen te zien in de [.code.] [./code.] tags]


Wat is nou precies je vraag?
Is er iemand die miss een soort van tut hiervan heeft??
Zou iemand mij kunnen begeleiden door middel van Tips en commentaar.
Iemand een kleine opzet heeft zodat ik weet wat er gedaan moet worden.


Bij voorbaat dank en met vriendelijke groet,

Reduan Kurtaj



<?php
// Start de sessie.
session_start();


// Maakt verbinding met de database.
include('conn.php');

// Errors weergeven.
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);

// SQL debug.
define('DEBUG_MODE',true); // true == aan, false == uit

// Functie voor SQL debug.
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}

// Controle of de gebruiker wel is ingelogd
if (isset($_SESSION['username'])) {
echo 'Welcome: '.$_SESSION['username'];
} else {
header ('refresh: 1; url=index.php');
echo 'Niet ingelogd!';
}

// Controle of het formulier gepost is.
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
} else {
echo 'Geen form geselecteerd, ga terug naar de vorige pagina.';

// Controle of de array wel bestaat.
if(isset($_GET['id'], $_POST['gebruiker'], $_POST['voornaam'], $_POST['achternaam'], $_POST['email'], $POST['woonplaats']))

//Controle of geen enkele variabelen leeg is.
if (empty($voornaam) || empty($achternaam) || empty($email) || empty($woonplaats)) {
echo 'U heeft succesvol alles ingevuld, en Uw profiel is geupdate!';
} else {
header ('refresh: 3; url=edit_profiel.php');
echo 'Een of meerdere velden zijn niet ingevuld.';
}

// Haal gegevens op uit de database, en plaatst ze in $rij
$query ="SELECT * FROM users WHERE id= ".$_session['id']."";
$sql = mysql_query($query);
echo (showSQLError($sql, mysql_error()));

// als het query resultaat hoger als 0 is bestaat de user, anders niet.
if(mysql_num_rows($sql) > 0){
$rij = mysql_fetch_array($sql);
} else {
echo 'Deze gebruiker bestaat helaas niet (meer)';
}

echo
'<form method="post" action="bezig.php">

<p>
Voornaam:<br>
<input type="text" name="voornaam" maxlength="50" value='.$rij['voornaam'].'>
</p>
<p>
Achternaam:<br>
<input type="text" name="achternaam" maxlength="50" value='.$rij['achternaam'].'>
</p>
<p>
Woonplaats:<br>
<input type="text" name="woonplaats" maxlength="50" value='.$rij['woonplaats'].'>
</p>
<p>
Email:<br>
<input type="text" name="email" maxlength="50" value='.$rij['email'].'>
</p>
<input type="submit" class="submit" name="action" value="Update Profiel">
</p>
</form>';
}
?>
D B op 15/01/2014 18:46:56

Bij regel 38 open je een isset, daarna ga je op regel 40 controleren of ze ingevuld zijn. Als ze niet ingevuld zijn stuur je een helder en als ze wel ingevuld zijn stuur je een echo dat ze niet zij ingevuld.

Bij de isset op regel 38 open je de in en die sluit pas ergens onderaan, daar zit het een en ander niet goed.

Als ik bij regel 38 begin zou ik het zo doen:
(ben zelf ook nog maar een beginner maar ga je proberen te helpen :))



Ik ga het even testen of die nu wel werkt (a)

[size=xsmall]Toevoeging op 15/01/2014 19:03:37:[/size]

Voor de else op regel 35 in joun script was je een } vergeten..
nu is de 'Er is geen form geselecteerd, ga terug naar de vorige pagina.' wel weg gelukkig maar als ik nu op update klik krijg ik de fout: Een of meerdere velden zijn niet ingevuld! wat dus niet het geval is.
Deze had ik inderdaad vrijwel meteen nog geupdate :)

<?
if(isset($_POST['voornaam'],$_POST['achternaam'],$_POST['woonplaats'],$_POST['email'])){ // controle of je velden bestaan (weten we nog niet of ze gevuld zijn)
if (empty($voornaam) || empty($achternaam) || empty($woonplaats) || empty($email)) {
?>

Bij empty moet hij natuurlijk naar de $_POST['voornaam'] kijken en niet naar $voornaam, zo ook voor de rest
ik heb hem nu zo staan maar nog steeds niet goed X.X

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Controle of het formulier gepost is.
if(isset($_POST['voornaam'],$_POST['achternaam'],$_POST['woonplaats'],$_POST['email'])){ // controle of je velden bestaan (weten we nog niet of ze gevuld zijn)
if (empty($_POST['$voornaam']) || empty($_POST['$achternaam']) || empty($_POST['$woonplaats']) || empty($_POST['$email'])) { /*Check of geen enkele variabelen leeg is, is er wel een leeg, Dan krijg je een foutmelding.*/
echo ('Een of meerdere velden zijn niet ingevuld!');
}

?>
$_POST['voornaam'] <<< let op geen $ voor voornaam
D B op 15/01/2014 19:15:07

$_POST['voornaam'] <<< let op geen $ voor voornaam


Pffff had ik moeten weten jha :$
maar hij doet het nu eindelijk (A)(A)(A)


SUPPPEEEEEEER BEDANKT!!!
Geen dank!

Ps. Je hebt 1 nadeel: Omdat je values aan je input velden meegeeft, zullen ze bijna nooit empty zijn. Dus misschien moet je na empty ook nog controleren op de standaard values :)
ik heb al gekeken,,
als mijn naam in de Database voornaam is, en ik wil hem updaten naar voornaam krijg ik de fout: Er is helaas iets fout gegaan, Uw profiel is niet geupdate


maar wat ik nu wil gaan proberen is om de gegevens uit de database in die values te plaatsen, dat je alleen je 'email' hoeft aan te passen als dat het enige is wat aangepast moest worden .

[size=xsmall]Toevoeging op 15/01/2014 21:27:10:[/size]

Reduan kurtaj op 15/01/2014 19:27:17

maar wat ik nu wil gaan proberen is om de gegevens uit de database in die values te plaatsen, dat je alleen je 'email' hoeft aan te passen als dat het enige is wat aangepast moest worden .


Iemand die hier een oplossing voor heeft??
ik heb het al geprobeerd met session maar dat werkte niet :(

of moet ik het eerst ophalen uit de database en dan in een array zetten??
Je moet het dan eerst met een select uit de database halen en dan zet je bij je input value = row['voornaam']

Zoiets
Gewoon een select en dat in die value zetten.

<?php
$sql = "SELECT voornaam, achternaam FROM users WHERE id = " . (int)$_SESSION['id'];
$res = mysql_query($sql);

if($res){
if(mysql_num_rows($res) > 0){
$row = mysql_fetch_assoc($res);

echo '<input name="voornaam" value="' . $row['voornaam'] . '"/>'
.'<input name="achternaam" value="' . $row['achternaam'] . '"/>';
} else {
echo 'User niet gevonden';
}
} else {
echo 'Error ' . mysql_error();
}
?>
edit: typo

Jou was trouwens al verteld dat Mysql functies 'deprecated' zijn toch? Nou steek je er heel veel tijd in, maar straks vervallen de Mysql functies en kun je alles weer aanpassen naar Mysqli.

[size=xsmall]Toevoeging op 16/01/2014 09:06:27:[/size]

Krijgt D B nou alle eer? :P

Trouwens die controle zou ik ook niet zo doen. De isset is voor de notices dat je zeker weet dat deze geset zijn (zegt verder niks over de inhoud) en empty() zegt eigenlijk ook niet veel. Een spatie is geen empty meer. Als ik als e-mailadres een spatie invul is dit dus goed.
Daarbij kan je if regel van isset en van empty ook samen ipv 2 aparte if-structuren.

Voorbeeld van hoe ik de controle zou doen:
http://phphulp.turmin.com/inschrijf.phps (formulier die ik laatst voor iemand hier had gemaakt)
Daar zie je trouwens ook de values gevuld worden. Misschien heb je er wat aan.
Om te controleren of iets leeg is gebruik ik:

<?php
if(trim($var)=="") {
// leeg
}
?>

Reageren