Hoi,

Ik heb een nieuwsscriptje en als ik de drie velden van mijn nieuwsbericht intyp ( titel, intro, tekst ) dan gaat die informatie prima naar de database mbv ".mysql_real_escape_string($_POST['titel'])." . Daar zit alles snor dus (denk ik).

Als ik dan een CMS overzichtje laat zien (lijst) van mijn nieuwsitems, alleen titel en datum, dan haalt hij de gegevens prima uit de DB.
Rechts van alle titels heb ik het knopjes verwijderen. Ik kan alle berichten verwijderen, behalve als er een ' in de titel staat. Zonder ' tekens kan ik alles prima verwijderen.

Iemand een idee hoe ik dit op kan lossen?
@sanThe:

Geprobeerd, ligt het niet aan. De code werkt prima maar het probleem is niet verholpen. Voor mijn gevoel gaat het echt mis bij het verwijderen uit de db
SanThe schreef op 26.09.2006 09:50
Tussen enkele quotes heeft escapen geen effect.


Niet altijd! Dit gaat bijvoorbeeld fout:
<?php
$str = 'Wat eet je 's morgens?';
echo $str;
?>
Een enkele quote moet je wel degelijk escapen binnen enkele quotes.
Marije schreef op 26.09.2006 10:07
@sanThe:

Geprobeerd, ligt het niet aan. De code werkt prima maar het probleem is niet verholpen. Voor mijn gevoel gaat het echt mis bij het verwijderen uit de db

Ja, dus echo je query naar het scherm en doe aan foutafhandeling:
<?php
if (!mysql_query ($sql)) {
trigger_error (mysql_error ());
echo '<pre>';
echo htmlentities ($sql);
echo '</pre>';
}
?>
ok ik had het iets beter uit moeten leggen... hoe komt niet eens bij de query. Als ik op de knop verwijderen druk (en er zit een ' oid in de titel) dan gebeurd er helemaal niets. Geen melding (zit een JS askconfirm tussen) niets.... wellicht dat het stukje js er mee te maken heeft?
misschien gaat het fout in de HTML, geef eens een stukje van de geparste html.. (of eventueel een link naar de site)
<a href=\"javascript:askConfirm('Wilt u $row[titel] verwijderen?','$PHP_SELF?show=del&id=$row[id]');\"><center><img src=\"../img/icon_delete.jpg\" width=\"32\" height=\"30\" border=\"0\"></center></a>

ik vermoed dat het daar of hier:

<script language="JavaScript">
function askConfirm(txt,url) {
if (confirm(txt) == true) {
document.location=url
return true
}
}
</script>

verkeerd gaat....

dat javascript stukje is wel goed, alleen ik vraag me nu af hoe je dat bovenstukje op je schem echo't.. Probeer dat eens in je php-code te veranderen naar:

<?php
echo '<a href="'.$_SERVER['PHP_SELF'].'?show=del&id='.$row['id'].'" onClick="window.confirm(\'Wilt u '.$row['titel'].' verwijderen?\');"><img src="../img/icon_delete.jpg" width="32" height="30" border="0" align="center" /></a>';
?>

edit: typo

edit: ik denk dat er nu geen stripslashes over dat $row['titel'] heen moet bij het confirm, omdat dat ook in een javascript stukje staat ;)
dan krijg ik allemaal parse errors :)
oh edit :) ik tjek ff
het bericht wordt iig verwijderd! haha alleen geen melding meer maar dat is misschien wel logisch aangezien je href="" direct de file verwijderd en daarna vraagt of je hem wilt verwijderen? (al krijg ik ook die melding niet ;))

Reageren