login  Naam:   Wachtwoord: 
Registreer je!
 Forum

mijn update werkt niet (met ID) (Opgelost)

Offline staic - 28/05/2009 14:30 (laatste wijziging 28/05/2009 15:32)
Avatar van staicNieuw lid Ik ben nieuw met PHP en SQL en moet zeggen dat het mij vandaag reeds gelukt is om gegevens in te voeren, sorteren, enz...

Enkel werkt mijn update niet. Ik zie dus perfect de gegevens in het formulier staan maar wanneer ik gegevens verander en op SUBMIT DRUK dan ziet er alles goed uit tot wanneer ik dan kijk in mijn uitlees bestand dan zie ik dat er niks werd gewijzigd.

UITLEES BESTAND
  1. <?php
  2. include error_reporting(E_ALL);
  3. $con = mysql_connect("localhost","raamdecora_db1","***");
  4. if (!$con)
  5. {
  6. die('Could not connect: ' . mysql_error());
  7. }
  8.  
  9. mysql_select_db("raamdecora_db1", $con);
  10.  
  11. $result = mysql_query("SELECT * FROM klanten ORDER BY firma") or die(mysql_error());
  12.  
  13. echo "<table border='1'>
  14. <tr>
  15. <th>ID</th>
  16. <th>Firma</th>
  17. <th>Straat</th>
  18. <th>Huisnummer</th>
  19. <th>Groep binnenzonwering</th>
  20. <th>Groep buitenzonwering</th>
  21. <th>Groep gordijnstoffen</th>
  22. <th>Wijzig</th>
  23. </tr>";
  24.  
  25. while($row = mysql_fetch_array($result))
  26. {
  27. echo "<tr>";
  28. echo "<td>" . $row['firmaID'] . "</td>";
  29. echo "<td>" . $row['firma'] . "</td>";
  30. echo "<td>" . $row['straat'] . "</td>";
  31. echo "<td>" . $row['huisnummer'] . "</td>";
  32. echo "<td>" . $row['groep_binnen'] . "</td>";
  33. echo "<td>" . $row['groep_buiten'] . "</td>";
  34. echo "<td>" . $row['groep_gordijnstoffen'] . "</td>";
  35. echo "<td><a href=klanten_wijzigen.php?firmaID=" . $row['firmaID'] . ">wijzig</td>";
  36. echo "</tr>";
  37. }
  38. echo "</table>";
  39.  
  40. ?>


FORMULIER WIJZIGEN

  1. <?php
  2. include error_reporting(E_ALL);
  3. //replace usernaem,password, and yourdb with the information for your database
  4. mysql_connect("localhost","raamdecora_db1","***") or die("Error: ".mysql_error());
  5. mysql_select_db("raamdecora_db1");
  6.  
  7. //replace TestTable with the name of your table
  8. //also in a real app you would get the id dynamically
  9. $sql = "select * from klanten where firmaID = '$_GET[firmaID]'";
  10. $query = mysql_query($sql) or die(mysql_error());
  11.  
  12. while ($row = mysql_fetch_array($query)){
  13.  
  14. $firmaID = $row['firmaID'];
  15. $firma = $row['firma'];
  16. $straat = $row['straat'];
  17. $huisnummer = $row['huisnummer'];
  18. $groep_binnen = $row['groep_binnen'];
  19. $groep_buiten = $row['groep_buiten'];
  20. $groep_gordijnstoffen = $row['groep_gordijnstoffen'];
  21.  
  22. //we will echo these into the proper fields
  23.  
  24. }
  25. ?>
  26.  
  27.  
  28. <u>Klanten wijzigen: </u>
  29. <form action="klantenwijzigen.php" method="post">
  30. <table width="95%" border="0" cellspacing="0" cellpadding="0">
  31. <tr>
  32. <td>KlantenID</td>
  33. <td><input type="text" value="<?php echo $firmaID;?>" name="firmaID" disabled></td>
  34. </tr>
  35. <tr>
  36. <td>Firma :</td>
  37. <td><input type="text" value="<?php echo $firma;?>" name="firma"></td>
  38. </tr>
  39. <tr>
  40. <td>Straat :</td>
  41. <td><input type="text" value="<?php echo $straat;?>" name="straat"></td>
  42. </tr>
  43. <tr>
  44. <td>Huisnummer :</td>
  45. <td><input type="text" value="<?php echo $huisnummer;?>" name="huisnummer"></td>
  46. </tr>
  47. <tr>
  48. <td>Groep binnenzonwering :(ja=1 / neen=0)</td>
  49. <td><input type="text" value="<?php echo $groep_binnen;?>" name="groep_binnen"></td>
  50. </tr>
  51. <tr>
  52. <td>Groep buitenzonwering :(ja=1 / neen=0)</td>
  53. <td><input type="text" value="<?php echo $groep_buiten;?>" name="groep_buiten"></td>
  54. </tr>
  55. <tr>
  56. <td>Groep gordijnstoffen :(ja=1 / neen=0)</td>
  57. <td><input type="text" value="<?php echo $groep_gordijnstoffen;?>" name="groep_gordijnstoffen"></td>
  58. </tr>
  59. <tr>
  60. <td><input type="submit" value="Klanten wijzigen" name="submit"></td>
  61. </tr>
  62. </table>
  63. </form>


PAGINA WIJZIGEN

  1. <?php
  2. include error_reporting(E_ALL);
  3. //replace usernaem,password, and yourdb with the information for your database
  4. mysql_connect("localhost","raamdecora_db1","***") or die("Error: ".mysqlerror());
  5. mysql_select_db("raamdecora_db1");
  6.  
  7. //get the variables we transmitted from the form
  8. $firmaID = $_POST['firmaID'];
  9. $firma = $_POST['firma'];
  10. $straat = $_POST['straat'];
  11. $huisnummer = $_POST['huisnummer'];
  12. $groep_binnen = $_POST['groep_binnen'];
  13. $groep_buiten = $_POST['groep_buiten'];
  14. $groep_gordijnstoffen = $_POST['groep_gordijnstoffen'];
  15.  
  16. //replace TestTable with the name of your table
  17. $sql = "UPDATE klanten SET firma = '$firma' WHERE firmaID = '$firmaID' LIMIT 1";
  18.  
  19.  
  20. mysql_query($sql) or die ("Error: ".mysql_error());
  21.  
  22. echo "Database updated. <a href='uitlezen.php'>Return to edit info</a>";
  23. ?>
  24.  
  25. <!-- ALLES HIER IN COMMENTAAR HEB IK EVEN ZITTEN PROBEREN, HELAAS ZONDER RESULTAAT
  26. $sql = "UPDATE klanten SET `firma` = '$firma',`straat` = '$straat',`huisnummer` = '$huisnummer',`groep_binnen` = '$groep_binnen',`groep_buiten` = '$groep_buiten',`groep_gordijnstoffen` = '$groep_gordijnstoffen' WHERE klanten.firmaID = '$firmaID' LIMIT 1";
  27.  
  28. $sql = "UPDATE klanten SET `firma` = '$firma',`straat` = '$straat',`huisnummer` = '$huisnummer',`groep_binnen` = '$groep_binnen',`groep_buiten` = '$groep_buiten',`groep_gordijnstoffen` = '$groep_gordijnstoffen' WHERE klanten.firmaID = '$firmaID' LIMIT 1";
  29.  
  30.  
  31. $sql="INSERT INTO klanten (firma, straat, huisnummer, groep_binnen, groep_buiten, groep_gordijnstoffen)
  32. VALUES
  33. ('$_POST[firma]','$_POST[straat]','$_POST[huisnummer]','$_POST[groep_binnen]','$_POST[groep_buiten]','$_POST[groep_gordijnstoffen]')
  34.  
  35. $sql="UPDATE klanten SET (firma, straat, huisnummer, groep_binnen, groep_buiten, groep_gordijnstoffen)
  36. VALUES
  37. ('$_POST[firma]','$_POST[straat]','$_POST[huisnummer]','$_POST[groep_binnen]','$_POST[groep_buiten]','$_POST[groep_gordijnstoffen]') WHERE klanten.firmaID = '$firmaID' LIMIT 1";
  38.  
  39. UPDATE `raamdecora_db1`.`klanten` SET `firma` = 'jeremyy' WHERE `klanten`.`firmaID` =11 LIMIT 1 ;
  40.  
  41. UPDATE klanten SET firma = firma WHERE klanten.firmaID = '$firmaID' LIMIT 1";
  42.  
  43. -->


Dit is mijn MYSQL. (denk wel dat dit juist is, anders zou de rest ook niet werken)
firmaID int(5) Nee Geen auto_increment
firma varchar(50) latin1_swedish_ci Nee Geen
straat varchar(50) latin1_swedish_ci Nee Geen
huisnummer decimal(5,0) Ja NULL
groep_binnen decimal(1,0) Ja NULL
groep_buiten decimal(1,0) Ja NULL
groep_gordijnstoffen decimal(1,0) Ja NULL



titjes schreef:
Wat Ultimatum zegt: codetags afsluiten met [/code]

10 antwoorden

Gesponsorde links
Offline Ultimatum - 28/05/2009 14:33
Avatar van Ultimatum PHP expert Code block sluit je af met [/code] niet op de manier hoe jij het hebt gedaan.

Verder, wat voor errors krijg je? En zet een or die(myqsl_error) achter al je queries want je hebt het niet overal gebruikt.
Offline staic - 28/05/2009 14:41
Avatar van staic Nieuw lid ok, thnx. Veel overzichtelijker zo.

Wel het probleem is dat hij geen error meld. Wanneer ik dus op SUBMIT druk bij het updaten dan geeft hij mij de melding 'Database updated'. Wanneer ik dan ga kijken in mijn uitleesbestand dan zie ik dat er geen wijzigingen werden aangebracht.

:-(
Offline Ultimatum - 28/05/2009 14:56 (laatste wijziging 28/05/2009 14:57)
Avatar van Ultimatum PHP expert 1ste code block, regel 10: Zet hier or die(mysql_error()) achter zoals ik al in vorige post zei.
2de code block, regel 4:
  1. mysql_connect("localhost","raamdecora_db1","***") or die("Error: ".mysqlerror());

mysqlerror() is geen geldige php functie.
regel 10, zelfde verhaal als in eerste codeblock.

En zet boven elk bestand of in het bestand dat de rest include error_reporting(E_ALL);. Het beste is dat op regel 2 te doen net achter de php openingstag.

firmaID int(5) Nee Geen auto_increment. Wat doet Nee op deze regel? Is dat een standaard waarde?
Offline ArieMedia - 28/05/2009 15:15
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Uitlees.php:

while ($row = mysql_fetch_array($query)){

kan mysql_fetch_assoc() worden.
Met Array haal je veldnaam + nummer op ([0],['id]')
Assoc veldnaam (['id'])
Row nummer ([0])
Offline staic - 28/05/2009 15:19
Avatar van staic Nieuw lid
Ultimatum schreef:
1ste code block, regel 10: Zet hier or die(mysql_error()) achter zoals ik al in vorige post zei.
2de code block, regel 4: [..code..]
mysqlerror() is geen geldige php functie.
regel 10, zelfde verhaal als in eerste codeblock.

En zet boven elk bestand of in het bestand dat de rest include error_reporting(E_ALL);. Het beste is dat op regel 2 te doen net achter de php openingstag.

firmaID int(5) Nee Geen auto_increment. Wat doet Nee op deze regel? Is dat een standaard waarde?


Alles werd aangepast zoals je hierboven hebt beschreven. Ook heb ik dit aangepast in de codevoorbeelden bovenaan.

Die 'neen' bij firmaID int(5) is de 'neen van Null'.

Wat nu? Want het werkt nog niet.

Voorbeeld van het uitleesbestand (met link naar wijzig): http://www.raamdecoratie.be/uitlezen.php
Offline jc2 - 28/05/2009 15:24 (laatste wijziging 28/05/2009 15:28)
Avatar van jc2 PHP interesse Reactie nav Ultimatum:
De juiste php-functie is mysql_error($link). Dus met laag streepje.

Zie voorbeeldcode van php.net:
  1. <?php
  2. $link = mysql_connect("localhost", "mysql_user", "mysql_password");
  3.  
  4. mysql_select_db("nonexistentdb", $link);
  5. echo mysql_errno($link) . ": " . mysql_error($link). "\n";
  6.  
  7. mysql_select_db("kossu", $link);
  8. mysql_query("SELECT * FROM nonexistenttable", $link);
  9. echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
  10.  
  11. // OUTPUT:
  12. // 1049: Unknown database 'nonexistentdb'
  13. // 1146: Table 'kossu.nonexistenttable' doesn't exist
  14. ?>


Verder zou ik ipv klanten.firmaID gewoon `firmaID` gebruiken, omdat je zo en zo de tabel klanten al bewerkt.

Edit:
N.a.v. je post hierboven, merk ik op dat je pagina aangeeft dat je een include probeert van bestand 6135 wat niet bestaat.

Wanneer ik op wijzigen klik en iets wijzig krijg ik deze fout:
Citaat:
Notice: Undefined index: firmaID in /home/raamdecora/domains/raamdecoratie.be/public_html/klantenwijzigen.php on line 8


Dit wil zeggen dat in je database de kolom firmaID niet bestaat.
Offline staic - 28/05/2009 15:37
Avatar van staic Nieuw lid
jc2 schreef:
Reactie nav Ultimatum:
De juiste php-functie is mysql_error($link). Dus met laag streepje.

Zie voorbeeldcode van php.net:
[..code..]

Verder zou ik ipv klanten.firmaID gewoon `firmaID` gebruiken, omdat je zo en zo de tabel klanten al bewerkt.

Edit:
N.a.v. je post hierboven, merk ik op dat je pagina aangeeft dat je een include probeert van bestand 6135 wat niet bestaat.

Wanneer ik op wijzigen klik en iets wijzig krijg ik deze fout:
[..quote..]

Dit wil zeggen dat in je database de kolom firmaID niet bestaat.


Die include heb ik gedaan omdat Ultimatum mij dit vertelde. Waarom weet ik niet.

de kolom firmaID bestaat wel hoor!

Ik heb voor alle zekerheid even een screenshot genomen van mijn MYSQL -> http://www.raamdecoratie.be/screenshot.jpg
Offline jc2 - 28/05/2009 16:13
Avatar van jc2 PHP interesse Kijk anders ook eens in dit topic.
Misschien heb je er iets aan.
Offline Ultimatum - 28/05/2009 17:29 (laatste wijziging 28/05/2009 17:31)
Avatar van Ultimatum PHP expert Ah, ik zie nu dat mijn zin beetje ongelukkig was, ik bedoelde niet met include dat het ervoor moest.
Dus haal bij include error_reporting(E_ALL); even include weg, excuses voor dat.

Jc2 schreef:
Dit wil zeggen dat in je database de kolom firmaID niet bestaat.

Nee, dat heeft er niets mee te maken omdat het op de uitlees pagina staat en hij het als key in de array $_POST gebruikt, niet uit $row.

Misschien komt het omdat je dit hebt in je html.
  1. <td><input type="text" value="<?php echo $firmaID;?>" name="firmaID" disabled></td>

kan je voor de zekerheid even disabled eruithalen om te kijken of de notice dan weggaat? En waarom laat je firmaID zien, is een uniek id dus laat me niet nodig.

  1. $sql = "select * from klanten where firmaID = '$_GET[firmaID]'";


Staat firmaID in de url? En als je de waarde uit je formulier bedoeld moet je $_POST gebruiken ipv $_GET.
Offline staic - 29/05/2009 10:58
Avatar van staic Nieuw lid disabled er uit gehaald en het werkt! Ging inderdaad nog lang kunnen zoeken :-)

Bedankt aan iedereen voor de hulp!! 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.239s