login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Update query fout (Opgelost)

Offline arneman - 04/02/2009 05:25 (laatste wijziging 04/02/2009 05:45)
Avatar van arnemanNieuw lid
  1. if (!isset($error)) {
  2. $gebruiker = $_POST['gebr'];
  3. $paswoord = $_POST['pasw'];
  4. $code = $_POST['code'];
  5.  
  6. $sql = 'SELECT code FROM gebruikers WHERE gebruiker="'.$gebruiker.'" AND paswoord="'.$paswoord.'"';
  7. $resultaat = mysql_query($sql) or die (mysql_error());
  8.  
  9. while ($info = mysql_fetch_array($resultaat)) {
  10. $waarde = $info['code'];
  11. }
  12.  
  13. if ($waarde == $code) {
  14. $sql2 = 'UPDATE gebruikers SET activatie ="1" WHERE (gebruiker="'.$gebruiker.'" AND paswoord="'.$paswoord.'")';
  15. mysql_query($sql2) or die (mysql_error());
  16. echo "<p>Activatie is gelukt, je kan je nu inloggen</p>";
  17. } else {
  18. echo "<p>De combinatie gebruikersnaam, paswoord, activatiecode is onjuist!</p>";
  19. }
  20.  
  21. }


Klein probleempje met mijn PHP code, ik denk dat het niet zozeer aan de SQL hangt, maar dan wel aan de vergelijking.

Ik ben vrij nieuw in SQL, iemand tips?

Edit: Na aanpassing werkt het, maar iets zegt me dat het niet de ideale oplossing is. Graag had ik jullie reacties 

5 antwoorden

Gesponsorde links
Offline nick5556 - 04/02/2009 07:39
Avatar van nick5556 PHP beginner Er hoeven geen haakjes na WHERE (regel 14).

Zelf gebruik ik $_GET ipv post. Dan hoeft de gebruiker alleen maar de link aan te klikken, en het is goed .

Als je het met $_GET wilt doen, moet je eerst een string genereren(met nummertjes). En dan iemand een email sturen met een link als bv: www.jedomein.tdl/activeer.php?acticode=$random_string.

Dan als je die pagina heb, gebruik je deze code:

  1. if(isset($_GET['acticode']))
  2. if(is_numeric($_GET['acticode']))
  3. {
  4. $sql = "SELECT `code`, `activatie` FROM `gebruikers WHERE `activatie`=('0') and `code`=('".$_GET['acticode']."')";
  5. $res = mysql_result($sql);
  6. if(mysql_num_rows($res) > 0)
  7. {
  8. $sql2 = "UPDATE `gebruikers` SET `activatie`=('1') WHERE `code`=('".$_GET['acticode']."')";
  9. mysql_query($sql2);
  10. echo 'Account geactiveerd';
  11. }
  12. else
  13. {
  14. echo 'Geen resultaten gevonden, account niet geactiveerd.'; // Geen resultaten..
  15. }
  16. }
  17. else
  18. {
  19. echo 'Geen geldige waarde in $_GET'; // $_GET is niet geldig.
  20. }
  21. }
  22. else
  23. {
  24. header("Location: index.php"); // terugsturen naar homepage
  25. }


Volgensmij is hij zo compleet.
Offline arneman - 04/02/2009 14:35
Avatar van arneman Nieuw lid Heel erg bedankt voor je antwoord 
Offline ranco - 04/02/2009 16:34
Avatar van ranco PHP gevorderde Wil je dan aub op de opgelost knop drukken? 

Anders moeten de admins weer aan het werk  
Offline vinTage - 04/02/2009 16:36
Avatar van vinTage Nieuw lid Idd, reacties verwijderen zoals deze en de jouwe..

^^
Offline Wim - 04/02/2009 18:25
Avatar van Wim Crew algemeen $sql2 = 'UPDATE gebruikers SET activatie ="1" WHERE (gebruiker="'.$gebruiker.'" AND paswoord="'.$paswoord.'")';

Als je bij de where clausule bij zet "AND code=...." heb je een heel deel code minder nodig... Via PHP.net: mysql_affected_rows kan je dan controleren hoeveel rijen er geupdate zijn. Als dit er 1 is is de gebruiker geactiveerd, anders niet...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.345s