Probleem met update middels een form

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michiel Krijger

Michiel Krijger

21/06/2016 17:45:53
Quote Anchor link
Na veel lezen, zoeken, knippen en plakken heb ik "eindelijk" wat ik wil hebben.
Grotendeels werkt het.
Maar ik krijg de volgende mededelingen:
Notice: Use of undefined constant QUERY_STRING - assumed 'QUERY_STRING' in C:\xampp\htdocs\veranderv6.php on line 34
en
Notice: Undefined variable: update in C:\xampp\htdocs\veranderv6.php on line 61
...
Updaten lukt dus (nog) niet.

Wat moet ik waar (nog) aanpassen?
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
<?php
    $hostname
= "localhost";
    $dbname = "tour";
    $username = "**knip**";
    $password = "**knip**";
    
    $conn = new MySQLi($hostname, $username, $password, $dbname) or die('Can not connect to database')        
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Updaten van data</title>
</head>
<body>
<?php
    if(isset($_POST['Submit'])){  
    
    
    $tijdverschil2 = $_POST['verschil2'];

    $afbwaarde = $_POST['afbeeldingwrd'];
    
    $tijdverschil1 = $_POST['verschil1'];
    
        
    $update = "UPDATE radio SET Tijd2='$tijdverschil2', Plaatje='$afbwaarde', Tijd1='$tijdverschil1' WHERE radio_id=0";
    $conn->query($update) or die("Kan niet updaten");//update or error
    }
?>

<?php
$sql
= "SELECT * FROM radio WHERE radio_id=0";
$result = $conn->query($sql) or die(mysql_error());
$query=getenv(QUERY_STRING);
parse_str($query);
?>

<form action="" method="post">
<?php
    
    
    while ($row = $result->fetch_assoc()) {?>

    
<table border="0" cellspacing="10">
<tr>
<td>Afbeeldingnummer:</td> <td><input type="text" name="afbeeldingwrd" value="<?php echo $row['afbwaarde']; ?>"></td>
</tr>
<tr>
<td>Tijdverschil 1:</td> <td><input type="text" name="verschil1" value="<?php echo $row['tijdverschil1']; ?>"></td>
</tr>
<tr>
<td>Tijdverschil 2:</td> <td><input type="text" name="verschil2" value="<?php echo $row['tijdverschil2']; ?>"></td>
</tr>
<tr>
<td><INPUT TYPE="Submit" VALUE="Updaten !" NAME="Submit"></td>
</tr>
</table>
<?php    }
    ?>

</form>
<?php
    if($update){
    
    echo "<b>Update geslaagd!</b>";
    
    
        
}
  
?>

</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 21/06/2016 17:49:50 door - Ariën -
 
PHP hulp

PHP hulp

24/12/2024 03:08:19
 
- Ariën  -
Beheerder

- Ariën -

21/06/2016 17:53:43
Quote Anchor link
De eerste melding spreekt voor zich, je moet QUERY_STRING tussen single-quotes plaatsen.
Over je tweede melding, komt het erop neer dat $update niet bestaat. Maar hier gaat nog meer mis, want je kijkt nu naar de querystring die je aan je query doorgeeft. Dus een controle met $result is wel zinniger.
 
Michiel Krijger

Michiel Krijger

21/06/2016 18:06:07
Quote Anchor link
Heb de eerste melding tussen " " gezet.
Gaat goed.
Line 60 tot 68 eruit gehaald.
Nu krijg ik de mededeling "Kan niet updaten"....
Waardes worden niet overgenomen.
:-(
 
- Ariën  -
Beheerder

- Ariën -

21/06/2016 18:18:36
Quote Anchor link
Foutafhandeling inbouwen met $mysqli->error.
Verder is die() ook niet echt de juiste manier van foutrafhandeling. Je script hoort niet dood te gaan als er iets fout gaat. Het dient gewoon netjes afgesloten te worden.
 
Michiel Krijger

Michiel Krijger

21/06/2016 18:46:48
Quote Anchor link
Kan je me aangeven wat ik waar dan moet typen?
Met Php ben ik nog een echte leek.
please?
 
- Ariën  -
Beheerder

- Ariën -

21/06/2016 18:49:49
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$conn->query($update) or die("Fout opgetreden: ".$conn->error);
Gewijzigd op 21/06/2016 18:50:12 door - Ariën -
 
Michiel Krijger

Michiel Krijger

21/06/2016 20:07:44
Quote Anchor link
Ik voel nu blond...waar moet ik die regel plaatsen?
en tweede vraag...
waarom worden de waardes niet ge-update?
 
Bart V B

Bart V B

21/06/2016 20:21:19
Quote Anchor link
Regel 17:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
?>


Regel 27 en 28:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$update
= "UPDATE radio SET Tijd2='".$tijdverschil2."', Plaatje='".$afbwaarde."', Tijd1='".$tijdverschil1."' WHERE radio_id = 0";
$conn->query($update) or die("Fout opgetreden: ".$conn->error);
?>

Regel 33
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$conn
->query($update) or die("Fout opgetreden: ".$conn->error);
?>

regel 34 en 35
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
//$query=getenv(QUERY_STRING);
//parse_str($query);

?>


Volgens mij hebben we dan alles gehad denk..
 
Michiel Krijger

Michiel Krijger

21/06/2016 20:53:30
Quote Anchor link
Krijg nu deze melding:

Fout opgetreden: 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 '00', Plaatje='1', Tijd1='2'00' WHERE radio_id = 0' at line 1

In mijn database heten mijn velden niet plaatje,tijd1 en tijd2, maar afbwaarde, tijdverschil1 en tijdverschil2.
Wellicht dat ik in regel 27 daar een fout heb gemaakt.
Ik wist niet hoe ik dat moe(s)t invullen.


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
<?php
    $hostname
= "localhost";
    $dbname = "tour";
    $username = "prince";
    $password = "tafkap";
    
    $conn = new MySQLi($hostname, $username, $password, $dbname) or die('Can not connect to database')        
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Updaten van data</title>
</head>
<body>
<?php
    if($_SERVER['REQUEST_METHOD'] == 'POST') {  
    
    
    $tijdverschil2 = $_POST['verschil2'];

    $afbwaarde = $_POST['afbeeldingwrd'];
    
    $tijdverschil1 = $_POST['verschil1'];
    
        
    $update = "UPDATE radio SET Tijd2='".$tijdverschil2."', Plaatje='".$afbwaarde."', Tijd1='".$tijdverschil1."' WHERE radio_id = 0";
    $conn->query($update) or die("Fout opgetreden: ".$conn->error);
    }

?>

<?php
$sql
= "SELECT * FROM radio WHERE radio_id=0";
$result = $conn->query($sql) or die(mysql_error());
$query=getenv("QUERY_STRING");
parse_str($query);
?>

<form action="" method="post">
<?php
    
    
    while ($row = $result->fetch_assoc()) {?>

    
<table border="0" cellspacing="10">
<tr>
<td>Afbeeldingnummer:</td> <td><input type="text" name="afbeeldingwrd" value="<?php echo $row['afbwaarde']; ?>"></td>
</tr>
<tr>
<td>Tijdverschil 1:</td> <td><input type="text" name="verschil1" value="<?php echo $row['tijdverschil1']; ?>"></td>
</tr>
<tr>
<td>Tijdverschil 2:</td> <td><input type="text" name="verschil2" value="<?php echo $row['tijdverschil2']; ?>"></td>
</tr>
<tr>
<td><INPUT TYPE="Submit" VALUE="Updaten !" NAME="Submit"></td>
</tr>
</table>
<?php    }
    ?>

</form>
</body>
</html>
Gewijzigd op 21/06/2016 21:32:52 door Michiel Krijger
 
- Ariën  -
Beheerder

- Ariën -

21/06/2016 21:47:19
Quote Anchor link
Na lijn 27 even tijdelijk dit plaatsen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo "SQL: ".$update;


En hoe ziet je database structuur eruit qua tabellen en velden?
Gewijzigd op 21/06/2016 21:48:00 door - Ariën -
 
Ben van Velzen

Ben van Velzen

21/06/2016 21:49:51
Quote Anchor link
En dan ga je ontdekken dat je niets aan escaping doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$update
= "UPDATE radio SET Tijd2='".$conn->escape_string($tijdverschil2)."', Plaatje='".$conn->escape_string($afbwaarde)."', Tijd1='".$conn->escape_string($tijdverschil1)."' WHERE radio_id = 0";
?>
Gewijzigd op 21/06/2016 21:50:09 door Ben van Velzen
 
- Ariën  -
Beheerder

- Ariën -

21/06/2016 21:51:16
Quote Anchor link
... wat anders een groot veiligheidsrisico is, als je niet 'escaped'. Lees je maar eens in SQL Injection.
 
Michiel Krijger

Michiel Krijger

21/06/2016 21:54:17
Quote Anchor link
ik kan je een afbeelding sturen van mijn kleine database.
Hoe post je hier een afbeelding?

escaped?...php is vrij nieuw voor me.
Gewijzigd op 21/06/2016 21:57:25 door Michiel Krijger
 
Ben van Velzen

Ben van Velzen

21/06/2016 21:56:30
Quote Anchor link
Wat is er mis met een SQL structuurdump?
 
Michiel Krijger

Michiel Krijger

21/06/2016 22:01:51
Quote Anchor link
Bedoel je zoiets Ben?

Kolom Type Leeg Standaardwaarde Verwijst naar Opmerkingen
radio_id (Primaire sleutel) int(11) Nee
afbwaarde int(11) Nee
tijdverschil1 varchar(5) Nee
tijdverschil2 varchar(5) Nee
Indexen

Sleutelnaam Type Unieke waarde Gecomprimeerd Kolom Kardinaliteit Collatie Leeg Opmerking
PRIMARY BTREE Ja Nee radio_id 1 A Nee
 
Ben van Velzen

Ben van Velzen

21/06/2016 22:05:51
Quote Anchor link
Nee, ik bedoel een werkelijke dump. Iets waar in staat CREATE TABLE .... etc etc.
Ik zie nu al dat het een vreemde structuur is die je hebt, waarschijnlijk ook gemaakt zonder hinder van enige kennis.

Waarom lees je je niet gewoon eerst eens in hoe dingen werken zonder dingen lukraak te proberen?
Volg eens een tutorial over databases, dan leer je meteen wat SQL injection is en wat je daartegen moet doen.
Gewijzigd op 21/06/2016 22:07:38 door Ben van Velzen
 
- Ariën  -
Beheerder

- Ariën -

21/06/2016 22:08:00
Quote Anchor link
Wat meldt de code met die echo (zie 21:47 uur)?
 
Michiel Krijger

Michiel Krijger

21/06/2016 22:16:12
Quote Anchor link
@ Ariën:
SQL: UPDATE Radio SET tijdverschil2='4'00', afbwaarde='2', tijdverschil1='2'00' WHERE radio_id = 0Fout opgetreden: 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 '00', afbwaarde='2', tijdverschil1='2'00' WHERE radio_id = 0' at line 1

@ Ben van Velzen:
Heb de database en tabel aan de hand van een aantal tutorials en boeken gemaakt.
Klopt dat ik geen expert ben.
 
- Ariën  -
Beheerder

- Ariën -

21/06/2016 22:19:29
Quote Anchor link
Ik zou Ben's aanpassing doorvoeren, en dan zou het moeten werken.

Wel raad ik en goede tutorial aan zoals op http://www.phptuts.nl

En dan eerst de tutorial PHP, en dan over SQL en MySQLi.
 
Michiel Krijger

Michiel Krijger

21/06/2016 22:31:12
Quote Anchor link
Heren....Hij doet het.
Hartelijk dank en ja ik zal zeker nog met tutorials aan de gang gaan.
Bedankt voor de tips.
 



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.