Archief - tekstveld doorsturen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Carrion

Legacy Member
Ahoi,

Ben aan een klein projectje bezig om m'n php kennis wat op te scharen :p Maar der is 1 ding wat mij niet wil lukken, ik gebruik dus een formulier waarin een tekstvak gebruikt moet worden, dit wordt daarna via php tussen phpbb codes gezet, en alles kukt maar er is 1 klein ding:

Er is 1 textarea waarin mensen dus hun inhoud kunnen plaatsen, maar als in de textarea de inhoud er zo uit ziet:

regel 1
regel 2
regel 3

komt dit er met php uit als dit:

regel1 regel2 regel3

Is er een code ofzo waardoor het er in php ook uitkomt als

regel 1
regel 2
regel 3

Op websites als php.net vond ik niet direct terug wat ik nodig had :p

grtz

Carrion

Legacy Member
Hoe kan ik die dan toepassen, dit is de code die ik gebruik

PHP:
if($_POST['lijst'] == "") {
		print ("");}

	else print("[code]{$_POST['lijst']}[/code]") ;

never mind, het is gelukt :p

Curahee Q

Legacy Member
Ik zie hier toch wel minstens 2 fouten op 3 regels code.

Stel dat ik een spatie in je tekstvak invul dan zal hij wel die spatie tussen code-tags zetten. Aan de andere kant is dat else-statement ook totaal overbodig.
Daar bovenop komt ook nog dat je variabele best buiten quotes haalt en de html tussen single quotes plaatst.

PHP:
<?php
$lijst = $_POST['lijst'];

if(trim($lijst) != "") {
	echo '[code]' . $lijst . '[/code]';
}
?>

Als je de reden voor bepaalde dingen wil weten vraag je het maar.

Carrion

Legacy Member
wat doet die !trim dan precies? En die variabele tussen quotes is gewoon hoe ik het geleerd heb op school.

Curahee Q

Legacy Member
Ik ben nu een artikel aan het schrijven voor op mijn website waar het staat uitgelegd waarom men deze best buiten de quotes kan halen. Ik laat de link hier nog wel achter.

trim() gaat de spaties aan de linker en rechterkant van de string weghalen. Hierdoor kan men in uw tekstveld geen spatie zetten. In uw code kan men dat wel. Het uitroepteken is het inverse.

Ik zie net dat ik een klein foutje had getypt. Het moest trim($lijst) != "" en niet !trim($lijst) == "".

Wat er dus staat is
if trim($lijst) is niet gelijk aan ""

Hopelijk begrijp je het nu al iets beter.

Nog een kleine tip hoe je zeer gemakkelijk een phpfunctie kan opzoeken
1. typ in je adresbalk http://www.php.net/
2. typ daar achter de php-functie dus http://www.php.net/trim
3. druk op enter

[EDIT]
Hier de link naar het artikel http://it-sourcecode.com/webdesign/02072010/single-quotes-vs-double-quotes.html

Gurdt

Legacy Member
@Curahee Q: heel erg nuttig je artikel, maar mag ik je vragen waarom je bij string-variabelen niet ' gebruikt en wel "? Wordt die dan ook niet geëvalueerd. Met andere woorden:
Code:
$b = 999;
$a1 = "$b";
$a2 = '$b';
Hier klopt het toch dat $a1 "999" zal zijn, en $a2 gewoon "$b" of niet?

Curahee Q

Legacy Member
Ja feit, dat moet ik eigenlijk aanpassen en is iets wat eigenlijk niet klopt met de uitleg die ik schrijf.

Maar wat jij hier dus schrijft is gewoon fout. Variabele zet je niet tussen quotes en al zeker niet bij een gewone toewijzing. Wat er dus zou moeten staan is
Code:
$b = 999;
$a1 = $b;
$a2 = $b;
Het klopt inderdaad dat $a2 gewoon $b bevat en $a1 de waarde 999. Ik weet niet in hoeverre je bekent bent met bijvoorbeeld java. Daar schrijf je toch ook niet.
Code:
String b = "999";
String a1 = "" + b + "";
Of
Code:
int b = 999;
int a1 = Integer.parseInt("" + b + "");

Gurdt

Legacy Member
Curahee Q zei:
Ja feit, dat moet ik eigenlijk aanpassen en is iets wat eigenlijk niet klopt met de uitleg die ik schrijf.

Maar wat jij hier dus schrijft is gewoon fout. Variabele zet je niet tussen quotes en al zeker niet bij een gewone toewijzing. Wat er dus zou moeten staan is
Code:
$b = 999;
$a1 = $b;
$a2 = $b;
Het klopt inderdaad dat $a2 gewoon $b bevat en $a1 de waarde 999. Ik weet niet in hoeverre je bekent bent met bijvoorbeeld java. Daar schrijf je toch ook niet.
Code:
String b = "999";
String a1 = "" + b + "";
Of
Code:
int b = 999;
int a1 = Integer.parseInt("" + b + "");

Ik zie echt geen verschil tussen jouw $a1 en $a2 hoor...
Ik ken java ja, wat jij daar doet is b van het type string maken en daardoor hoef je niet meer te casten. Maar bij dat php-voorbeeld is $b gewoon een getal en wil ik van $a1 en $a2 een string maken :)

Curahee Q

Legacy Member
Ja oké mijn voorbeeld van $a1 en $a2 is inderdaad slecht.

In principe bestaat er in php niet zoiets als een int en een string. Als je een getal hebt, in dit geval $b, kan je die gewoon echo'en

Dit is bijvoorbeeld perfect mogelijk
PHP:
<?php
$b = 999;
$a = $b;

echo substr($a, 0, 2);
?>

Er hoeft dus helemaal geen cast te gebeuren of dergelijke. Het is gewoon absurd om te schrijven

PHP:
<?php
$b = 999;
$a = "$b";
?>

want volgende is ook perfect mogelijk
PHP:
<?php
$b = 999;
$a = "$b";

echo $a+3;
?>

Dus php zet zijn waardes automatisch om naargelang de context waar de variabele instaat.

Gurdt

Legacy Member
Wel een beetje helemaal langs de kwestie waar ik het om had :) het ging erom dat je die dubbele quotes gebruikte waardoor je variabele toch gescand wordt. Ik leg nog eens uit:
Code:
$b = 999; // maakt niet uit of dit een integer is ofzo, types bestaan niet

$a = "$b"; // nu gaat diejen $b gescand worden dus geresolved
echo $a; // geeft 999

$a = '$b'; // hier wordt niets geresolved
echo $a; // geeft letterlijk $b
Ik weet wel dat je $a = $b mag zeggen en dat $a dan gewoon 999 voorstelt, maar het gaat om het geval waar je $a = '$b' zegt, $a is nu gewoon letterlijk de string "$b" toch of niet? Als je achteraf dan $a = $a + 3 zal doen zal het dan niet resulteren in 3 gewoon, ipv 1002?

Curahee Q

Legacy Member
Sorry, komt door de warmte zeker ;).

Dan bevat hij inderdaad gewoon de string $b en niet de waarde. En dat resulteert inderdaad ook gewoon in 3.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan