Hallo allemaal,

Ik heb een klein probleempje. Ik heb een formulier. Alles gegevens worden keurig opgehaalt en zet het als value in elk vakje. Maar nu moet ik hem ook aanpassen en dan weer veranderen.
Ik heb deze code:
<?php
//Formuliertje

while($row=mysql_fetch_assoc($result)){
echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo '<p>';
echo 'Link naar afbeelding: <input name="Afbeelding" type="text" id="Afbeelding" value="'.$row['Afbeelding'].'" /><br />';
echo 'Titel: <input name="Titel" type="text" id="Titel" value="'.$row['Titel'].'" /><br />';
echo 'Link: <input name="Link" type="text" id="Link" value="'.$row['Link'].'" /><br />';
echo 'Beschrijving: <textarea rows="10" cols="50" name="Beschrijving" id="Beschrijving">'.$row['Beschrijving'].'</textarea><br />';
echo '<input type="submit" value="Wijzigen">';
echo '</p><hr />';
echo '</form>';
}

//Oke, veranderen die zooi...

$ID = mysql_real_escape_string($_POST['ID']);
$Link = mysql_real_escape_string($_POST['Link']);
$Titel = mysql_real_escape_string($_POST['Titel']);
$Afbeelding = mysql_real_escape_string($_POST['Afbeelding']);
$Beschrijving = mysql_real_escape_string(nl2br($_POST['Beschrijving']));
$query2 = "UPDATE portfolio SET Link='$Link', Titel='$Titel', Afbeelding='$Afbeelding', Beschrijving='$Beschrijving' WHERE ID='".$ID."'";
$result2 = mysql_query($query2) or die(mysql_error());
?>

Hij verandert vreemd genoeg niks in de database, en als ik hem dus opnieuw uitlees krijg ik hetzelfde als al in de database stond...
Kan iemand me helpen?
Gr. Luke
Zet eerst dit maar eens bovenin je script:
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
?>
Gedaan ;)
N.a.v. dat stukje kwam ik er achter dat $ID leeg was, omdat ik die niet in een post had staan. (duh!! ;))
Dat moest dus dit zijn:
<?php
//Formuliertje

while($row=mysql_fetch_assoc($result)){
echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo '<p>';
echo 'Link naar afbeelding: <input name="Afbeelding" type="text" id="Afbeelding" value="'.$row['Afbeelding'].'" /><br />';
echo 'Titel: <input name="Titel" type="text" id="Titel" value="'.$row['Titel'].'" /><br />';
echo 'Link: <input name="Link" type="text" id="Link" value="'.$row['Link'].'" /><br />';
echo 'Beschrijving: <textarea rows="10" cols="50" name="Beschrijving" id="Beschrijving">'.$row['Beschrijving'].'</textarea><br />';
echo '<input type="submit" value="Wijzigen">';
echo '</p><hr />';
echo '</form>';
}

//Oke, query gedaan, laat maar zien dan!

$ID = $row['ID'];
$Link = mysql_real_escape_string($_POST['Link']);
$Titel = mysql_real_escape_string($_POST['Titel']);
$Afbeelding = mysql_real_escape_string($_POST['Afbeelding']);
$Beschrijving = mysql_real_escape_string(nl2br($_POST['Beschrijving']));
$query2 = "UPDATE portfolio SET Link='$Link', Titel='$Titel', Afbeelding='$Afbeelding', Beschrijving='$Beschrijving' WHERE ID='".$ID."'";
$result2 = mysql_query($query2) or die(mysql_error());
?>

Maar dan werkt ie nog niet...
Je gebruikt een while. Zijn er dan meerdere resultaten? Zo ja, Dan pak je altijd het laatste 'ID".

Na een update kun je checken of er ook echts iets is veranderd met mysql_affected_rows().

Edit: Typo.
SanThe schreef op 10.02.2007 20:35
Je gebruikt een while. Zijn er dan meerdere resultaten? Zo ja, Dan pak je altijd het laatste 'ID".

En wat bedoel je daar mee? Ik vat 'm even niet ;)
En inderdaad zijn er meerdere resultaten
@Luke Banning: Dank je voor het netjes aanpassen van mijn typo in jouw quote. ;-))

Als je slechts één record uit de database krijgt, (en je weet dat zeker) dan gebruik je geen while-loop om de data op te halen. Krijg je echter meerdere records dan gebruik je een while.

Aangezien $ID = $row['ID']; NA de while staat, pakt dit altijd alléén het 'ID' uit het laatste record.
Oke, dus ik moet die regel verder naar boven in de code zetten, (boven het form. dus?) als ik het goed begrijp?
P.S. Ik zag nog een typo hoor :P
mysql_affercted_rows()

Zullen we daar maar even de r weghalen? ;)
<?php
mysql_affected_rows()
?>
dus :)
[edit]
SanThe, bedankt, dat werkt als een tierelier!
[/edit]
Luke Banning schreef op 10.02.2007 20:53
P.S. Ik zag nog een typo hoor :P

Oeps: Ik heb het snel aangepast. Thanks.
Luke Banning schreef op 10.02.2007 20:53
SanThe, bedankt, dat werkt als een tierelier!

Maak ik hier uit op dat het probleem is verholpen?
Haha, ja Lukeje is soms best scherp ;)
Maar het werkt, helemaal zoals het mijn bedoeling was! Bedankt!
[edit]
Voor het wijzen op een aantal typo's, haha, no problem :p
[/edit]
Graag gedaan, Jij ook bedankt.

Reageren