login  Naam:   Wachtwoord: 
Registreer je!
 Forum

SQL update via formulier werkt niet

Offline SilverSide - 24/11/2009 21:37 (laatste wijziging 24/11/2009 21:41)
Avatar van SilverSideNieuw lid Zoals de titel aangeeft werkt mijn SQL update via een formulier niet. Als ik dit formulier submit dan geef de db terug dat de gegevens succesvol zijn bijgewertkt. Als ik daarna het record oproep dan blijkt er niets te zijn aangepast. Wie schijnt voor mij het licht in deze donkere materie?

http://www.plaatscode.be/138072/
titjes schreef:
LAPPEN CODE OP WWW.PLAATSCODE.BE!!!

9 antwoorden

Gesponsorde links
Offline Abbas - 24/11/2009 21:39 (laatste wijziging 24/11/2009 21:42)
Avatar van Abbas Gouden medaille

Crew .NET
Regel 3 op het einde, wat doet die single quote daar? Juist is:

  1. mysql_connect ('localhost', 'usrname', 'pwd') ;

En gebruik eens " in plaats van ' in het vervolg. Waarom sluit je ook telkens de PHP-tags af om ze dan meteen weer te openen zonder er ook maar iets tussen te zetten?!
Offline SilverSide - 24/11/2009 21:54
Avatar van SilverSide Nieuw lid
Citaat:
En gebruik eens " in plaats van ' in het vervolg. Waarom sluit je ook telkens de PHP-tags af om ze dan meteen weer te openen zonder er ook maar iets tussen te zetten?!


De php tag's worden afgesloten doordat ik wat geknipt en geplakt heb om de code wat overzichtelijker te maken. (de html ertussen uit)

Dank voor het plaatsen van de code op plaatscode.be. Zal ik in het vervolg doen 

Voor de goede orde, het script werkt prima. Het ophalen van de data gaat goed, alleen het onderdeel update werkt dus nog niet naar behoren.
Offline Abbas - 24/11/2009 23:02
Avatar van Abbas Gouden medaille

Crew .NET
Plaats dan is de betreffende code hier, enkel het stuk dat heel het update gedeelte bevat.
Offline ArieMedia - 25/11/2009 09:20
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
SilverSide schreef:
[..quote..]

De php tag's worden afgesloten doordat ik wat geknipt en geplakt heb om de code wat overzichtelijker te maken. (de html ertussen uit)

Dank voor het plaatsen van de code op plaatscode.be. Zal ik in het vervolg doen 

Voor de goede orde, het script werkt prima. Het ophalen van de data gaat goed, alleen het onderdeel update werkt dus nog niet naar behoren.


1; Zet je SQLcode onder elkaar (Bijv:
  1. UPDATE henk
  2. SET veld = waarde
  3. WHERE id = 1


Je ontdenkt veel eerder (kleine) foutjes in je SQL

2; Voeg tijdens het ontwikkelen or die($sql) toe (uitgaand dat $sql de query bevat), plak deze in je PHPMyAdmin window, meestal krijg je hier iets meer informatie terug

3; Heel goed dat je addslashes gebruikt om SQL-injectie te voorkomen, maar helaas is addslashes daar niet voor bedoeld, gebruik liever PHP.net: mysqli_real_escape_string of PHP.net: mysql_real_escape_string, met voorkeur voor mysqli.

Succes  
Offline SilverSide - 25/11/2009 09:54
Avatar van SilverSide Nieuw lid Het betreft de volgende twee stukjes code:

  1. if(isset($_GET['listID']) && is_numeric($_GET['listID']))
  2.  
  3. {
  4.  
  5. $id = $_GET['listID'];
  6.  
  7. }
  8.  
  9. else
  10.  
  11. {
  12.  
  13. $id = 1;
  14.  
  15. }


en

  1. if(isset($_POST['edit']))
  2.  
  3. {
  4.  
  5. $sudcat = addslashes($_POST['UDCat_ID']);
  6.  
  7. $sudoms = addslashes($_POST['UDOmschrijving']);
  8. $sudmerk = addslashes($_POST['UDMerk']);
  9.  
  10. $sudtype = addslashes($_POST['UDType']);
  11. $sudprijs = addslashes($_POST['UDPrijs']);
  12.  
  13.  
  14.  
  15. mysql_query("UPDATE wishlist SET Cat_ID='$sudcat', Omschrijving='$sudoms', Merk='$sudmerk', Type='$sudtype', Prijs='$sudprijs' WHERE listID=$id") or die (mysql_error());
  16.  
  17.  
  18. echo 'Je gegevens zijn succesvol in de database bijgewerkt';
  19.  
  20. }
  21.  
  22. else
  23.  
  24. {
  25.  
  26. ?>



Citaat:
Zet je SQLcode onder elkaar (Bijv:

[..code..]

Je ontdenkt veel eerder (kleine) foutjes in je SQL

2; Voeg tijdens het ontwikkelen or die($sql) toe (uitgaand dat $sql de query bevat), plak deze in je PHPMyAdmin window, meestal krijg je hier iets meer informatie terug


Mischien een rare vraag maar hoe doe ik dit?

Ik blijf me er over verbazen dat de update query succesvol teruggeeft maar dat er geen daadwerkelijke update plaats vind 



Offline ArieMedia - 25/11/2009 10:43 (laatste wijziging 25/11/2009 10:43)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
  1. $sql = '
  2. UPDATE wishlist
  3. SET Cat_ID = "'.$sudcat.'",
  4. Omschrijving = "'.$sudoms.'",
  5. Merk = "'.$sudmerk.'",
  6. Type = "'.$sudtype.'",
  7. Prijs = "'.$sudprijs.'"
  8. WHERE listID ='. $id;
  9.  
  10. if(mysql_query($sql)) {
  11. echo 'gelukt';
  12. } else {
  13. die($sql);
  14. }

Offline SilverSide - 25/11/2009 10:56 (laatste wijziging 26/11/2009 18:03)
Avatar van SilverSide Nieuw lid @ArieMedia

Heb nu de update query als volgt:

  1. <?
  2.  
  3. if(isset($_POST['edit']))
  4.  
  5. {
  6.  
  7. $sudcat = addslashes($_POST['UDCat_ID']);
  8.  
  9. $sudoms = addslashes($_POST['UDOmschrijving']);
  10. $sudmerk = addslashes($_POST['UDMerk']);
  11.  
  12. $sudtype = addslashes($_POST['UDType']);
  13. $sudprijs = addslashes($_POST['UDPrijs']);
  14.  
  15. $sql = '
  16. UPDATE wishlist
  17. SET Cat_ID = "'.$sudcat.'",
  18. Omschrijving = "'.$sudoms.'",
  19. Merk = "'.$sudmerk.'",
  20. Type = "'.$sudtype.'",
  21. Prijs = "'.$sudprijs.'"
  22. WHERE listID ='. $id;
  23.  
  24.  
  25.  
  26. if(mysql_query($sql)) {
  27. echo 'gelukt';
  28.  
  29. } else {
  30. die($sql);
  31. }
  32.  
  33. }
  34.  
  35. else
  36.  
  37. {
  38.  
  39. ?>


Krijg na invoer, gelukt! terug zonder dat daadwerkelijk het record is aangepast. Heb jij nog een idee waar het aan kan liggen?
Offline erikjandelan - 27/11/2009 01:30 (laatste wijziging 27/11/2009 01:31)
Avatar van erikjandelan Nieuw lid Ik heb je script even bekeken en heb eerst wat algemene opmerkingen.

1. Je begint bovenaan je script netjes met <?php vervolgens gebruik je verder in het script: <?. Wees hier duidelijk in. Ik raad je aan overal <?php te gebruiken, waarschijnlijk wordt in php6 de short_open_tag eruit gehaald en zal je code niet meer werken.
2. Je opent en sluit je constant je php terwijl en verder niets tussen staat dat hoef je je php ook niet af te sluiten.
3. Je sluit je niet alle td's in je tabel.
4. Ik ga ervan uit dat je listID een type INT is. Als dat zo is, is het beter om je '' erom heen weg te halen, dit is voor mysql niet nodig en dit is ook sneller in je mysql.

Dan is het ook op zich niet heel gek dat die de nieuwe gegevens niet laat zien. Lees dit goed, en zie je fout.

1. Je haalt de gegevens op boven aan je pagina.
2. De gegevens worden geplaatst in $result
3. Je update je gegevens
4. Je laat de gegevens uit $result zien

Mocht je het niet kunnen vinden:
Update je record bovenaan je pagina en haal dan pas je gegevens op uit de database. Dan weet je zeker dat je de gegevens die je aanroept ook zijn geupdate.  

Ik heb je code even aangepast, en het klopt dat ik op de selectQuery geen controle heb staan, geen zin meer in gehad. Ik heb het script verder niet getest dus kijk maar eens of die werkt.

Succes ermee.

Script: http://www.plaatscode.be/138083/
Offline ArieMedia - 27/11/2009 08:53
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
echo je SQL gewoon eens op de pagina anders en stop hem in phpmyadmin. Word er nu ook geupdate?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.249s