login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[Sql]Update

Offline finduilas - 02/04/2006 15:23 (laatste wijziging 02/04/2006 15:23)
Avatar van finduilasPHP gevorderde Hallo;

Ik heb 2 query's met update.Telkens in een verschilende tabel.
  1. mysql_query("UPDATE cupmatches SET status = 'oud', winnaar = '".$_POST['winnaar']."' WHERE `id`='".$_GET['id']."'")
  2. en
  3. mysql_query("UPDATE cupleden SET punten=punten+10 WHERE `id`='".$_GET['id']."'")


Maar dat moet in 1x gebeuren.
Dit is de code waar het in hoort (tips zijn ook welkom):
  1. <?php
  2. include ("connect.php");
  3. if($_SERVER['REQUEST_METHOD'] == 'POST')
  4. {
  5. if($update = mysql_query("UPDATE cupmatches SET status = 'oud', winnaar = '".$_POST['winnaar']."' WHERE `id`='".$_GET['id']."'"))
  6. {
  7. echo "Score toevoegen is gelukt!<a href='leden.php'>[Index]</a>";
  8. } else
  9. {
  10. echo "Score toevoegen is mislukt!Keer terug!<br /><a href='javascript:history.go(-1);'>[Vorige pagina]</a>";
  11. }
  12. } else
  13. {
  14. $query = mysql_query("SELECT * FROM `cupmatches` WHERE `id`='".$_GET['id']."' AND `status`='nieuw'") or die(mysql_error());
  15. $gegevens = mysql_fetch_object($query);
  16. {
  17. ?>
  18. <form method="POST" action="">
  19. Datum: <?=$gegevens->datum;?><br>
  20. Speler1: <?=$gegevens->speler1;?><br>
  21. Speler2: <?=$gegevens->speler2;?><br>
  22. Winnaar:<input type="text" name="winnaar" value="<?=$gegevens->winnaar;?>"><br>
  23. <INPUT NAME="verzenden" TYPE="submit" VALUE="Verzenden">
  24. </form>
  25. <?PHP
  26. }
  27. }
  28. ?>

37 antwoorden

Gesponsorde links
Offline marten - 02/04/2006 15:27
Avatar van marten Beheerder je wilt dus als het formulier gesubmit is beide query's uitvoeren?
Offline finduilas - 02/04/2006 15:47
Avatar van finduilas PHP gevorderde Idd
Offline timo - 02/04/2006 15:52
Avatar van timo PHP ver gevorderde gwn if(isset($submit))
{
mysql_query("query1");
mysql_query("query2");
}
maar dan wat netter natuurlijk 
Offline finduilas - 02/04/2006 16:09
Avatar van finduilas PHP gevorderde Ik werk zo:
if($update = mysql_query("UPDATE cupmatches SET status = 'oud', winnaar = '".$_POST['winnaar']."' WHERE `id`='".$_GET['id']."'")

Dus dan kan het niet of wel?

Offline Voldemort - 02/04/2006 16:12
Avatar van Voldemort PHP ver gevorderde Als je het perse op jouw manier wil doen doe je het zo;

  1. if(mysql_query("UPDATE cupmatches SET status = 'oud', winnaar = '".$_POST['winnaar']."' WHERE `id`='".$_GET['id']."'"))


of

  1. mysql_query("UPDATE cupmatches SET status = 'oud', winnaar = '".$_POST['winnaar']."' WHERE `id`='".$_GET['id']."'");
Offline finduilas - 02/04/2006 16:17 (laatste wijziging 02/04/2006 21:04)
Avatar van finduilas PHP gevorderde Nu word er maar 1 query uitgevoerd.Ze moeten ALLEBEI worden uitgevoerd.

Iemand?
Offline Simon - 02/04/2006 21:53
Avatar van Simon PHP expert
  1. <?php
  2. $query1 = "UPDATE cupmatches SET status = 'oud', winnaar = '".$_POST['winnaar']."' WHERE `id`='".$_GET['id']."'";
  3. $query2 = "iets";
  4.  
  5. if(mysql_query($query1) && mysql_query($query2))
  6. {
  7. ?>


zo mss?
Offline Rens - 02/04/2006 23:03 (laatste wijziging 02/04/2006 23:05)
Avatar van Rens Gouden medaille

Crew algemeen
Ik geloof niet dat je 2 tabellen kunt updaten met 1 query.
Daar heb je, denk ik, toch echt 2 queries voor nodig.

Je zou het misschien nog zo kunnen proberen:
  1. mysql_query("UPDATE cupmatches, cupleden SET cupmatches.status = 'oud', cupmatches.winnaar = '".$_POST['winnaar']."', cupleden.punten=cupleden.punten+10 WHERE cupmatches.id='".$_GET['id']."' AND cupleden.id='".$_GET['id']."'")


Heb er alleen weinig (eerlijk gezegd helemaal geen) vertrouwen in dat het gaat lukken...

edit:
Krijg er al wat meer vertrouwen in.
Ik kijk net op dev.mysql.com en zie zoiets staan...
Offline finduilas - 03/04/2006 08:06 (laatste wijziging 03/04/2006 16:49)
Avatar van finduilas PHP gevorderde You have an error in your SQL syntax near ' cupleden SET cupmatches.status = 'oud', cupmatches.winnaar = 'Finduilas', cuple' at line 1
1064
Offline Simon - 03/04/2006 16:52
Avatar van Simon PHP expert ofwel ligt het aan de spatie tusse , en cupleden
ofwel moet je backsticks zetten: `cupmatches`,`cupleden`
Offline Rens - 03/04/2006 16:53 (laatste wijziging 03/04/2006 16:53)
Avatar van Rens Gouden medaille

Crew algemeen
  1. <?PHP
  2. $sQuery = "UPDATE cupmatches, cupleden SET cupmatches.status = 'oud', cupmatches.winnaar = '".$_POST['winnaar']."', cupleden.punten=cupleden.punten+10 WHERE cupmatches.id='".$_GET['id']."' AND cupleden.id='".$_GET['id']."'";
  3. if(!MySQL_Query($sQuery))
  4. {
  5. echo $sQuery;
  6. } else
  7. {
  8. echo "Ok";
  9. }
  10. ?>

Hij zal nu de query op het scherm zetten als er iets fout is.
Laat de query hier eens zien...

@Simon, die backticks hoeven helemaal niet...
Offline Simon - 03/04/2006 16:56
Avatar van Simon PHP expert het is toch duidelijk dat er iets mis is met cupleden, ofwel is het dat er geen spatie mag staan/backsticks moeten zijn (alhoewel dit nooit moet), ofwel dat 2 tabbellen niet mogen..
Offline finduilas - 03/04/2006 17:47 (laatste wijziging 03/04/2006 18:42)
Avatar van finduilas PHP gevorderde http://www.intensityclan.be/cup/test.php 
Offline Ontani - 03/04/2006 18:46 (laatste wijziging 03/04/2006 18:46)
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
$_GET['id'] is leeg en $_POST['winnaar'] ook, dat zie je toch ook
Offline Simon - 03/04/2006 19:39
Avatar van Simon PHP expert maar dat is toch niet de reden Ontani...
wrm geeft hij error vanaf ' cupleden ' ??
->omdat er daar ofwel een spatie teveel staat, ofwel kan het gewoon weg niet...
Offline Rens - 03/04/2006 19:57
Avatar van Rens Gouden medaille

Crew algemeen
WHERE cupmatches.id='' AND cupleden.id=''
Omdat je where clausule leeg is, geeft hij die error.

Als je daar wel een ID neer zet, werkt het.
Offline timo - 03/04/2006 20:03
Avatar van timo PHP ver gevorderde doe vanaf hier een formpje met action naar test.php?id=1 en daarmee een $_POST['winnaar'] maar de query komt in et scherm, word die wel echt uitgevoerd?
Offline Rens - 03/04/2006 20:04
Avatar van Rens Gouden medaille

Crew algemeen
Timo, als je mijn post even gelezen had:
Citaat:
Hij zal nu de query op het scherm zetten als er iets fout is.
Laat de query hier eens zien...
Offline timo - 03/04/2006 20:15
Avatar van timo PHP ver gevorderde
Citaat:
UPDATE cupmatches, cupleden SET cupmatches.status = 'oud', cupmatches.winnaar = 'blaat', cupleden.punten=cupleden.punten+10 WHERE cupmatches.id='1' AND cupleden.id='1'

Offline finduilas - 03/04/2006 20:56 (laatste wijziging 07/04/2006 10:08)
Avatar van finduilas PHP gevorderde Ik krijg nu de query.Dus is er nog steeds iets verkeerd of niet?

Want ik moet toch ok krijgen:

http://www.intensityclan.be/cup/test.php
Offline Simon - 03/04/2006 21:05 (laatste wijziging 07/04/2006 10:53)
Avatar van Simon PHP expert ik denk echt dat niemand mij hier wil geloven, probeer eens zonder die spatie, probeer backsticks( ` ) rond de tabellen, anders kan je gewoon niet tegelijkertijd...
doe het anders zo met 2 query's
  1. <?php
  2. $sQuery1 = "UPDATE cupmatches SET status = 'oud', winnaar = '".$_POST['winnaar']."' WHERE id='".$_GET['id']."'";
  3. $sQuery2 = "hier de andere";
  4. if(!MySQL_Query($sQuery1))
  5. {
  6. echo "FOUT: Query1 mislukt: ". $sQuery1;
  7. }
  8. else {
  9. echo "Query1 Ok";
  10. }
  11. if(!MySQL_Query($sQuery2)) {
  12. echo "FOUT: Query2 mislukt: ". echo $sQuery2;
  13. }
  14. else {
  15. echo "Query2 OK";
  16. }
  17. ?>
Offline Rens - 03/04/2006 22:41 (laatste wijziging 03/04/2006 22:43)
Avatar van Rens Gouden medaille

Crew algemeen
  1. <?PHP
  2. $sQuery = "UPDATE cupmatches, cupleden SET cupmatches.status = 'oud', cupmatches.winnaar = '".$_POST['winnaar']."', cupleden.punten=cupleden.punten+10 WHERE cupmatches.id='".$_GET['id']."' AND cupleden.id='".$_GET['id']."'";
  3. if(!MySQL_Query($sQuery))
  4. {
  5. echo $sQuery."<br />";
  6. } else
  7. {
  8. echo "Ok";
  9. }
  10. ?>

We zullen er ook maar even MySQL_Error(); bij zetten 

@Simon, dan vraag ik me toch af waarom een SELECT uit meerdere tabellen wel werkt zonder backticks.
Offline xSc - 04/04/2006 12:41
Avatar van xSc Onbekend Let op MySQL-injection! (reactie Rensjuh!)

Je weet namelijk niet of $_GET['id'] wel een integer bevat. Nummers verder buiten quotes:

WHERE id = " . intval($_GET['id'])
Offline Thomas - 07/04/2006 10:39 (laatste wijziging 07/04/2006 10:41)
Avatar van Thomas Moderator Wat is er tegen het gebruik van 2 queries die je na elkaar uitvoert?
Als je ze per sé allebei, of geen van beide uit wil voeren, dan maak je toch gebruik van transacties? Dan moeten je database-tabellen wel van het type InnoDB zijn, en niet MyISAM. MyISAM ondersteunt nl. geen transacties.

STATUS is wss. ook een woord wat je niet zomaar als kolomnaam mag/kunt gebruiken, dus zet hier backticks omheen!
Offline finduilas - 07/04/2006 10:43 (laatste wijziging 07/04/2006 10:45)
Avatar van finduilas PHP gevorderde UPDATE cupmatches, cupleden SET cupmatches.status = 'oud', cupmatches.winnaar = '', cupleden.punten=cupleden.punten+10 WHERE cupmatches.id='' AND cupleden.id=''
You have an error in your SQL syntax near ' cupleden SET cupmatches.status = 'oud', cupmatches.winnaar = '', cupleden.punte' at line 1

EDIT: Als ik backticks gebruik krijg ik dit:
UPDATE `cupmatches`,`cupleden` SET cupmatches.status = 'oud', cupmatches.winnaar = '', cupleden.punten=cupleden.punten+10 WHERE cupmatches.id='' AND cupleden.id=''
You have an error in your SQL syntax near '`cupleden` SET cupmatches.status = 'oud', cupmatches.winnaar = '', cupleden.punt' at line 1
Offline Simon - 07/04/2006 10:46
Avatar van Simon PHP expert dan is het duidelijk hé, het kan niet...
of je moet transacties gaan gebruiken zoals FangorN zegt
Offline finduilas - 07/04/2006 10:53 (laatste wijziging 07/04/2006 12:02)
Avatar van finduilas PHP gevorderde Jammer;Maar ik ben bezig aan het prutsen op jou manier.Wel nog enkele errors maar ik ben er mee bezig.
Offline Simon - 07/04/2006 13:05
Avatar van Simon PHP expert welke errors?
Offline finduilas - 07/04/2006 13:10
Avatar van finduilas PHP gevorderde Enkele parses maar ik kan deze al zelf oplossen ;).
Mijn code werkt:
  1. <?php
  2. include ("connect.php");
  3. $sQuery1 = "UPDATE cupmatches SET `status`='oud', winnaar='".$_POST['winnaar']."' WHERE id='".$_GET['id']."'";
  4. $sQuery2 = "UPDATE cupleden SET punten=punten+10 WHERE `nicknaam`='".$_POST['winnaar']."'";
  5. if($_SERVER['REQUEST_METHOD'] == 'POST')
  6. {
  7. if(!MySQL_Query($sQuery1))
  8. {
  9. echo "ERROR:";
  10. }
  11. else
  12. {
  13. echo 'Matchscore toevoegen is gelukt<br>';
  14. }
  15. if(!MySQL_Query($sQuery2))
  16. {
  17. echo "<br>ERROR:";
  18. }
  19. else
  20. {
  21. echo "<br>Punten toevoegen bij ".$_POST['winnaar']." is gelukt";
  22. }
  23. } else
  24. {
  25. $query = mysql_query("SELECT * FROM `cupmatches` WHERE `id`='".$_GET['id']."' AND `status`='nieuw'") or die(mysql_error());
  26. $gegevens = mysql_fetch_object($query);
  27. {
  28. ?>
  29. <form method="POST" action="">
  30. Datum: <?=$gegevens->datum;?><br>
  31. Speler1: <?=$gegevens->speler1;?><br>
  32. Speler2: <?=$gegevens->speler2;?><br>
  33. Winnaar:<input type="text" name="winnaar" value="<?=$gegevens->winnaar;?>"><br>
  34. <INPUT NAME="verzenden" TYPE="submit" VALUE="Verzenden">
  35. </form>
  36. <?PHP
  37. }
  38. }
  39. ?>


Wel zou ik willen weten wat ik juist kan doen tegen een mysql-injection.
Offline Rens - 07/04/2006 13:24
Avatar van Rens Gouden medaille

Crew algemeen
http://www.phpf...amp;page=4
Webprogrammers hacking quide, dat stukje gaat over SQL injection.
Het zou eventueel ook iets zijn om het helemaal door te lezen:lamp: 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.327s