Apostrof en tekstvakken
Als beginner op het gebied van PHP een vraag over het bekende verschijnsel bij apostrofjes.
Op een adminpagina heb ik een formulier met een gewoon tekstvak (textarea) en gewone éénregelige inputs (edit.php).
Bij de verwerking (submit.php) maak ik gebruik van de "mysql_real_escape_string" functie.
Zodra ik iets typ met een ' apostrof ' dan krijg ik nu geen errors meer, en ook als de teksten op de website verschijnen dan zijn de teksten keurig voorzien van apostrofjes....
..MAAR als ik de tekst weer wil bewerken dan zie ik dat bij de input de regel wordt afgebroken. En dat terwijl de textarea nergens last van lijkt te hebben.
Mijn vraag: hoe kan het dat bij de input de regel wordt afgebroken, en bij de textarea niet? Hoe kan ik dit verhelpen?
Alvast mijn dank! :)
Tymo
Edit.php (hier breekt de tekst af bij de apostrof)
Quote:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
$id = $_GET['id'];
$query = mysql_query("SELECT * FROM artikelen WHERE id LIKE '$id'") or die (mysql_error());
$var = mysql_fetch_object($query);
echo "<input name='titel' type='text' value='". $var->titel ."' size='100'>";
?>
$id = $_GET['id'];
$query = mysql_query("SELECT * FROM artikelen WHERE id LIKE '$id'") or die (mysql_error());
$var = mysql_fetch_object($query);
echo "<input name='titel' type='text' value='". $var->titel ."' size='100'>";
?>
Submit.php
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?
// Database gegevens includen.
include('../../dbconnect_nieuws.php');
$id=$_GET['id'];
$titel=$HTTP_POST_VARS['titel'];
$bericht=$HTTP_POST_VARS['bericht'];
$dag=$HTTP_POST_VARS['dag'];
$auteur=$HTTP_POST_VARS['auteur'];
$maand=$HTTP_POST_VARS['maand'];
$jaar=$HTTP_POST_VARS['jaar'];
$categorie=$HTTP_POST_VARS['categorie'];
$thematisch=$HTTP_POST_VARS['thematisch'];
$actief=$HTTP_POST_VARS['actief'];
$link1=$HTTP_POST_VARS['link1'];
$link2=$HTTP_POST_VARS['link2'];
$link3=$HTTP_POST_VARS['link3'];
$link4=$HTTP_POST_VARS['link4'];
$url1=$HTTP_POST_VARS['url1'];
$url2=$HTTP_POST_VARS['url2'];
$url3=$HTTP_POST_VARS['url3'];
$url4=$HTTP_POST_VARS['url4'];
$extentie1=$HTTP_POST_VARS['extentie1'];
$extentie2=$HTTP_POST_VARS['extentie2'];
$extentie3=$HTTP_POST_VARS['extentie3'];
$extentie4=$HTTP_POST_VARS['extentie4'];
mysql_query ("UPDATE artikelen SET
titel = '" . mysql_real_escape_string( $_POST['titel'] ) . "',
bericht = '" . mysql_real_escape_string( $_POST['bericht'] ) . "',
dag= '".$dag."',
maand= '".$maand."',
jaar= '".$jaar."',
auteur= '" . mysql_real_escape_string( $_POST['auteur'] ) . "',
thematisch= '".$thematisch."',
categorie= '".$categorie."',
link1= '".$link1."',
link2= '".$link2."',
link3= '".$link3."',
link4= '".$link4."',
url1= '".$url1."',
url2= '".$url2."',
url3= '".$url3."',
url4= '".$url4."',
extentie1= '".$extentie1."',
extentie2= '".$extentie2."',
extentie3= '".$extentie3."',
extentie4= '".$extentie4."',
actief= '".$actief."' WHERE id = '".$id."'") or die(mysql_error());
echo "" ;
?>
// Database gegevens includen.
include('../../dbconnect_nieuws.php');
$id=$_GET['id'];
$titel=$HTTP_POST_VARS['titel'];
$bericht=$HTTP_POST_VARS['bericht'];
$dag=$HTTP_POST_VARS['dag'];
$auteur=$HTTP_POST_VARS['auteur'];
$maand=$HTTP_POST_VARS['maand'];
$jaar=$HTTP_POST_VARS['jaar'];
$categorie=$HTTP_POST_VARS['categorie'];
$thematisch=$HTTP_POST_VARS['thematisch'];
$actief=$HTTP_POST_VARS['actief'];
$link1=$HTTP_POST_VARS['link1'];
$link2=$HTTP_POST_VARS['link2'];
$link3=$HTTP_POST_VARS['link3'];
$link4=$HTTP_POST_VARS['link4'];
$url1=$HTTP_POST_VARS['url1'];
$url2=$HTTP_POST_VARS['url2'];
$url3=$HTTP_POST_VARS['url3'];
$url4=$HTTP_POST_VARS['url4'];
$extentie1=$HTTP_POST_VARS['extentie1'];
$extentie2=$HTTP_POST_VARS['extentie2'];
$extentie3=$HTTP_POST_VARS['extentie3'];
$extentie4=$HTTP_POST_VARS['extentie4'];
mysql_query ("UPDATE artikelen SET
titel = '" . mysql_real_escape_string( $_POST['titel'] ) . "',
bericht = '" . mysql_real_escape_string( $_POST['bericht'] ) . "',
dag= '".$dag."',
maand= '".$maand."',
jaar= '".$jaar."',
auteur= '" . mysql_real_escape_string( $_POST['auteur'] ) . "',
thematisch= '".$thematisch."',
categorie= '".$categorie."',
link1= '".$link1."',
link2= '".$link2."',
link3= '".$link3."',
link4= '".$link4."',
url1= '".$url1."',
url2= '".$url2."',
url3= '".$url3."',
url4= '".$url4."',
extentie1= '".$extentie1."',
extentie2= '".$extentie2."',
extentie3= '".$extentie3."',
extentie4= '".$extentie4."',
actief= '".$actief."' WHERE id = '".$id."'") or die(mysql_error());
echo "" ;
?>
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$var->titel = "foto's"
echo "<input name='titel' type='text' value='". $var->titel ."' size='100'>";
//Output: <input name='titel' type='text' value='foto's' size='100'>
echo '<input name="titel" type="text" value="' . $var->titel . '" size="100">';
//Output: <input name="titel" type="text" value="foto's" size="100">
?>
$var->titel = "foto's"
echo "<input name='titel' type='text' value='". $var->titel ."' size='100'>";
//Output: <input name='titel' type='text' value='foto's' size='100'>
echo '<input name="titel" type="text" value="' . $var->titel . '" size="100">';
//Output: <input name="titel" type="text" value="foto's" size="100">
?>
Het werkt nu :)
Ik schrijf alle echo's tussen aanhalingstekens. Nu heb jij deze tussen apostrofjes geplaatst, maar wat is precies het verschil? Zijn er regels voor dat het de ene keer
echo 'dit en dat'
en de andere keer
echo "dit en dat" is?
Toevallig vandaag mee zitten stoeien. Zoals Ger het oplost werkt het wel voor de " (dubbel quote) maar volgens mij weer niet voor de ' (enkele quote). htmlentities biedt de oplossing. Voor het tonen dus even die functie eroverheen halen en je bent de man.
Dank! Ik heb weer huiswerk voor nu. Ik heb vaker gehoord dat htmlentities bij dit soort dingen helpt, ik denk dat ik het in de toekomst echt eens moet gaan toepassen..
Ben het nooit eerder tegengekomen als ik eerlijk ben, toevallig vandaag dus, en ik loop toch al wat jaartjes mee :)