UPDATE functie

Status
Niet open voor verdere reacties.

exotic

Gebruiker
Lid geworden
10 jul 2007
Berichten
277
Beste,

Wat is er fout aan deze update pagina?

PHP:
<?
include"config.php";

$id = $_GET["id"];
$select = "SELECT id, artikelnummer, artikel, aantal, afhaaldatum, naam, telefoon, bestelbaar FROM bestellingen WHERE id=$id";
$query = mysql_query($select) or die(mysql_error());
$result = mysql_fetch_array($query);

if(isset($_POST["wijzigen"]))
{
  $update = "UPDATE bestellingen SET artikelnummer = '".$_POST["artikelnummer"]."', artikel = '".$_POST["artikel"]."', aantal = '".$_POST["aantal"]."', afhaaldatum = '".$_POST["afhaaldatum"]."', naam = '".$_POST["naam"]."', telefoon = '".$_POST["telefoon"]."', bestelbaar = '".$_POST["bestelbaar"]."' WHERE id = '".$id."'";
  mysql_query($update) or die(mysql_error());

print "<br>";
print "<font size=\"2\" face=\"Tahoma\">Je bestelling is succesvol gewijzigd!</font>"; 
}

print "
<form action=\"\" method=\"post\">
<table width=\"45%\" border=\"0\" align=\"left\">
  <tr>
    <td width=\"45%\"><span class=\"stijl11\">Artikel Nummer:</span></td>
    <td width=\"55%\"><input type=\"text\" name=\"artikelnummer\" value=\"".$result["artikelnummer"]."\" id=\"artikelnummer\"/></td>
  </tr>
  <tr>
    <td><span class=\"stijl11\">Artikel Omschrijving:</span></td>
    <td><input type=\"text\" name=\"artikel\" value=\"".$result["artikel"]."\" id=\"artikel\"/></td>
  </tr>
  <tr>
    <td><span class=\"stijl11\">Aantal:</span></td>
    <td><input type=\"text\" name=\"aantal\" value=\"".$result["aantal"]."\" id=\"aantal\"/></td>
  </tr>
  <tr>
    <td><span class=\"stijl11\">Afhaal Datum:</span></td>
    <td><input type=\"text\" name=\"afhaaldaum\" value=\"".$result["afhaaldatum"]."\" id=\"afhaaldatum\"/></td>
  </tr>
  <tr>
    <td><span class=\"stijl11\">Naam:</span></td>
    <td><input type=\"text\" name=\"naam\" value=\"".$result["naam"]."\" id=\"naam\"/></td>
  </tr>
  <tr>
    <td><span class=\"stijl11\">Telefoon Nummer:</span></td>
    <td><input type=\"text\" name=\"telefoon\" value=\"".$result["telefoon"]."\" id=\"telefoon\"/></td>
  </tr>
  <tr>
    <td><span class=\"stijl11\">Bestelbaar?:</span></td>
    <td><select name=\"bestelbaar\" id=\"bestelbaar\">
      <option value=\"Ja\" selected=\"selected\">Ja</option>
      <option value=\"Nee\">Nee</option>
    </select></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type=\"submit\" name=\"verzenden\" value=\"Bewerken\" /></td>
  </tr>
</table></form>";
?>

Mvg, Wesley
 
Geen idee... :rolleyes:

Weet je: Dit de beste manier om je vraag te stellen.
Je stelt hem niet voor niets, dus er gaat iets fout. Wat gaat er fout?

Plaats het antwoord op die vraag hier dan kunnen wij er meer mee dan dat we nu kunnen.
 
Geen idee... :rolleyes:

Weet je: Dit de beste manier om je vraag te stellen.
Je stelt hem niet voor niets, dus er gaat iets fout. Wat gaat er fout?

Plaats het antwoord op die vraag hier dan kunnen wij er meer mee dan dat we nu kunnen.

Als ik iets wil bewerken kan dat.. geeft ook netjes alle gegevens weer uit de database.
maar op het moment dat ik iets wil bewerken en ik druk op Bewerken/Verstuur

update de pagina niets in de database.
 
De fout zit hierin:
HTML:
 <td><input type=\"submit\" name=\"verzenden\" value=\"Bewerken\" /></td>
en
PHP:
if(isset($_POST["wijzigen"]))
{

Een tip: gebruik
PHP:
if($_SERVER['REQUEST_METHOD'] == "post") {
 
Ik kan geen fout vinden hoor?
wat zou de oplossing moeten zijn dan?
 
De aanhalingstekens van $_POST["...."] sluiten de string $update="....." op ongeldige wijze af.
Verder vermoed ik dat artikelnummer en aantal een integer in de database zijn, en dan mogen er bij het updaten geen aanhalingstekens rond de nieuwe waarde.

Verander dit:
PHP:
if(isset($_POST["wijzigen"])) 
{ 
  $update = "UPDATE bestellingen SET artikelnummer = '".$_POST["artikelnummer"]."', artikel = '".$_POST["artikel"]."', aantal = '".$_POST["aantal"]."', afhaaldatum = '".$_POST["afhaaldatum"]."', naam = '".$_POST["naam"]."', telefoon = '".$_POST["telefoon"]."', bestelbaar = '".$_POST["bestelbaar"]."' WHERE id = '".$id."'"; 
  mysql_query($update) or die(mysql_error()); 

print "<br>";

eens in dit:
PHP:
if(isset($_POST["wijzigen"])) 
{
  $artikelnummer=$_POST["artikelnummer"];
  $artikel=$_POST["artikel"];
  $aantal=$_POST["aantal"];
  $afhaaldatum=$_POST["afhaaldatum"];
  $naam=$_POST["naam"];
  $telefoon=$_POST["telefoon"];
  $bestelbaar=$_POST["bestelbaar"];
  $update = "UPDATE bestellingen SET artikelnummer=$artikelnummer, artikel='$artikel', aantal=$aantal, afhaaldatum='$afhaaldatum', naam='$naam', telefoon = '$telefoon', bestelbaar = '$bestelbaar' WHERE id = '".$id."'";
  mysql_query($update) or die(mysql_error()); 

print "<br>";
 
Heb het veranderd maar nog steeds word er niets geupdate..
 
Ooops... ik heb de code nog eens bekeken en mijn theorie over de foutieve dubbele aanhalingstekens klopt in alle geval niet...:o
Die over de enkele aanhalingstekens rond numerieke waarden gelukkiglijk wel :)

Laat anders eens weten van welk type elk veld in je tabel is.
Hou er verder ook rekening mee dat velden die niet NULL mogen zijn, ook effectief een waarde moeten bevatten.

Je kan eens proberen om de update-string te echoën, zodat je kan zien of die wel helemaal geldig is.
Verander dit:
PHP:
  $update = "UPDATE bestellingen SET artikelnummer=$artikelnummer, artikel='$artikel', aantal=$aantal, afhaaldatum='$afhaaldatum', naam='$naam', telefoon = '$telefoon', bestelbaar = '$bestelbaar' WHERE id = '".$id."'";
  mysql_query($update) or die(mysql_error());
in dit:
PHP:
  $update = "UPDATE bestellingen SET artikelnummer=$artikelnummer, artikel='$artikel', aantal=$aantal, afhaaldatum='$afhaaldatum', naam='$naam', telefoon = '$telefoon', bestelbaar = '$bestelbaar' WHERE id = '".$id."'";
  echo $update;
  mysql_query($update) or die(mysql_error());
Als je niet zeker bent kan je de update-string even kopieren en hier posten...
 
Het zelfde verhaal :)
Geen update.

Mijn tabel ziet er zo uit:
id, datum, artikelnummer, artikel, aantal, afhaaldatum, naam, telefoon, bestelbaar.
 
Aha... nog een foutje met de enkele aanhalingstekens rond een numerieke waarde gevonden!

PHP:
 ..... WHERE id = '".$id."'";
moet worden
PHP:
 ..... WHERE id = $id";

Als het daarmee nog steeds niet lukt, laat dan de update-string die ik je in vorig bericht heb laten echoën hier eens zien...
 
PHP:
$id = $_GET["id"];
$select = "SELECT artikelnummer, artikel, aantal, afhaaldatum, naam, telefoon, bestelbaar FROM bestellingen WHERE id=$id";
$query = mysql_query($select) or die(mysql_error());
$result = mysql_fetch_array($query);

if(isset($_POST["wijzigen"])) 
{
  $artikelnummer=$_POST["artikelnummer"];
  $artikel=$_POST["artikel"];
  $aantal=$_POST["aantal"];
  $afhaaldatum=$_POST["afhaaldatum"];
  $naam=$_POST["naam"];
  $telefoon=$_POST["telefoon"];
  $bestelbaar=$_POST["bestelbaar"];
  $update = "UPDATE bestellingen SET artikelnummer=$artikelnummer, artikel='$artikel', aantal=$aantal, afhaaldatum='$afhaaldatum', naam='$naam', telefoon = '$telefoon', bestelbaar = '$bestelbaar' WHERE id = $id";  
  echo $update;
  mysql_query($update) or die(mysql_error());

print "<br>";  
print "<font size=\"2\" face=\"Tahoma\">Je bestelling is succesvol gewijzigd!</font>"; 
}

print "
<form action=\"\" method=\"post\">

Hierbij een deel van mijn bewerken.php
 
Ik vermoed dat de update nu WEL uitgevoerd wordt, maar dat je het nog niet ZIET!

Je haalt namelijk EERST de record op, DAARNA ga je hem updaten, en dan laat je de eerder opgehaalde record zien... dat klopt niet hé ;)

Verplaats volgende regels
PHP:
$select = "SELECT id, artikelnummer, artikel, aantal, afhaaldatum, naam, telefoon, bestelbaar FROM bestellingen WHERE id=$id"; 
$query = mysql_query($select) or die(mysql_error()); 
$result = mysql_fetch_array($query);
eens naar vlak voor
PHP:
print " 
<form action=\"\" method=\"post\">
 
zelfs dat werkt niet...
in phpmyadmin staat ook alles nog hetzelfde
 
Je noemt de submit-knop "verzenden", maar je controleert met
PHP:
 if(isset($_POST["wijzigen"]))
Dat moet dus worden:
PHP:
if(isset($_POST["verzenden"]))

Verder heb ik nog een typefout in de naam voor het tekstvak van afhaaldatum gevonden (daar ontbreekt een t)

PHP:
<input type=\"text\" name=\"afhaaldaum\" value=\"".$afhaaldatum."\" id=\"afhaaldatum\"/>
moet worden:
PHP:
<input type=\"text\" name=\"afhaaldatum\" value=\"".$afhaaldatum."\" id=\"afhaaldatum\"/>
 
Ooops :o

HTML:
UPDATE bestellingen SET artikelnummer=1337f, artikel='hdfgh', aantal=hdfg, afhaaldatum='hdfg', naam='hdfg', telefoon = 'dfg', bestelbaar = 'Ja' WHERE id = 23Unknown column '1337f' in 'field list'

Ik heb het ingevuld met de informatie dat hier boven genoemd staan.. 1337f etc...
Dit krijg ik als ik op verzenden druk.

Maar slaat nog niets op in de database
 
Laatst bewerkt:
Ik ben nog eens op jou test-pagina gaan proberen, en het wordt nu wel degelijk opgeslagen hoor...

De fout die je nu gemaakt hebt, is dat je een "f" bij het artikelnummer getypt hebt, en een letter opslaan in een numeriek veld gaat natuurlijk niet he ;)
 
Geweldig! Mijn dank is groot!

Weet je ook hoe ik een melding krijg dat er een bestelling verloopt?
stel de afhaal datum is: 10-10-2008 en het is 11-10-2008. ( dat ik dan een melding krijg met de tekst ) bestel nummer: "ID" verloopt.
 
Laatst bewerkt:
Bovenstaand bericht toont aan dat je eigenlijk nog een controle op geldigheid van de nieuwe waarden moet uitvoeren vóór dat je de record gaat opslagen....
Maar daar doe je natuurlijk mee wat je wil!

Trouwens... graag gedaan hoor;)
 
Geweldig! Mijn dank is groot!

Weet je ook hoe ik een melding krijg dat er een bestelling verloopt?
stel de afhaal datum is: 10-10-2008 en het is 11-10-2008. ( dat ik dan een melding krijg met de tekst ) bestel nummer: "ID" verloopt.
Bedoel je in de overzicht-pagina waar je kan klikken op de link "bestelling toevoegen", "aanpassen" en "wissen"?

Je zou daar bijvoorbeeld de afhaaldatum in het rood kunnen weergeven als die kleiner is dan de huidige datum. Dat doe je op ongeveer dezelfde manier als het rood en groen bij "bestelbaar"
 
Bedoel je in de overzicht-pagina waar je kan klikken op de link "bestelling toevoegen", "aanpassen" en "wissen"?

Je zou daar bijvoorbeeld de afhaaldatum in het rood kunnen weergeven als die kleiner is dan de huidige datum. Dat doe je op ongeveer dezelfde manier als het rood en groen bij "bestelbaar"


Ja dat bedoel ik.. dat alles in de tabel rood en dik gedrukt word als het lager is dan de datum.
maar ook daarvoor weet ik de code niet voor :P
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan