login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Update? Wat doe ik fout? (Opgelost)

Offline prinsrob - 10/06/2010 10:57
Avatar van prinsrobNieuw lid Hoi, heb even een simpel scriptje om data uit te lezen gemaakt. Nu moest daar een extra kolom toegevoegd worden die per persoon een update moet kunnen krijgen. Ik dacht toen, creeer die kolom en update deze simpel met een textveld. Nu krijg ik die waardes wel die inmiddels zijn ingevuld maar als ik deze wil wijzigen werkt het niet. Wat doe ik verkeerd?
  1. [code=php]
  2. <?php
  3.  
  4. $query = "SELECT pers_id, voornaam, voorvoegsel, achternaam, type, afdeling, functie, leidinggevende, ora, code FROM ft_form_2 ORDER BY (substr(ora,4 )+0) DESC, afdeling";
  5.  
  6.  
  7. $sql = mysql_query ($query) or die (mysql_error());
  8. if ($sql && mysql_num_rows($sql) >= 1) {
  9. echo "<table class=\"one\" border=\"1\" width=\"990\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">" ;
  10. echo "<tr><td><b>Pers_id</b></td>";
  11. echo "<td><b>Voornaam</b></td>";
  12. echo "<td><b>Voorvoegsel</b></td>";
  13. echo "<td><b>Achternaam</b></td>";
  14. echo "<td><b>Afdeling</b></td>";
  15. echo "<td><b>Functie</b></td>";
  16. echo "<td><b>ORA nummer</b></td>";
  17. echo "<td><b>Profiel</b></td></tr>";
  18.  
  19. while ($row= mysql_fetch_array ($sql)) {
  20. echo '<tr><td>'.$row['pers_id'].'</td>';
  21. echo '<td>'.$row['voornaam'].'</td>';
  22. echo '<td>'.$row['voorvoegsel'].'</td>';
  23. echo '<td>'.$row['achternaam'].'</td>';
  24. echo "<td>".$row['afdeling']."</td>";
  25. echo "<td>".$row['functie']."</td>";
  26. echo '<td><a href="detail.php?id='.$row['ora'].'">'.$row['ora'].'</a></td>';
  27. echo '<td><input name="code" type="text" id="code" value='.$row['code'].'></td></tr>';
  28.  
  29. } // end while
  30. }// end if
  31. $sql5="UPDATE ft_form_2 SET code='". $_POST['code']."'";
  32.  
  33. echo $sql5;
  34.  
  35. echo "</table>";
  36.  
  37. ?>
  38.  
  39. <input type="submit" name="Submit" value="Submit">
  40. </form>

19 antwoorden

Gesponsorde links
Offline Daiben - 10/06/2010 11:01
Avatar van Daiben Lid mysql_query($sql15);
Offline Abbas - 10/06/2010 11:14
Avatar van Abbas Gouden medaille

Crew .NET
Op regel 33 inderdaad, je moet je query niet echo'en maar doorgeven aan de methode mysql_query().
Offline prinsrob - 10/06/2010 11:23
Avatar van prinsrob Nieuw lid Ja gezien. Nu ik dat heb aangepast heb ik het zaakje naar de knoppen geholpen. Ik had er namelijk handmatig 5 ingevuld maar die zijn nu leeg..... Als ik dus een nieuwe waarde invul en op de knop drukt haalt hij weer alles leeg. Er klopt dus iets niet met de POST waarde. Ziet iemand dat?
Offline nick5556 - 10/06/2010 11:29
Avatar van nick5556 PHP beginner Controleer eerst of het formulier wel verzonden is met:
  1. if(isset($_POST['Submit'])) {
  2. // formulier is verzonden
  3. }

of met:
if($_SERVER['REQUEST_METHOD'] === 'POST') {
// formulier is verzonden.
}
Controleer daarna je $_POST waarde eens of die daadwerkelijk leeg is met
[code=php]
if(empty($_POST['code'])) {
echo 'Post waarde is leeg';

}
Offline prinsrob - 10/06/2010 11:45
Avatar van prinsrob Nieuw lid Inderdaad !! de Post waarde is leeg.... Dan de logische vraag: hoe krijg ik deze weer gevuld. Want als ik het op de database even als test wat invul haalt hij ze er wel uit. Omdat de waarde met Post leeg is zal hij alle records weer leegmaken. Eigenlijk moet dit dus ook niet mogen. Kan iemand mij op weg helpen om het dusdanig aan te passen dat hij alleen kijkt of het wel geupdate moet worden. Dus als er niets staat laten staan en als er wel wat staat wijzigen.
Offline larssy1 - 10/06/2010 11:50 (laatste wijziging 10/06/2010 11:51)
Avatar van larssy1 MySQL beginner Ik zie je ook nergens de <form> tags oproepen btw.


**
Ik zie je de <form> tag sluiten, maar niet openen 
Offline prinsrob - 10/06/2010 11:55 (laatste wijziging 10/06/2010 12:29)
Avatar van prinsrob Nieuw lid Jawel die staat er nog boven:

  1. <th width="162" scope="col"><img src="../img/logo.gif" width="117" height="103"></th>
  2. </tr></table>
  3. <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">


Probleem is dus dat de $POST waarde leegblijft.
Offline Daiben - 10/06/2010 12:38 (laatste wijziging 10/06/2010 12:39)
Avatar van Daiben Lid ik zie nergens een input veld met de name code zet even bovenaan neer var_dump($_POST) of print_r($_POST)
Offline nick5556 - 10/06/2010 13:02
Avatar van nick5556 PHP beginner @Daiben
  1. echo '<td><input name="code" type="text" id="code" value='.$row['code'].'></td></tr>';


Probeer eens te controleren of er wel een post meegegeven is aan de pagina met
  1. if($_SERVER['REQUEST_METHOD'] === 'POST') {
  2. // hier update uitvoeren.
  3. }
Offline prinsrob - 10/06/2010 13:25 (laatste wijziging 10/06/2010 14:27)
Avatar van prinsrob Nieuw lid
nick5556 schreef:
@Daiben [..code..]

Probeer eens te controleren of er wel een post meegegeven is aan de pagina met
[..code..]


Had ik ook al gecontroleerd maar blijft hetzelfde. Gek genoeg merk je dus wel dat hij iets doet maar gooit alles op leeg.
De echo van jou blijft dus ook zeggen dat er geen waarde is.
Offline nick5556 - 10/06/2010 15:35
Avatar van nick5556 PHP beginner Voeg dit eens toe boven aan je script:

  1. echo $_POST['code'];
Offline prinsrob - 10/06/2010 15:52 (laatste wijziging 11/06/2010 08:46)
Avatar van prinsrob Nieuw lid
nick5556 schreef:
Voeg dit eens toe boven aan je script:

[..code..]


Dan is alles leeg op de submitbutton na. Met andere woorden laat hij dus ook het overzicht niet meer zien.
Offline Jelmerholland - 11/06/2010 10:10 (laatste wijziging 11/06/2010 10:13)
Avatar van Jelmerholland PHP beginner Maak van dit '>= 1' in je if-fucntie is '!= 0' Want eigenlijk wil jij gewoon dat ie NIET gelijk is aan 0, lager zal die toch niet komen. Dan houd je 't iets overzichtelijker en zie je beter de eis.

================================================================
  1. echo '<td><input name="code" type="text" id="code" value='.$row['code'].'></td></tr>';

Je zet de echo in enkele quotes, dan de name="" in dubbele quotes en vervolgens zet je de value='' weer in enkele quotes. Je moet 't jezelf makkelijk maken en 1 methode gebruiken. De goede

Verandere line 26 en 27 dus even naar:
  1. echo "<td><a href=\"detail.php?id=" . $row['ora'] . "\">" . $row['ora'] . "</a></td>";
  2. echo "<td><input name=\"code\" type=\"text\" id=\"code\" value=\"" . $row['code'] . "\"></td></tr>";

Zo zou die sowieso al moeten kloppen. Probeer 't nou nog is? Als 't goed is krijg je nou GEEN error, maar je komt een heel eind.

================================================================
En vervolgens zet je dit scriptje helemaal bovenin je pagina




================================================================
Zo zou je toch al een heel eind moeten komen volgens mij.

================================================================
Mocht je er nou nog niet uitkomen.. dan heb ik denk ik je oplossing 
  1. $sql5="UPDATE ft_form_2 SET code='" . $_POST['code'] . "'";
  2. echo $sql5;


Waar voer je je update uit eigenlijk? misschien een mysql_query() gebruiken? (A)

================================================================

En dan nog een beveiligings kwestie: Jij zet zomaar een $_POST['code'] in de database.. NOOIT, maar dan ook NOOIT doen.
http://php.net/...string.php --> mysql_real_escape_string
Offline prinsrob - 11/06/2010 10:24
Avatar van prinsrob Nieuw lid Helaas, ook nu blijft die POST waarde leeg. Denk dat ik iets anders moet gaan verzinnen.
Offline Jelmerholland - 11/06/2010 11:35
Avatar van Jelmerholland PHP beginner Ik weet 't al. De input waar je name="code" hebt. Die sluit je niet af ;)

Maak daarvan: <input type="" value="" name="" />
Dan werkt 't wel denk ik
Offline Jurgo - 11/06/2010 13:22
Avatar van Jurgo PHP interesse Moet je geen WHERE clause gebruiken in je update?
Offline Jelmerholland - 11/06/2010 13:54
Avatar van Jelmerholland PHP beginner Het gaat 'm nu niet om de update ;) het gaat er om dat z'n $_POST['code'] leeg blijft
Offline Jurgo - 11/06/2010 14:34 (laatste wijziging 14/06/2010 09:39)
Avatar van Jurgo PHP interesse Okee waar wordt het formulier dan gestart? waar staat je method?

?? we horen niets meer van je ?? is het al opgelost?
Offline prinsrob - 16/06/2010 16:39
Avatar van prinsrob Nieuw lid Prbleem is inmiddels opgelost. Heb een goeie vriend om raad gevraagd.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.341s