Maximaal aantal karacters in textarea

Status
Niet open voor verdere reacties.

pcfixer

Terugkerende gebruiker
Lid geworden
3 jun 2001
Berichten
2.398
In php kan het ook, alleen dan wel achteraf. Je kunt het dan zeg maar controleren of een veld langer dan X aantal tekens bevat en dat een error message geven... zo:

PHP:
<?php

if(isset($_POST['submit']))
{
    if(strlen($_POST['mijntext']) > 500)
	{
		echo "Je hebt teveel tekens gebruikt. Maximaal 500!<br>\n";
        echo "Jij gebruikte ".strlen($_POST['mijntext'])." tekens!";
	}
	else
	{
		echo "Lengte veld goedgekeurd.";
	}
}
else
{
?>
<form action="<? echo $PHP_SELF ?>" method="post">
<textarea cols="40" name="mijntext" rows="10"></textarea>
  <br>
  <input type="submit" name="submit" value="Verstuur">
</form>
<?php
}
?>

Je ziet dat het in php zeer gemakkelijk gedaan is, echter het zal altijd achteraf moeten...
 
Bedankt voor je reactieen je duidelijke voorbeeld, ik ga het meteen uitproberen.
 
graag gedaan hoor :). Laat je even weten of het gelukt is? ;)
 
Sorry, ik heb nog geen tijd gehad, zal iig laten weten als het gelukt is. Ben nu op andere pc ook win2k aan het installeren. Eindelijk van de ellende van win 98 en win ME af
 
Het is me niet gelukt. Ik heb in mijn formulier staan dat hij naar een ander php document moet posten. In jou voorbeeld moet ik PHP_SELF posten. Is er nog een andere manier?
 
Geplaatst door miem
Het is me niet gelukt. Ik heb in mijn formulier staan dat hij naar een ander php document moet posten. In jou voorbeeld moet ik PHP_SELF posten. Is er nog een andere manier?

Ja hoor tuurlijk. Je kunt verder een gewone link gebruiken als action. Maar ik gebruikte $PHP_SELF omdat het controleergedeelte in hetzelfde bestand staat, PHP_SELF geeft gewoon het pad van het huidige bestand terug (laten we die controleer.php genoemd hebben, dan echo'ed hij gewoon het pad hier naar toe). Maar hiervoor kun je gewoon ook een normale link gebruiken. Echter is het handiger natuurlijk (met oog op evt. verhuizingen) om self te gebruiken zodat hij altijd goed uitkomt. Je kunt trouwens ook een combinatie maken:
PHP:
<? echo $PHP_SELF."?pagina=2" ?>
. Let wel op de ." na SELF. Dit is nodig om duidelijk te maken dat er nog iets achteraan komt (separator, scheidingsteken) dat deel daarvan uitmaakt. Ik heb er nu geen ';' achter gezet omdat dat bij enkelregelige code niet hoeft. Maar zodra je meerdere regels gaat gebruiken zal dit wel noodzakelijk zijn...
 
Ik ben waarschijnlijk vroeger blond geweest. maar ik krijg het niet gedaan. Ik zal het bestand wel mee sturen waarin de textarea staat.
 

Bijlagen

  • bijlage.txt
    2,6 KB · Weergaven: 31
Ik denk het ook ja :D :p. Want dit is wat je fout doet:

Je gaat gelijk op de eerste regel al beginnen met "&lt;?php". En dan komt eerst nog een zooitje javas c r i p ts erachteraan. Geen wonder dat PHP de logische parse error geeft "Parse error: parse error on line 2 at .....". Javas c r i p t is namelijk helemaal geen PHP (duh)... Dus herkent PHP het ook niet als geldige code en weet dus niet wat ie moet doen.

Zet daarom altijd pas de <?php als je zeker weet dat het alleen php code betreft binnen dat blok. PHP is immers een HTML embedded (ingesnestelde) scripting language en je bent vrij om zo vaak te switchen tussen html en php. PHP zal het niets uitmaken (snelheid wordt er niet minder op) en voor de gebruiker al helemaal niet. Dus dit zou ook gewoon kunnen:

PHP:
Ik <? echo "ben" ?> bezig met <? echo "ee"?>n website<? echo "!!" ?>

Dit is eigenlijk wel het onhandigste voorbeeld dat je kunt geven maar daarmee wil ik dus zeggen dat je beter vaak dan zelden heen en weer kunt switchen. Dit is voor ons verhaal hier vooral handig voor het formulier: dat kun je het beste weer in html doen aangezien daar toch geen php in voorkomt (op de $PHP_SELF na dan ;)).

Plaats dus alleen php blokken wanneer dat echt kan en nodig is (ook wel 'Minimale PHP' genoemd). Als je echt wilt dat alles 1 blok PHP is (kan overzichtelijker zijn, soms) moet je alles echo'en. Maar niet met dubbele aanhalingstekens maar maar met een enkele, omdat je soms voor bijv. action="bestand.php" ook dubbele gebruikt en zonder escape (\, dus \") denkt PHP dat de string afgesloten is en verwacht normaliter een ';' als eindteken. Alle tekens die daarna komen en PHP niet herkent als geldig geven een parse error terug. Kijk maar eens:

PHP:
<?php

	echo "<form action="bestand.php">;
?>

De color coding laat zien dat de 2e " geïntrepeteerd wordt als sluitingsteken en de 3e weer als openingsteken met als gevolg dat de ';' en de '>' normaal gesproken opgenomen zou worden in de echo. Doen we ditzelfde nu met een enkele, krijgen we geen errors:

PHP:
<?php

	echo '<form action="bestand.php">';
?>

Dit komt omdat als je enkele gebruikt als opening hij ook gesloten moet worden met een enkele, en zo ook met een dubbele. In dit voorbeeld reageert hij dus niet op de dubbele bij de action.

Nu zul je zeggen wat ideaal ik ga altijd de enkele gebruiken. Niet doen! Er zit namelijk ook een nadeel aan. Met enkelen kun je namelijk geen inline variabelen gebruiken... 2 Voorbeelden:

PHP:
<?php
	//Zal niet werken: Bij enkele worden variabelen niet vervangen
	//De output zal gewoon '... $naam' zijn!
	
	echo 'Hoi. Mijn naam is $naam<br>';
	
	//Werkt wel, mits $name eerder al gedefinieerd is en geglobaliseerd
	// (Functions only)
	
	echo "Hoi. Mijn naam is $naam<br>";
?>

Zo zie je maar weer dat de enkele niet geschikt zijn als je ook variabelen moet gebruiken. Maar voor simpele html wat je liever ook door php laat doen, is het wel handig aangezien je niet elke " hoeft te escapen :).

Phew.. Heel verhaal :D
 
Het is niet netjes hoor om mensen niet op de hoogte te houden ;) :p
 
Het is niet zo dat ik je niet op de hoogte hou, maar ik heb gewoon geen tijd gehad om me ermee bezig te houden. Ik heb alleen heel even wat geprobeerd en dat lukte dus niet en verder heb ik er nog geen tijd voor gehad/gemaakt. Deze week lukt ook niet, en het is allemaal toch een beetje te moeilijk voor me. Maar iig bedankt voor het helpen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan