UPDATE QUERY werkt niet
dit is het formulier
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$query = "SELECT id, product, prijs, omschrijving FROM aanbod WHERE email = '".mysql_real_escape_string($_SESSION['email'])."' ORDER BY id DESC" ;
$result = mysql_query($query);
if (mysql_num_rows($result)>0){
while($rij = mysql_fetch_assoc($result)) {
echo'<form method="POST" action="verwerkwijzigaanbod.php"> ';
echo' <input type="hidden" name="submit" value="1"> ';
echo' <input type="hidden" name="id" value='.$rij['id'].'>';
echo' Product <br>';
echo' <input type="name" name="product" size="45" maxlength="45" value='.$rij['product'].'><br> ';
echo' Prijs <br>';
echo' <input type="name" name="prijs" size="45" maxlength="45" value='.$rij['prijs'].'><br> ';
echo' Omschrijving<br> ';
echo' <textarea name="omschrijving" rows="6" cols="50" maxlength="300"> '.$rij['omschrijving'].' </textarea><br> ';
echo' <input type="submit" value="wijzig" > ';
echo'</form>';
?>
$query = "SELECT id, product, prijs, omschrijving FROM aanbod WHERE email = '".mysql_real_escape_string($_SESSION['email'])."' ORDER BY id DESC" ;
$result = mysql_query($query);
if (mysql_num_rows($result)>0){
while($rij = mysql_fetch_assoc($result)) {
echo'<form method="POST" action="verwerkwijzigaanbod.php"> ';
echo' <input type="hidden" name="submit" value="1"> ';
echo' <input type="hidden" name="id" value='.$rij['id'].'>';
echo' Product <br>';
echo' <input type="name" name="product" size="45" maxlength="45" value='.$rij['product'].'><br> ';
echo' Prijs <br>';
echo' <input type="name" name="prijs" size="45" maxlength="45" value='.$rij['prijs'].'><br> ';
echo' Omschrijving<br> ';
echo' <textarea name="omschrijving" rows="6" cols="50" maxlength="300"> '.$rij['omschrijving'].' </textarea><br> ';
echo' <input type="submit" value="wijzig" > ';
echo'</form>';
?>
en dit is de query
Code (php)
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
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
<?
$errors = array();
if(!isset($_POST['product']) OR $_POST['product'] == ''){
//error toevoegen
$errors[] = 'er is een geen product ingevuld';
}
//ander veld controle
if(!isset($_POST['prijs']) OR $_POST['prijs'] == ''){
//error toevoegen
$errors[] = 'er is geen prijs ingevuld';
}
//ander veld controle
if(!isset($_POST['omschrijving']) OR $_POST['omschrijving'] == ''){
//error toevoegen
$errors[] = 'er is geen omschrijving ingevuld';
}
else{
}
if(empty($errors)){
//geen errors dus insert
($sproduct = mysql_real_escape_string( $_POST['product']));
($sprijs = mysql_real_escape_string( $_POST['prijs']));
($somschrijving = mysql_real_escape_string( $_POST['omschrijving']));
mysql_query ("UPDATE aanbod SET product= '".$sproduct."', prijs='".$sprijs."', omschrijving= '".$somschrijving."' WHERE id ='".$id."'" );
?>
$errors = array();
if(!isset($_POST['product']) OR $_POST['product'] == ''){
//error toevoegen
$errors[] = 'er is een geen product ingevuld';
}
//ander veld controle
if(!isset($_POST['prijs']) OR $_POST['prijs'] == ''){
//error toevoegen
$errors[] = 'er is geen prijs ingevuld';
}
//ander veld controle
if(!isset($_POST['omschrijving']) OR $_POST['omschrijving'] == ''){
//error toevoegen
$errors[] = 'er is geen omschrijving ingevuld';
}
else{
}
if(empty($errors)){
//geen errors dus insert
($sproduct = mysql_real_escape_string( $_POST['product']));
($sprijs = mysql_real_escape_string( $_POST['prijs']));
($somschrijving = mysql_real_escape_string( $_POST['omschrijving']));
mysql_query ("UPDATE aanbod SET product= '".$sproduct."', prijs='".$sprijs."', omschrijving= '".$somschrijving."' WHERE id ='".$id."'" );
?>
Door een vraag stelling als "Kan mij iemand vertellen waarom het niet werkt" is makkelijk vragen. Vertel er wel bij wat er fout gaat, welke error je krijgt enz...
Tevens vind ik de manier van controleren Regel 4 tot 19 beetje vreemd.
Kijk HIER eens voor een beter voorbeeld.
Regel 25 tot 27 is overbodig. Zet die $vars gewoon in je query neer.
Tevens zet boven je pagina eens.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
/**
* Hiermee kun je in je script de foutmelding laten weergeven.
* Als je site live gaat, wil je de foutmeldingen niet weergeven i.v.m. hackers, dan zet je dit op 0
*/
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
?>
/**
* Hiermee kun je in je script de foutmelding laten weergeven.
* Als je site live gaat, wil je de foutmeldingen niet weergeven i.v.m. hackers, dan zet je dit op 0
*/
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
?>
En kijk even HIER voor een goede foutafhandeling voor je Query.
Ik mis je foutafhandeling bij je query...
Je maakt onnodig variabele aan ... je kan ze ook rechtstreeks in de query gebruiken..
het vreemde is juist dat hij wel de echo geeft dat de gegevens verwerkt zijn
heb je een idee hoe ik kan zorgen dat het formulier het idee meestuurd ik begrijp niet wat ik hier verkeerd doe
bedankt voor je reactie
Maar je zet de id ook als $id in je update query.
Waarom daar dan niet (int)$_POST('id')
het werkt
En als ik in je formulier kijk zie ik hem er wel in staan...
en anders kan je altijd op de verwerkings pagina kijken wat er binnen komt met
Gewijzigd op 24/07/2012 23:06:19 door Marco PHPJunky
gebruik heb gewoon direct....
regel 25 t/m 27 zijn overbodig..
En controleer of je query ook echt gelukt is ....
Tevens is een id een int waarde die je niet hoeft te mysql_real_escape_string te gebruiken maar gewoon.
heeft er iemand een idee ik weet niet hoe ik hier aan moet beginnen ?
alvast bedankt voor je reactie
Code (php)
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
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
<?php require_once('sundaybreaknl.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
if ((isset($_GET['id'])) && ($_GET['id'] != "")) {
$deleteSQL = sprintf("DELETE FROM nieuws_berichten WHERE id=%s",
GetSQLValueString($_GET['id'], "int"));
mysql_select_db($database_sundaybreaknl, $sundaybreaknl);
$Result1 = mysql_query($deleteSQL, $sundaybreaknl) or die(mysql_error());
$deleteGoTo = "index.php";
if (isset($_SERVER['QUERY_STRING'])) {
$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
$deleteGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $deleteGoTo));
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
if ((isset($_GET['id'])) && ($_GET['id'] != "")) {
$deleteSQL = sprintf("DELETE FROM nieuws_berichten WHERE id=%s",
GetSQLValueString($_GET['id'], "int"));
mysql_select_db($database_sundaybreaknl, $sundaybreaknl);
$Result1 = mysql_query($deleteSQL, $sundaybreaknl) or die(mysql_error());
$deleteGoTo = "index.php";
if (isset($_SERVER['QUERY_STRING'])) {
$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
$deleteGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $deleteGoTo));
}
?>
In sundaybreaknl.php staan de database gegevens en de database connect, ook moet je ff de tabelnaam en kolomnamen aanpassen
En anders: DELETE QUERY SQL
Gewijzigd op 25/07/2012 22:34:37 door Jelle Hi
Bedankt voor je reactie maar hoe geef ik nu het verschil aan of er op de verwijderknop is gedrukt of op de wijzig knop
Je kan met de header op het eind em doorsturen naar bijvoorbeeld 'verwijderd.html' en zet daar een melding in dat het is gelukt. Hetzelfde doe je dan met de Wijzig knop, maar dan met 'gewijzigd.html' etc.
In de action van het formulier staat nu wijzig.php hoe kan ik hier nu ook een actie inzetten dat hij naar bijv verwijder.php gaat als er op de verwijderknop is gedrukt en dus naar een andere pagina stuurt ?
ff een snelle manier: tweede form maken met alleen submit knop?
De TS geeft aan dat hij geen idee heeft wat PHP of wat laat staan wat ermee kan doen .
En dan kom jij met een functie aan zetten die punt 1 oud is en 2 niet te vatten voor de TS...
@Stefan
Ga eerst een wat lezen over PHP/Mysqli/PDO en ga zelf wat kloten daar leer je het meest van...
PHP
SQL
Errors