Meerdere velden updaten in 1 query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen Nick

Jeroen Nick

18/11/2016 11:40:14
Quote Anchor link
Hallo allemaal,

Ik heb een form gemaakt waarbij ik met een ID de Punten kan aanpassen in mijn database.(en het werkt)

Nu wil ik graag ook in hetzelfde form de honderdtachtig en Gespeeld toevoegen zodat ik ook deze kan aanpassen.

Echter loopt mijn query mis en weet ik niet hoe ik deze precies moet indelen. Misschien dat iemand mij hiermee kan helpen? Wat doe ik fout in mijn query?

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<html>
  
   <head>
      <title>Update a Record in MySQL Database</title>
   </head>

   <body>
      <?php
         if(isset($_POST['update'])) {
           $servername = "";
           $username = "";
           $password = "";
      
            
            $conn = mysql_connect($servername, $username, $password, $dbname);
            
            if(! $conn ) {
               die('Could not connect: ' . mysql_error());
            }

            
            $Id = $_POST['id'];
            $Gespeeld = $_POST['gespeeld'];
            $Honderdtachtig = $_POST['honderdtachtig'];
            $Punten = $_POST['punten'];
            
            $sql = "UPDATE seizoen16 ". "SET Punten = $Punten ". "SET gepeeld = $gespeeld ". "SET honderdtachtig = $hondertachtig ".
               "WHERE ID = $Id"  ;
        
            mysql_select_db('db_dcmikumdrin');
            $retval = mysql_query( $sql, $conn );
            
            if(! $retval ) {
               die('Could not update data: ' . mysql_error());
            }

            echo "Updated data successfully\n";
            
            mysql_close($conn);
         }
else {
            ?>

               <form method = "post" action = "<?php $_PHP_SELF ?>">
                  <table width = "400" border =" 0" cellspacing = "1"
                     cellpadding = "2">
                  
                     <tr>
                        <td width = "100">Id</td>
                        <td><input name = "id" type = "text"
                           id = "id"></td>
                     </tr>
                        <tr>
                        <td width = "100">Gespeeld</td>
                        <td><input name = "gespeeld" type = "text"
                           id = "gespeeld"></td>
                     </tr>
                    <tr>
                        <td width = "100">180</td>
                        <td><input name = "honderdtachtig" type = "text"
                           id = "honderdtachtig"></td>
                     </tr>
                    
                     <tr>
                        <td width = "100">Punten</td>
                        <td><input name = "punten" type = "text"
                           id = "punten"></td>
                     </tr>
                  
                     <tr>
                        <td width = "100"> </td>
                        <td> </td>
                     </tr>
                  
                     <tr>
                        <td width = "100"> </td>
                        <td>
                           <input name = "update" type = "submit"
                              id = "update" value = "Update">
                        </td>
                     </tr>
                  
                  </table>
               </form>
            <?php
         }
      ?>

      
   </body>
</html>

- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 18/11/2016 12:08:43 door - Ariën -
 
PHP hulp

PHP hulp

16/11/2024 00:51:56
 
- SanThe -

- SanThe -

18/11/2016 11:46:07
Quote Anchor link
Haal je inloggegevens uit je post.
Verder is het niet SET ... = ... SET ... = ... maar SET ...=... ,(komma) ...=...
 
Jeroen Nick

Jeroen Nick

18/11/2016 11:53:10
Quote Anchor link
Bedankt ik heb de inloggegevens gelijk weggehaald.

Ik heb de query aangepast maar krijg nog steeds een foutmelding:

$sql = "UPDATE seizoen16 ". "SET Punten = $Punten, gepeeld = $gespeeld, honderdtachtig = $honderdtachtig ".
"WHERE ID = $Id" ;


foutmelding:
Could not update data: 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 ' honderdtachtig = WHERE ID = 1' at line 1
Gewijzigd op 18/11/2016 11:54:57 door Jeroen Nick
 
Ivo P

Ivo P

18/11/2016 11:59:00
Quote Anchor link
heet je kolom gepeeld of gespeeld?

Als $gespeeld leeg is (lege string, null, false) dan staat er na "gepeeld = " direct een komma en geen waarde.
toevoegen van '' help dan.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$sql
= "UPDATE seizoen16 ". "SET Punten = '$Punten', gepeeld = '$gespeeld', honderdtachtig = '$honderdtachtig' ".
"WHERE ID = '$Id'" ;
?>


Maar dan zou ik ook naar escapen van de invoer kijken
of het gebruik van prepared statements.
 
Sander van t Hullenaar

Sander van t Hullenaar

18/11/2016 12:00:14
Quote Anchor link
Kan je heem eens omzetten naar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$sql
= "UPDATE seizoen16 SET `Punten` = '".$Punten."', `gepeeld` = '".$gespeeld."', `honderdtachtig` = '".$honderdtachtig."' WHERE `ID` = '".$Id."'";
?>


edit: inderdaad zo'n beetje wat Ivo ook zei :)
Gewijzigd op 18/11/2016 12:00:51 door Sander van t Hullenaar
 
- Ariën  -
Beheerder

- Ariën -

18/11/2016 12:09:47
Quote Anchor link
Verder raad ik aan om van de mysql_* functies af te stappen, omdat deze uit PHP 7 zijn gehaald.
Je kan het beste de functies van mysqli_* of PDO gebruiken.

Lijn 40 is loos, naast dat $PHP_SELF al vele ajren niet meer bestaat, doe je ook nog eens niks met die variabele. Dat hele PHP-blokje kan er gewoon uit, want een lege action-attribuut roept gewoon de huidige pagina aan.
Gewijzigd op 18/11/2016 12:11:02 door - Ariën -
 
Jeroen Nick

Jeroen Nick

18/11/2016 12:20:33
Quote Anchor link
Hallo Ivo, ik had een paar stomme spelfouten gemaakt en hij werkt nu gewoon.

Hierbij de code voor het updaten van alle velden:
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
68
69
70
71
72
73
74
75
76
77
78
79
    <?php
         if(isset($_POST['update'])) {
           $servername = "-";
           $username = "";
           $password = "-";
      
            
            $conn = mysql_connect($servername, $username, $password, $dbname);
            
            if(! $conn ) {
               die('Could not connect: ' . mysql_error());
            }

            
            $Id = $_POST['id'];
            
            $Gespeeld = $_POST['gespeeld'];
            $Honderdtachtig = $_POST['honderdtachtig'];
            $Punten = $_POST['punten'];
          
            $sql = "UPDATE seizoen16 SET Gespeeld='$Gespeeld', honderdtachtig='$Honderdtachtig', Punten='$Punten'
               WHERE id='$Id'"
  ;
        
            mysql_select_db('db_dcmikumdrin');
            $retval = mysql_query( $sql, $conn );
            
            if(! $retval ) {
               die('Could not update data: ' . mysql_error());
            }

            echo "Updated data successfully\n";
            
            mysql_close($conn);
         }
else {
            ?>

               <form method = "post" action = "<?php $_PHP_SELF ?>">
                  <table width = "400" border =" 0" cellspacing = "1"
                     cellpadding = "2">
                  
                     <tr>
                        <td width = "100">Id</td>
                        <td><input name = "id" type = "text"
                           id = "id"></td>
                          
                          <td width = "100">Speler</td>
                        <td><input name = "gespeeld" type = "text"
                           id = "gespeeld"></td>
                    
                    
                  
                        <td width = "100">Gespeeld</td>
                        <td><input name = "gespeeld" type = "text"
                           id = "gespeeld"></td>
                  
                        <td width = "100">180</td>
                        <td><input name = "honderdtachtig" type = "text"
                           id = "honderdtachtig"></td>
                    
                        <td width = "100">Punten</td>
                        <td><input name = "punten" type = "text"
                           id = "punten"></td>
                     </tr>
                  
                     <tr>
                        <td width = "100"> </td>
                        <td> </td>
                     </tr>
                  
                     <tr>
                        <td width = "100"> </td>
                        <td>
                           <input name = "update" type = "submit"
                              id = "update" value = "Update">
                        </td>
                     </tr>
                  
                  </table>
               </form>
            <?php
         }
      ?>



Het volgende wat ik wil doen is ervoor zorgen dat in de invulvelden al de gegevens staan die in de database staan.

Het is mij eerder gelukt om deze op te vragen in het input veld met deze code:

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
<?php
$servername
= "www.dcmikumdrin.nl";
$username = "-";
$password = "-";
$dbname = "-";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}


$sql = "SELECT Speler, Gespeeld, honderdtachtig, Punten FROM seizoen16 ORDER BY punten DESC";
$result = $conn->query($sql);

echo "<h1>Update</h1><form action='insert.php' method='post' name='insertform'>";

$i = 1;

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo
        "<table><tr><td>Speler:<input type='text' name='Speler'  value='" . $row['Speler'] . "'></td>".
        "<td><input type='submit' value='Submit'></td></tr></table>";
    }

     echo "<input type='submit' name='send' value='Submit'><br class='clear:both'>";
}
else {
    echo "0 results";
}

$conn->close();
?>


Iemand een idee hoe ik het moet aanpakken zodat ik in de eerste code, alles huidige waardes te zien krijg in de inputvelden?
Alvast bedankt!






Toevoeging op 18/11/2016 12:27:28:

Sander van t Hullenaar op 18/11/2016 12:00:14:
Kan je heem eens omzetten naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$sql
= "UPDATE seizoen16 SET `Punten` = '".$Punten."', `gepeeld` = '".$gespeeld."', `honderdtachtig` = '".$honderdtachtig."' WHERE `ID` = '".$Id."'";
?>


edit: inderdaad zo'n beetje wat Ivo ook zei :)


Dat was inderdaad de oplossing :)


- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 18/11/2016 12:33:13 door - Ariën -
 



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.