De data wordt niet geupdate

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert Jansen

Robert Jansen

11/04/2017 19:12:29
Quote Anchor link
hallo,

Ik heb een tabel waarbij ik data uit een database laat zien. De bedoeling is dat je de data kan wijzigen.
Als je dan op de link/button wijzig klik dan zal de wijzigingen opgeslagen moeten worden in de database.
Maar de wijzigingen worden niet in de database opgeslagen. En als de query is uigevoerd dan zie je de melding data met succes gewijzigd; dit zie ik ook niet op het scherm.

Ik krijg geen foutmeldingen.

mijn vraag is: hoe kunnen de wijzigingen opgeslagen worden in de database?

de index.php is:
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
<body>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

// 1. Verbinding maken met database:
require_once ("connect.php");
// 2. Query opstellen
$query = "SELECT * FROM users ";
// 3. Query uitvoeren
$result = mysqli_query($conn, $query)    or    die(mysqli_error());
?>

<?php
// 4. Resultaat verwerken
echo "<table border='1'>";
echo "<tr>";
      echo "<th>id</th>";
      echo "<th>voornaam</th>";
      echo "<th>achternaam</th>";
      echo "<th>woonplaats</th>";
      echo "<th>username</th>";
      echo "<th>E-mail</th>";
      echo "<th>Pass</th>";
    echo "</tr>";

while ($record = mysqli_fetch_assoc($result)) {
        
    $id = $record['user_id'];
    $voornaam = $record['first_name'];
    $achternaam = $record['last_name'];
    $woonplaats = $record['user_city'];
    $username = $record['username'];
    $email = $record['email'];
    $pass = $record['passreset'];
    
    echo "<tr>";
    ?>

    <td><input type="text" name="id"  value="<?php echo $id; ?>"  /></td>
    <td><input type="text" name="voornaam"  value="<?php echo $voornaam; ?>"  /></td>
    <td><input type="text" name="achternaam"  value="<?php echo $achternaam; ?>"  /></td>
    <td><input type="text" name="woonplaats"  value="<?php echo $woonplaats; ?>"  /></td>
    <td><input type="text" name="username"  value="<?php echo $username; ?>"  /></td>
    <td><input type="text" name="email"  value="<?php echo $email; ?>"  /></td>
    <td><textarea name="beschrijving" ><?php echo $pass; ?></textarea></td>

    <?php echo "<a href='wijzig.php?id=$id' name='update'>Wijzig</a>"; ?>
    <?php
    echo "</tr>";
}

echo "</table>";
mysqli_close($conn);
?>

</body>


wijzig.php is:
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
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
    //connectie maken
if(isset( $_GET['update'])){
include 'connect.php';

 //sql voor wijzigen
$sql = "UPDATE users SET first_name = ?, last_name = ?, user_city = ?, username = ?, email = ? , passreset = ? WHERE user_id = ?  ";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ssssssi", $voor_naam, $achter_naam, $woonplaats, $username, $email, $pass, $id);

//variable aanmaken voor invoegen
 //if (isset($_GET['id']) && isset($_GET['voornaam']) && isset($_GET['achternaam']) && isset($_GET['woonplaats']) && isset($_GET['username']) && isset($_GET['email']) && isset($//_GET['pass'])){

  $id = $_GET['id'];
 $voor_naam = $_GET['voornaam'];
 $achter_naam = $_GET['achternaam'];
 $woonplaats = $_GET['woonplaats'];
 $username = $_GET['username'];
 $email = $_GET['email'];
 $pass = $_GET['pass'];
 
 echo $voor_naam;
//}

 $stmt->execute();

if (! $sql) {
    echo "Data niet gewijzigd";
}
else{
    echo "<h3>Data met succes gewijzigd</h3>";
    }

//sluiten    
$stmt->close();
mysqli_close($conn);
}

?>

<a href="index.php">ga terug</a>
 
PHP hulp

PHP hulp

08/12/2024 13:08:58
 
Ben van Velzen

Ben van Velzen

11/04/2017 19:19:27
Quote Anchor link
Wilde gok: je wil data uit een formulier hebben, maar je verwijst naar de pagina via een link. Dat werkt niet.
 
Robert Jansen

Robert Jansen

11/04/2017 19:22:28
Quote Anchor link
dus ik zou er een formulier in index.php moeten zetten?
 
- Ariën  -
Beheerder

- Ariën -

11/04/2017 19:32:21
Quote Anchor link
Er moet inderdaad een form-tag omheen met als method een POST en als action je URL van je script die het allemaal verwerkt.

Verder is een submit-knop ook nodig. Want je wilt iets uitvoeren, en niet verwijzen.

Gebruik verder ook $_POST ipv $_GET. Waarom zou je de data via de URL willen verzenden?
Gewijzigd op 11/04/2017 19:37:19 door - Ariën -
 
Robert Jansen

Robert Jansen

11/04/2017 19:49:35
Quote Anchor link
bedankt voor de info, ik heb een form-tag omheen gezet en een submit knop.
op dit moment heb ik drie records in de database. En alleen de derde record wordt geupdate als ik op de knop druk, en record 1 en 2 niet als ik daar iets in wijzig, hoe kan dit?
 
- Ariën  -
Beheerder

- Ariën -

11/04/2017 19:55:43
Quote Anchor link
Waarom laat je een ID in je formulier zien? Zulke data zijn 'primaire sleutels' die je nooit aanpast. Ik raad aan om GET alleen te gebruiken voor je ID. En dus de ID in de URL benoemen. (index.php?id=3 bijv.)

Als die ingevuld is, en gevalideerd moet je de juiste gegevens ervan tonen in je formulier.
 
Robert Jansen

Robert Jansen

11/04/2017 20:15:35
Quote Anchor link
ik heb <form action='wijzig.php' method='POST'> <input type="submit" name="update" value="update" /> </form>
toegevoegd aan de code;
Zoals -Ariën- zegt: "Ik raad aan om GET alleen te gebruiken voor je ID"
hoe kan ik GET gebruiken in POST? Dat gaat toch niet?
En waar zet ik die ID in welke URL?
 
- Ariën  -
Beheerder

- Ariën -

11/04/2017 20:19:52
Quote Anchor link
Je gebruikt dan GET naast POST, en dat kan prima naast elkaar. Zorg wel dat je de ?id=$_GET['id'] in de url van je 'action' meegeeft.
 
Robert Jansen

Robert Jansen

11/04/2017 20:56:02
Quote Anchor link
ok, ik heb nu:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo "<form action='wijzig.php?id=$_GET['user_id']' method='POST'> "?>

maar ik krijg de foutmelding: Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)

zou je een voorbeeld code willen laten zien hoe ik get hierin kan gebruiken?
 
- Ariën  -
Beheerder

- Ariën -

11/04/2017 21:05:17
Quote Anchor link
Ik zal even een opzetje geven over hoe je het moet indelen:

Aller eerst is er een pagina waarin alle leden staan vermeld, laten we maar even zeggen dat dit index.php is.
Hier staat niets meer spannends dan enkel een while() loop. Elk lid die je wilt aanpassen linkt naar: bewerk_lid.php?id=*en dan hier het ID-nummer van het lid*
Dit is dus de data die je via GET meestuurt.

Op bewerk_lid.php kijk je eerst met isset() of $_GET['id'] bestaat en dus in de URL staat. Die is namelijk nodig als je het lid wilt aanpassen. Als die bestaat, dan vang je met mysqli_num_rows() af of deze ook daadwerkelijk bestaat. Want waarom zou je een lid willen aanpassen met een ID wat niet bestaat?

Als er aan deze twee validaties is voldaan, dan toon je het formulier. Hier moet je de gegevens van het lid in je formulier tonen (ID mag je achterwege laten, want die moet men NIET aan kunnen passen). Deze inhoud verstuur je via POST.

Ik hoop dat dit een heldere opzet is, en dat je hiermee wat verder kan.

En over je probleem: Variabelen horen buiten quotes:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<form action='wijzig.php?id=".$_GET['user_id']." method='POST'> ";
?>

Verder is het ook de vraag of het daadwerkelijk in een echo hoeft. Het kan ook prima buiten een PHP-code.
Gewijzigd op 11/04/2017 21:09:09 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

12/04/2017 09:26:50
Quote Anchor link
- Ariën - op 11/04/2017 21:05:17:
Verder is het ook de vraag of het daadwerkelijk in een echo hoeft. Het kan ook prima buiten een PHP-code.


Waarom niet meteen de daad bij het woord voegen?

Wat is het punt om dit te printen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<form action='wijzig.php?id=".$_GET['user_id']." method='POST'> ";
?>


Dit is een stuk minder goed leesbaar dan simpelweg:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form action="wijzig.php?id=<?php echo $_GET['user_id'] ?>" method="POST">


In het bovenstaande fragment zie je direct welk deel dynamisch is (het user id) en wat statisch is (de rest van de code).

Daarnaast is het waarschijnlijk geen verstandig idee om rechtstreeks querystring-variabelen terug te plakken in code. In ieder geval niet voordat je hebt vastgesteld dat $_GET['user_id'] van het goede formaat is. En meestal maak je dan een nieuwe "schone"/gevalideerde variabele aan die dit weerspiegelt.
 
Jesper S

Jesper S

14/04/2017 12:03:49
Quote Anchor link
<form action="wijzig.php?id=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_GET['user_id'] ?>
" method="POST">

Moet worden:

<form action="wijzig.php?id=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_GET['user_id']; ?>
" method="POST">
 
- Ariën  -
Beheerder

- Ariën -

14/04/2017 12:21:35
Quote Anchor link
Jesper Schroder op 14/04/2017 12:03:49:
<form action="wijzig.php?id=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_GET['user_id'] ?>
" method="POST">

Moet worden:

<form action="wijzig.php?id=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_GET['user_id']; ?>
" method="POST">

Zoek de verschillen?
 
Ben van Velzen

Ben van Velzen

14/04/2017 12:34:48
Quote Anchor link
Jesper Schroder op 14/04/2017 12:03:49:
<form action="wijzig.php?id=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_GET['user_id'] ?>
" method="POST">

Moet worden:

<form action="wijzig.php?id=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_GET['user_id']; ?>
" method="POST">


Heb je dat getest? Je laatste regel in een php blok hoeft niet perse gevolgd te worden door ;.
 
Jesper S

Jesper S

14/04/2017 12:57:18
Quote Anchor link
Ben van Velzen op 14/04/2017 12:34:48:
Jesper Schroder op 14/04/2017 12:03:49:
<form action="wijzig.php?id=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_GET['user_id'] ?>
" method="POST">

Moet worden:

<form action="wijzig.php?id=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_GET['user_id']; ?>
" method="POST">


Heb je dat getest? Je laatste regel in een php blok hoeft niet perse gevolgd te worden door ;.


Oh, sorry. Ik dacht dat je bij elke regel die je afsluit een ; moest plaatsen. Mijn excuses.
 
- Ariën  -
Beheerder

- Ariën -

14/04/2017 13:04:51
Quote Anchor link
Ah nu zie ik hem wel.
Verder hebben we ook mooie [code] en [/code]-tags voor om de scripts heen.
 



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.