Beste mensen,

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:
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


Maar op de site moet een veel groter stuk tekst komen te staan. Dan geeft hij constant een error vanuit mijn code:

<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>


Deze code werkt tevens met:
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>";

}


Wie kan mij helpen en me uitleggen waarom hij geen grotere stukken tekst als hoofdbericht in mijn database zet?

Groeten,
Dennis
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.
Helaas is dat niet mijn fout, want ik heb ze beide op longtext staan...

SQL code even gemaakt zodat jullie het kunnen zien:

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 ;
Die mijn code geeft:

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...

[size=xsmall]Toevoeging op 27/11/2014 16:42:08:[/size]
Beste Dennis, we hebben ook een [code][/code]-tags die je voor scripts in dit topic kan gebruiken. Dan is de boel in ieder geval beter leesbaarder.

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.
Je stopt de data gewoon onbeveiligd in de database.
Okee dat is gebeurd zie ik nu ;) Dat scheelt weer.

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
Makkelijke weg door het aanpassen van lijn 15 in dit (alert weggelaten):


<?php
  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().
Hij geeft me dan de volgende melding:

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
Ah, hij valt over een apostrof.

Gebruik mysql_real_escape_string() over je $_POST variabelen, en het zou moeten werken.

Reageren