Hij pakt lange tekst niet...
Ik ben bezig om een input pagina te maken voor mijn site. Nu heb ik van alles al gemaakt om dit te doen en het werkt ook volledig. behalve een klein dingetje...
Als ik een tekst wil uploaden dan doet hij het goed. Totdat mijn tekst groter wordt dan dit:
Quote:
In de afgelopen weken hebben we een leuke afspraak gemaakt met Dennis van Duin en Lisa Hoogendoorn. Samen proberen zij een nieuwe strakke huisstijl neer te zetten voor de website van de Haastrechtloop. Hierbij proberen ze de folders, posters en website op elkaar te laten aansluiten. De website die u nu bezoekt is nog onder constructie.
Op deze website komt de nieuwste informatie te staan van de Haastrechtloop. Tevens worden er
Op deze website komt de nieuwste informatie te staan van de Haastrechtloop. Tevens worden er
Maar op de site moet een veel groter stuk tekst komen te staan. Dan geeft hij constant een error vanuit mijn code:
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
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
<form enctype="multipart/form-data" action=http://looptest.altervista.org/menu_nieuwsbericht.php method=post >
<table border="0" cellspacing="1" cellpadding="0">
<tr>
<td>Titel:</td>
</tr>
<tr>
<td><input type="text" name="news_header" size="127" > </td>
</tr>
<tr>
<td>Datum:</td>
</tr>
<tr>
<td><input type="text" name="news_datetime" value="<?php echo date("Y-m-d") ?>" size="19" ></td>
</tr>
<tr>
<td>Inhoud voorpagina:</td>
</tr>
<tr>
<td> <textarea name="news_front" rows="6" cols="129" ></textarea>
</td>
</tr>
<tr>
<td>Inhoud heel bericht:</td>
</tr>
<tr>
<td>
<textarea name="news_main" rows="12" cols="129"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="hidden" name="action" value="insert">
<input type="submit" name="Submit" value="OK">
</td>
</tr>
</table>
</form>
<table border="0" cellspacing="1" cellpadding="0">
<tr>
<td>Titel:</td>
</tr>
<tr>
<td><input type="text" name="news_header" size="127" > </td>
</tr>
<tr>
<td>Datum:</td>
</tr>
<tr>
<td><input type="text" name="news_datetime" value="<?php echo date("Y-m-d") ?>" size="19" ></td>
</tr>
<tr>
<td>Inhoud voorpagina:</td>
</tr>
<tr>
<td> <textarea name="news_front" rows="6" cols="129" ></textarea>
</td>
</tr>
<tr>
<td>Inhoud heel bericht:</td>
</tr>
<tr>
<td>
<textarea name="news_main" rows="12" cols="129"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="hidden" name="action" value="insert">
<input type="submit" name="Submit" value="OK">
</td>
</tr>
</table>
</form>
Deze code werkt tevens met:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if($action=="insert"){
$news_front=$_POST['news_front'];
$news_main=$_POST['news_main'];
$news_header=$_POST['news_header'];
$news_datetime=$_POST['news_datetime'];
$news_main=nl2br($news_main);
$news_main=eregi_replace("\n", "", $news_main);
$news_SQL_insert="INSERT INTO news (news_header,news_datetime,news_front,news_main) VALUES ('$news_header','$news_datetime','$news_front','$news_main')";
$bool=mysql_query($news_SQL_insert);
if($bool==1) echo "<SCRIPT LANGUAGE=JavaScript>window.alert('Bericht toegevoegd')</SCRIPT>";
if($bool<>1) echo "<SCRIPT LANGUAGE=JavaScript>window.alert('Bij het toevoegen van het bericht is een fout opgetreden')</SCRIPT>";
}
$news_front=$_POST['news_front'];
$news_main=$_POST['news_main'];
$news_header=$_POST['news_header'];
$news_datetime=$_POST['news_datetime'];
$news_main=nl2br($news_main);
$news_main=eregi_replace("\n", "", $news_main);
$news_SQL_insert="INSERT INTO news (news_header,news_datetime,news_front,news_main) VALUES ('$news_header','$news_datetime','$news_front','$news_main')";
$bool=mysql_query($news_SQL_insert);
if($bool==1) echo "<SCRIPT LANGUAGE=JavaScript>window.alert('Bericht toegevoegd')</SCRIPT>";
if($bool<>1) echo "<SCRIPT LANGUAGE=JavaScript>window.alert('Bij het toevoegen van het bericht is een fout opgetreden')</SCRIPT>";
}
Wie kan mij helpen en me uitleggen waarom hij geen grotere stukken tekst als hoofdbericht in mijn database zet?
Groeten,
Dennis
Gewijzigd op 27/11/2014 17:02:57 door Dennis van DUin
Waarschijnlijk heb je de database kolom 'news_main' (?) op varchar staan. De varchar kan namelijk maximaal 255 tekens opslaan. Stel deze kolom in op een longtext.
SQL code even gemaakt zodat jullie het kunnen zien:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
CREATE TABLE IF NOT EXISTS `news` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`news_header` varchar(120) NOT NULL,
`news_front` longtext NOT NULL,
`news_main` longtext NOT NULL,
`news_datetime` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_2` (`id`),
KEY `id` (`id`),
FULLTEXT KEY `news_front` (`news_front`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=26 ;
`id` int(11) NOT NULL AUTO_INCREMENT,
`news_header` varchar(120) NOT NULL,
`news_front` longtext NOT NULL,
`news_main` longtext NOT NULL,
`news_datetime` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_2` (`id`),
KEY `id` (`id`),
FULLTEXT KEY `news_front` (`news_front`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=26 ;
Gewijzigd op 27/11/2014 16:40:45 door - Ariën -
En welke error krijg je dan?
if($bool<>1) echo "<SCRIPT LANGUAGE=JavaScript>window.alert('Bij het toevoegen van het bericht is een fout opgetreden')</SCRIPT>";
Tevens zet hij de grotere tekst er niet meer in...
Toevoeging op 27/11/2014 16:42:08:
Gewijzigd op 27/11/2014 17:03:19 door Dennis van DUin
Kan je ook vertellen om welke error het gaat? En welke tekst je invoert?
Het is handiger om mysql_error() te gebruiken, om te achterhalen waarom je query stukloopt.
Gewijzigd op 27/11/2014 16:44:37 door - Ariën -
Je stopt de data gewoon onbeveiligd in de database.
Aar, mysql error kan ik er gewoon boven zetten of niet? Ik werk om eerlijk te zijn vrij weinig met dat maar meer met zelf checken wat er gebeurd?
Tsja het gaat om een nieuwsbericht die alleen door de gene met het admin account gemaakt kan worden... Is dat dan heel kwalijk of erg?
Groeten,
Dennis
Code (php)
1
2
3
2
3
<?php
if($bool<>1) { echo "Bij het toevoegen van het bericht is een fout opgetreden: ".mysql_error(); }
?>
if($bool<>1) { echo "Bij het toevoegen van het bericht is een fout opgetreden: ".mysql_error(); }
?>
Verder raad ik altijd aan om je aanpasbare variabelen ($_POST, $_GET, $_COOKIE, $_ENV) te beveiligen met mysql_real_escape_string().
Gewijzigd op 27/11/2014 17:14:03 door - Ariën -
Code (php)
1
Bij het toevoegen van het bericht is een fout opgetreden: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's en formulieren.
Groeten,
Dennis
Gebruik mysql_real_escape_string() over je $_POST variabelen, en het zou moeten werken.
Ik gebruik geen apostrof in de tekst maar het werkt nu wel. Wat ik alleen nu kwijt ben is mijn indeling met Enters. Hoe kan ik ervoor zorgen dat als ik in mijn input dus een lege regel maak ik deze ook zie als ik het inlaad?
nl2br().
.. en die functie dan alleen gebruiken bij het tonen van de tekst.
Bedankt beide ;)
Gebruik mysql_real_escape_string();
en ik raad aan te verdiepen in MySQLi, dat is nieuwere en persoonlijk betere versie