Partyflock
 
Forumonderwerp · 644257
136x bekeken
Waarschuw beheerder
donateur
kheb een functie geschreven voor het genereren van een input in html (misschien niet erg nuttig maar zat gewoon ene beetje te kloten)

en nu voer ik de volgende code uit:
<?
require("input.php");
echo "Test:" .@TextBox(test, 23);

?>

maar in mn browser komt ipv test: [textbox], [textbox] test: te staan.. precies andersom dus.. hoe kan ik dit verhelpen (aangezien ik de functie toch uit ga breiden)
dit issem:
// TextBox(naam, lengte(optioneel)

function TextBox($Name, $MaxLength)
{
if (!$Name)
{
echo "Geen geldige textbox";
exit;
}
if (!$MaxLength)
{
echo "<INPUT type=\"text\" name=\"". $Name . "\">";
exit;
}
else
{
echo "<INPUT type=\"text\" name=\"". $Name . "\" maxlength=\"" .$MaxLength. "\">";
}
}
 
Artiest Bernd
Waarschuw beheerder
donateur
:vaag:
 
Waarschuw beheerder
donateur
haha cker logisch :P
Waarschuw beheerder
donateur
Het ligt op ghet puntje van mn tong.

(i-u-itri]bnyuj82636 misschien? ;P
laatste aanpassing
 
Waarschuw beheerder
donateur
Nou echt.. ik wou het net zeggen!!!
Waarschuw beheerder
donateur
als je het niet begrijpt reageer dan gewoon niet :P
Waarschuw beheerder
donateur
zo werkt als een trein thanks man!
 
Waarschuw beheerder
An infinite number of monkeys typing into an infinite number of computers would eventually produce Windows XP....... and they did....

hihhi... lol...
 
Waarschuw beheerder
donateur
Oke sorryyy B)
 
Waarschuw beheerder
donateur
Ik wou gewoon even intelligent overkomen,
maar niet gelukt dus :P
Waarschuw beheerder
Vooruit dan maar weer he, ik zal het antwoord maar weer geven, alhoewel het niet echt makkelijk uit te leggen is.

De regel:

echo "Test:" .@TextBox(test, 23);

is belangrijk.

Echo is een commando, aan echo geef je een parameter mee met de String die geprint moet worden. De . zorgt voor de concatenatie van de verschillende Strings die je meegeeft. Uiteindelijk gaat het echter maar om 1 string die meegeven wordt.

Zodra je het commando aanroept moet er eerst dus van alle delen 1 parameter gemaakt worden. Hiervoor moet "Test:" aan de returnwaarde van de functie TextBox geplakt worden. Om te weten welke returnwaarde TextBox heeft, moet deze functie uitgevoerd worden.

Tijdens het uitvoeren van Textbox print je de HTML code, deze komt nu dus VOORDAT de echo functie uitgevoerd was (die is nog bezig de returnvalue van TextBox aan Test: te plakken). Nadat de functie TextBox geeindigd is wordt de returnwaarde van TextBox (niets dus, je hebt geen return commando) aan Test: geplakt.

Het probleem zit hier in een denkfout die je maakt. Jij denkt dat de output van TextBox achter Test: geplakt wordt. Als je dat wil, dan moet je de functie deze String laten returnen met het return commando. De code wordt dan als volgt:

<?
require("input.php");
echo "Test:" .@TextBox(test, 23);

?>
// TextBox(naam, lengte(optioneel)

function TextBox($Name, $MaxLength)
{
if (!$Name)
{
echo "Geen geldige textbox";
exit;
}
if (!$MaxLength)
{
return "<INPUT type=\"text\" name=\"". $Name . "\">";
exit;
}
else
{
return "<INPUT type=\"text\" name=\"". $Name . "\" maxlength=\"" .$MaxLength. "\">";
}
}
?>


PS: Je If-else constructie zit een beetje vreemd in elkaar. Waarom exit in de 2e if als je daarna else doet?
 
Waarschuw beheerder
Jups, php.. volgens mij heeft mijn voorganger je wel geholpen nu. Als je er echt niet uit komt weet je me te vinden
Waarschuw beheerder
donateur
narotic:) thanx again, dit was echt mn laatste vraag :P