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?


<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>

Haal je inloggegevens uit je post.
Verder is het niet SET ... = ... SET ... = ... maar SET ...=... ,(komma) ...=...
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
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.


<?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.
Kan je heem eens omzetten naar:

<?
$sql = "UPDATE seizoen16 SET `Punten` = '".$Punten."', `gepeeld` = '".$gespeeld."', `honderdtachtig` = '".$honderdtachtig."' WHERE `ID` = '".$Id."'";
?>

edit: inderdaad zo'n beetje wat Ivo ook zei :)
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.
Hallo Ivo, ik had een paar stomme spelfouten gemaakt en hij werkt nu gewoon.

Hierbij de code voor het updaten van alle velden:

    <?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:


<?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!






[size=xsmall]Toevoeging op 18/11/2016 12:27:28:[/size]

Sander van t Hullenaar op 18/11/2016 12:00:14

Kan je heem eens omzetten naar:

<?
$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 :)


Reageren