Door
reduan kurtaj
op 15-01-2014 15:26
gewijzigd op 15-01-2014 15:28
2.735 views
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);
// 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)';
}
Om een profiel van een bepaald personen te updaten gebruik je
<?php
$sql = "UPDATE users
SET voornaam=" . mysql_real_escape_string($_POST['voornaam']) . "
,achternaam=" . mysql_real_escape_string($_POST['achternaam']) . "
WHERE id=" . $_SESSION['id'] . "
LIMIT 1";
$res = mysql_query($sql);
if($res){ // als query goed gaat
if(mysql_affected_rows() > 0){ // als er velden zijn geupdate
echo 'Velden zijn geupdate';
} else {
echo 'Geen veranderingen. Niet geupdate';
}
} else {
echo 'Error ' . mysql_error();
}
?>
edit: set vergeten X_X
// 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!';
}
if($res){ // als query goed gaat
if(mysql_affected_rows() > 0){ // als er velden zijn geupdate
echo 'Velden zijn geupdate';
} else {
echo 'Geen veranderingen. Niet geupdate';
}
} else {
echo 'Error ' . mysql_error();
}
// 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)';
}
Dan lijkt me geen goed idee :) Uiteraard moet je wel kijken of het formulier wordt verzonden, voor je die update gaat doen. Nou zou die bij het openen van je pagina je profiel wissen (Updaten met lege velden omdat de POST variabelen leeg zijn)
Controleer met if($_SERVER['REQUEST_METHOD'] == 'POST') of je formulier wordt verzonden, en controleer daarna of de velden die wilt zijn ingevuld.
Geen form geselecteerd, ga terug naar de vorige pagina. <--- Die niet... moet ik if($_SERVER['REQUEST_METHOD'] == 'POST'){
} pas sluiten na het form?? of maak dat niet uit?
En dit zijn gewoon fouten die die geeft :(:(
Notice: Undefined index: voornaam in /mnt/webc/e2/15/53954115/htdocs/bezig.php on line 44
Notice: Undefined index: achternaam in /mnt/webc/e2/15/53954115/htdocs/bezig.php on line 45
Error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' achternaam= WHERE id=9 LIMIT 1' at line 3
<?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);
// 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.';
}
Ik ben trouwens quotes vergeten :)
Maar de hele update moet natuurlijk in die controle, anders wordt het nog steeds geupdate zonder dat het formulier gepost is.
Die notices krijg je omdat die variabelen (voornaam, achternaam) leeg zijn. Daarom moet je ze ook eerst checken
<?php
// Controle of het formulier gepost is.
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($_POST['voornaam'],$_POST['achternaam'])){ // controle of je velden bestaan (weten we nog niet of ze gevuld zijn)
if($res){ // als query goed gaat
if(mysql_affected_rows() > 0){ // als er velden zijn geupdate
echo 'Velden zijn geupdate';
} else {
echo 'Geen veranderingen. Niet geupdate';
}
} else {
echo 'Error ' . mysql_error();
}
}
} else {
echo 'Geen form geselecteerd, ga terug naar de vorige pagina.';
}
?>
Controle op je velden is aan jezelf.
Heel erg bedankt.. hij doet het bijna X.X
Controle op velden doe ik zo:
<?php
/*Check of geen enkele variabelen leeg is, is er wel een leeg, Dan krijg je een foutmelding.*/
if (empty($voornaam) || empty($achternaam) || empty($woonplaats) || empty($email)) {
header ('refresh: 2; url=edit_profiel.php.php');
} else {
echo ('Een of meerdere velden zijn niet ingevuld!');
}
?>
en nog steeds krijg ik dit te zien... Geen form geselecteerd, ga terug naar de vorige pagina.
[quote="Michael - op 15/01/2014 16:22:47"]
Controle op je velden is aan jezelf.
Heel erg bedankt.. hij doet het bijna X.X
Controle op velden doe ik zo:
<?php
/*Check of geen enkele variabelen leeg is, is er wel een leeg, Dan krijg je een foutmelding.*/
if (empty($voornaam) || empty($achternaam) || empty($woonplaats) || empty($email)) {
header ('refresh: 2; url=edit_profiel.php.php');
} else {
echo ('Een of meerdere velden zijn niet ingevuld!');
}
?>
en nog steeds krijg ik dit te zien... Geen form geselecteerd, ga terug naar de vorige pagina.
Live voorbeeld: Http://www.mmgnews.nl
login met user: phphulp ww: phphulp
Daarna het kopje: Wijzig profiel Http://www.mmgnews.nl/edit_profiel.php
[/quote]
'Geen form...' Krijg je zolang er geen request is gedaan, dus hij doet precies wat je wil. Die else kan wat dat betreft ook weg.
Je manier van controleren is vreemd. $voornaam is niet het zelfde als $_POST['voornaam']
Waarom een refresh als 1 variabele niet is ingevuld (... OF ... OF ..) en een melding 'niet ingevuld' als ze juist wel zijn ingevuld.
// 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'])) {
} else {
header ('refresh: 1; url=index.php');
echo 'Niet ingelogd!';
}
// Controle of het formulier gepost is.
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// controle of je velden bestaan (weten we nog niet of ze gevuld zijn)
if(isset($_POST['voornaam'],$_POST['achternaam'],$_POST['woonplaats'],$_POST['email'])){
/*Check of geen enkele variabelen leeg is, is er wel een leeg, Dan krijg je een foutmelding.*/
if (empty($voornaam) || empty($achternaam) || empty($woonplaats) || empty($email)) {
header ('refresh: 2; url=edit_profiel.php.php');
} else {
echo ('Een of meerdere velden zijn niet ingevuld!');
}
// als query goed gaat
if($res){
if(mysql_affected_rows() > 0){ // als er velden zijn geupdate
echo 'Velden zijn geupdate';
} else {
echo 'Geen veranderingen. Niet geupdate';
}
} else {
echo 'Error ' . mysql_error();
}
}
} else {
echo 'Geen form geselecteerd, ga terug naar de vorige pagina.';
}
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 header en als ze wel ingevuld zijn stuur je een echo dat ze niet zijn ingevuld.
Bij de isset op regel 38 open je de if 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 :))
<?
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($voornaam) || empty($achternaam) || empty($woonplaats) || empty($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!');
}
else {
$sql = "UPDATE
users
SET
voornaam = '" . mysql_real_escape_string($_POST['voornaam']) . "',
achternaam = '" . mysql_real_escape_string($_POST['achternaam']) . "'
WHERE
id = " . $_SESSION['id'] . "
LIMIT 1
";
$res = mysql_query($sql);
if($res){ // als query goed gaat
if(mysql_affected_rows() > 0){ // als er velden zijn geupdate
echo 'Velden zijn geupdate';
}
else {
echo 'Geen veranderingen. Niet geupdate';
}
}
else {
echo 'Error ' . mysql_error();
}
}
}
else {
echo 'Er is geen form geselecteerd, ga terug naar de vorige pagina.';
}
}
else {
echo
'<form method="post" action="edit_profiel.php">