Foutmelding aanpassen account

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jorg Heesbeen

Jorg Heesbeen

15/03/2011 22:59:42
Quote Anchor link
Hallo,

Ik ben bezig een pagina te maken waarin members hun gegevens kunnen aanpassen, maar het wil niet lukken.
Ik krijg deze fout melding;

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 'WHERE user_id = '1'' at line 1

Dit is mijn account.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$sql
= "SELECT name, achternaam, email, username, background FROM users WHERE user_id = '".mysql_real_escape_string($_SESSION['user_id'])."' ";
$result = mysql_query($sql);
$rows = mysql_fetch_assoc($result);

if(isset($_SESSION['logged']) && $_SESSION['logged'] == 1)
{

if (!isset($_POST['submit'])) {
?>

<form action="account.php" method="post">
<table>
<tr>
<td><h1>Account</h1></td>
</tr>
<tr>
<td><p>Gebruikersnaam:</p></td> <td><p><b>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rows['username'] ?>
</b></p></td>
</tr>
<tr>
<td><p>Email:</p></td> <td><p><b>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rows['email'] ?>
</b></p></td>
</tr>
<tr>
<td><p>Naam:</p></td> <td><p><input type="text" name="name" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rows['name'] ?>
" /></p></td>
</tr>
<tr>
<td><p>Achternaam:</p></td> <td><p><input type="text" name="achternaam" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rows['achternaam'] ?>
" /></p></td>
</tr>
<tr>
<td><p>Wachtwoord:</p></td> <td><p><input type="password" name="password" /></p></td>
</tr>
<tr>
<td><p>Achtergrond:</p></td> <td><p><select name="wallpaper">
<option value="../css/background1.css">OS X Snow Leopard</option>
<option value="../css/background2.css">OS X Lion</option>
</select></p></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Pas aan"></td>
</tr>
</table>
</form>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
}
else
{
    $name = form($_POST['name']);
    $achternaam = form($_POST['achternaam']);
    $password = md5($_POST['password']); // Encrypts the password.
    $wallpaper = form($_POST['wallpaper']);
 
    if (($password == "") || ($name == "")) { // Checks for blanks.
        echo("<a>Niet alle velden zijn ingevuld!</a>");
    }

 
    mysql_query("UPDATE users SET name = '".$name."', achternaam = '".$achternaam."', WHERE user_id = '".mysql_real_escape_string($_SESSION['user_id'])."' ") or die (mysql_error());
    echo "<a>Het aanpassen is gelukt!</a>";

}}


    else
    {
        echo '<p>Je moet ingelogd zijn om deze pagina te bekijken.</p>';
    }

?>


Iemand een idee?
Alvast bedankt.

Toevoeging op 15/03/2011 23:02:40:

Laat maar,
ik heb het even grondig doorgekeken en de fout was een , (komma) bij SET name = '".$name."', achternaam = '".$achternaam."',
Die laatste komma mag daar niet staan.
 
PHP hulp

PHP hulp

28/03/2024 16:47:23
 
- SanThe -

- SanThe -

15/03/2011 23:18:27
Quote Anchor link
De komma voor WHERE moet weg.
 
Jorg Heesbeen

Jorg Heesbeen

15/03/2011 23:54:47
Quote Anchor link
Ik krijg nu weer dezelfde error,
dit is nu mijn script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
$sql
= "SELECT name, achternaam, email, username, background FROM users WHERE user_id = '".mysql_real_escape_string($_SESSION['user_id'])."' ";
$result = mysql_query($sql);
$rows = mysql_fetch_assoc($result);

if(isset($_SESSION['logged']) && $_SESSION['logged'] == 1)
{

if (!isset($_POST['submit'])) {
?>

<form action="account.php" method="post">
<h1>Account</h1><p>Velden met een * zijn verplicht</p>
<table>
<tr>
<td><p>Email:*</p></td> <td><p><input type="text" name="email"  value="<?php echo $rows['email'] ?>" /></p></td>
</tr>
<tr>
<td><p>Naam:*</p></td> <td><p><input type="text" name="name"  value="<?php echo $rows['name'] ?>" /></p></td>
</tr>
<tr>
<td><p>Achternaam:</p></td> <td><p><input type="text" name="achternaam"  value="<?php echo $rows['achternaam'] ?>" /></p></td>
</tr>
<tr>
<td><p>Wachtwoord:*</p></td> <td><p><input type="password" name="password" /></p></td> <td><p>Vul hier je actuele wachtwoord in, of een nieuw wachtwoord.</p></td>
</tr>
<tr>
<td><p>Achtergrond:</p></td> <td><p><select name="wallpaper">
<option value="../css/background2.css">OS X Lion</option>
<option value="../css/background1.css">OS X Snow Leopard</option>
</select></p></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Pas aan"></td>
</tr>
</table>
</form>
<?php
}
else
{
    $name = form($_POST['name']);
    $achternaam = form($_POST['achternaam']);
    $password = sha1($_POST['password']); // Encrypts the password.
    $wachtwoord = form($_POST['password']);
    $wallpaper = form($_POST['wallpaper']);
    $email = form($_POST['email']);
 
    if (($wachtwoord == "") || ($name == "") || ($email == "")) { // Checks for blanks.
        echo("<a>Niet alle velden zijn ingevuld!</a>");
    }

    $q = mysql_query("SELECT * FROM `users` WHERE email = '$email' WHERE user_id = '".mysql_real_escape_string($_SESSION['user_id'])."' ") or die (mysql_error());
    $r = mysql_num_rows($q);
    $b = mysql_query("SELECT * FROM `users` WHERE email = '$email'") or die (mysql_error());
    $c = mysql_num_rows($b);
 
    if ($r > 1) { // Als het email adres al door de gebruiker in gebruik is
        if ($c > 0) { // Als het email adres al in gebruik is
        echo '<p>Dit email adres is al in gebruik!</p>';
    }}
else {
    mysql_query("UPDATE users SET name = '".$name."', achternaam = '".$achternaam."', background = '".$wallpaper."', password = '".$password."', email = '".$email."' WHERE user_id = '".mysql_real_escape_string($_SESSION['user_id'])."' ") or die (mysql_error());
    echo "<a>Het aanpassen is gelukt!</a>";
    }
}}

    else
    {
        echo '<p>Je moet ingelogd zijn om deze pagina te bekijken.</p>';
    }

?>

Nu kom ik er even niet uit.
Gewijzigd op 16/03/2011 07:45:56 door Jorg Heesbeen
 
- SanThe -

- SanThe -

16/03/2011 00:09:42
Quote Anchor link
Er kan maar één keer WHERE in een gewone query staan.
 
Jorg Heesbeen

Jorg Heesbeen

16/03/2011 07:27:00
Quote Anchor link
Welke moet ik dan weghalen?
 
Vincent Huisman

Vincent Huisman

16/03/2011 07:30:31
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
SELECT
    a,
    b
FROM
    tabel
WHERE
    a = 'b'
AND
    b = 'a'
 
Jorg Heesbeen

Jorg Heesbeen

16/03/2011 07:36:37
Quote Anchor link
Bedankt,
alleen die snap ik niet helemaal?
 
Wouter J

Wouter J

16/03/2011 08:05:14
Quote Anchor link
Wat snap je dan niet? MySQL is gewoon een soort van engels schrijven en daarmee aangeven wat je moet doen. In het Nederlands is dit bijv:
SELECTEER voornaam, achternaam VAN tabel WANNEER voornaam = 'Jorg' EN achternaam = 'Heesbeen'

Maar dan is het in het engels:
SELECT voornaam, achternaam FROM tabel WHERE voornaam = 'Jorg' AND achternaam = 'Heesbeen'
 
Kris Peeters

Kris Peeters

16/03/2011 14:03:03
Quote Anchor link
Dat is trouwens het geval voor zowat elke script/programmeer -taal.

Goed Engels kennen, zorgt er voor dat je veel beter beseft waarmee je bezig bent.
 
Jorg Heesbeen

Jorg Heesbeen

16/03/2011 15:13:10
Quote Anchor link
Ik snap niet waar ik het script moet plaatsen die Vincent geeft.
 
- SanThe -

- SanThe -

16/03/2011 15:24:17
Quote Anchor link
Het gaat om deze regel.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$q
= mysql_query("SELECT * FROM `users` WHERE email = '$email' WHERE user_id = '".mysql_real_escape_string($_SESSION['user_id'])."' ") or die (mysql_error());
?>

Vervang hier de tweede WHERE door AND.
Gebruik geen backtics in een query.
 
Jordi Kroon

Jordi Kroon

16/03/2011 15:24:45
Quote Anchor link
en vars buiten de quote
 
Jorg Heesbeen

Jorg Heesbeen

16/03/2011 15:29:00
Quote Anchor link
Bedankt :D ,
Het werkt perfect!

Ow, er is nog 1 probleempje,
Hij controleert niet of het email adres al in gebruik is?
Gewijzigd op 16/03/2011 17:25:38 door Jorg Heesbeen
 
Kris Peeters

Kris Peeters

16/03/2011 15:54:06
Quote Anchor link
Jorg Heesbeen op 16/03/2011 15:29:00:
Ow, er is nog 1 probleempje,
Hij controleert niet of het email adres al in gebruik is?


Velden die uniek moeten zijn, zet je best als UNIQUE in de database (bij het creëren van de tabel).
Wat dan gebeurt, is dat de insert niet zal gebeuren.
 
Wouter J

Wouter J

16/03/2011 16:14:07
Quote Anchor link
Jorg Heesbeen op 16/03/2011 15:29:00::
En dan nog een vraag,
Waarmee stel ik in dat bij het registreren het email adres automatisch in kleine letters in de database komt?

Gebruik de php functie strtolower dit is trouwens niet handig, omdat sommige email adressen met hoofdletters moeten.

Verder raad ik je aan de PHP beginnershandleiding en de SQL beginnershandleiding goed te lezen.

Daarnaast moet je geen or die gebruiken, maar een goede foutafhandelings methode.
 
Jorg Heesbeen

Jorg Heesbeen

16/03/2011 22:20:54
Quote Anchor link
Wie kan mij nog helpen om een controle te maken of het email adres al in gebruik is?
 
Kris Peeters

Kris Peeters

17/03/2011 11:14:44
Quote Anchor link
Jorg Heesbeen op 16/03/2011 22:20:54:
Wie kan mij nog helpen om een controle te maken of het email adres al in gebruik is?


Bij het inserten van een nieuwe gebruiker?
Ik zie in je code nergens iets van INSERT.

Hoe doe je dat?
Dan kunnen we daar eens zien wat we met die al-bestaande e-mail adressen kunnen doen.
 
Maikel  B

Maikel B

17/03/2011 11:17:51
Quote Anchor link
@Kris

Het gaat waarschijnlijk om de UPDATE query. Hij wil controleren dat als iemand zijn emailadres veranderd of die al niet door iemand anders in gebruik is
Gewijzigd op 17/03/2011 11:18:20 door Maikel B
 
Kris Peeters

Kris Peeters

17/03/2011 12:05:55
Quote Anchor link
Kris Peeters op 16/03/2011 15:54:06:
Jorg Heesbeen op 16/03/2011 15:29:00:
Ow, er is nog 1 probleempje,
Hij controleert niet of het email adres al in gebruik is?


Velden die uniek moeten zijn, zet je best als UNIQUE in de database (bij het creëren van de tabel).
Wat dan gebeurt, is dat de insert niet zal gebeuren.


...

Ook bij een update zal dat werken
 
Jorg Heesbeen

Jorg Heesbeen

17/03/2011 12:19:12
Quote Anchor link
Met die UNIQUE kan ik gebruiken. Maar dan wil ik ook een melding als het email adres al in gebruik is.
 
Kris Peeters

Kris Peeters

17/03/2011 12:28:30
Quote Anchor link
Wat je ook kan doen:
Net voor het updaten zoek je naar alle unieke velden en je vergelijkt met de gegevens die moeten worden geüpdatet.
iets zoals
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql
= "
SELECT
  id,
  (username = '"
. mysql_real_escape_string($_POST['username']) ."')  AS username_al_in_gebruik,
  (email    = '"
. mysql_real_escape_string($_POST['email']) ."')     AS email_al_in_gebruik
FROM gebruikers
WHERE id != "
. (int) $_POST['id']  ."
HAVING
  username_al_in_gebruik = 1 OR email_al_in_gebruik = 1
"
;
?>


Dan fetch je al die records.
Als je $row['email_al_in_gebruik'] tegen komt (die 1 is), kan je een boodschap mee geven; uiteraard sla je dan ook die update query over.

Dito voor de username
Gewijzigd op 17/03/2011 12:33:02 door Kris Peeters
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.