[PHP] Variabelen in textarea zetten lukt niet ?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Hey,
ik heb een deel van mijn admin geschreven en nu stuit ik op een probleem.
Ik open dan de pagina edit.php en daarin komen invoervelden met de waardes van bijv. het nieuwsbericht wat je wilt gaan editten.
Om deze waardes in het invoerveldje te krijgen gebruik ik dit stukje code;
code:
1
2
3
4
5
6
7
8
<input name=nieuwdate type=text id=nieuwdate value=");
print($record2->date);
echo(">
</p>
<p> 
<textarea name=nieuwmessage cols=50 rows=10 id=nieuwmessage value=");
print($record2->message); 
echo("></textarea>


Hier steekt het probleem z'n kop op; hij zet wél de variabele $record2->date in het invoerveldje 'nieuwdate', maar hij zet de variabele $record2->message NIET in de textarea!!

In DW geeft hij met colorcoding ook het woordje 'date' (na record2->) wel in donkerblauw aan, maar het woordje 'message' (na record2->) geeft hij gewoon in het zwart aan. Dit duidt, lijkt mij, op het feit dat hij message niet als variabele kan vinden terwijl hij wel word aangeroepen;

code:
1
2
3
4
5
6
7
8
9
10
<?
if (!$submit)
{
$db = mysql_connect("localhost", "peedy");
mysql_select_db("peedy",$db);
$sql2 = "select date, message from hoofdpagina where id = '$id' LIMIT 1";
$resultaat2 = mysql_query( $sql2 );
while ($record2 = mysql_fetch_object ( $resultaat2 ))
{
*blaablaablaat*


Weet iemand hoe dit kan en hoe dit opgelost kan worden :?

[ Voor 12% gewijzigd door Peedy op 07-12-2003 18:33 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Je sluit geen > bij je texteare tags....

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
een textarea vul je zo
code:
1
<textarea>TextTextText</textarea>

dus niet met de value attribuut

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
De meuk in een text-area staat na mijn weten niet in de value=attribuut, maar tussen de tags zelf :)

edit:
What ^^^ says :X

[ Voor 13% gewijzigd door Osiris op 07-12-2003 18:38 ]


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Verwijderd schreef op 07 december 2003 @ 18:36:
Je sluit geen > bij je texteare tags....
toch wel:

echo("></textarea>

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
In view-source (client-side) had je prima kunnen zien dat de datum wel in het value-veld staat, en het dus geen PHP maar een HTML fout is.

Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
1
Osiris schreef op 07 december 2003 @ 18:38:
De meuk in een text-area staat na mijn weten niet in de value=attribuut, maar tussen de tags zelf :)

edit:
What ^^^ says :X
Verrek... nog echt ook.... maar ik zou zweren dat hij het 5 minuten geleden wel zo deed... aargh.. KABOUTERTJES?!

Acties:
  • 0 Henk 'm!

Verwijderd

zo moet ie het doen


code:
1
2
3
4
echo "<input name=nieuwdate type=text id=nieuwdate value='".$record2->date."'>
</p>
<p> 
<textarea name=nieuwmessage cols=50 rows=10 id=nieuwmessage>".$record2->message."</textarea>";

[ Voor 21% gewijzigd door Verwijderd op 07-12-2003 18:40 ]


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Ok thnx allemaal..

Dan grijp ik nu dit topic aan om het probleem aan te snijden waar ik nu voor kom te staan;

De waardes die ik dus meestuur naar de submit ($nieuwdate en $nieuwmessage) pakt hij niet naar de pagina waar de submit naar toe moet gaan!
Sterker nog; ik krijg een witte pagina!
Ik zal ff kort de structuur laten zien;
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
if ($action=="edit")
{
*hier die meuk van bovenstaand probleem*
}
?>

<?
if ($submit)
{
$sqlfinal="UPDATE hoofdpagina SET date='$nieuwdate', message='$nieuwmessage' WHERE id='2'";
mysql_query( $sqlfinal ) or die("hier gaat wat fout");
echo ("De update is geschied");
}
?>

Als action heb ik; <form method=post action='edit.php?action=edit'>

Maar dat werkt dus niet! Wat moet ik hier bij action invoeren (ik neem aan dat daar de fout zit..)?

Acties:
  • 0 Henk 'm!

Verwijderd

check nou eerst of er dmv een echo tussen die if werkelijk geen output zich daar voor doet. Als je wel de output ziet dan klopt je mysql query niet.

Voor het controleren van je query:

code:
1
mysql_query("") or die(mysql_error());

Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Verwijderd schreef op 07 december 2003 @ 18:47:
check nou eerst of er dmv een echo tussen die if werkelijk geen output zich daar voor doet. Als je wel de output ziet dan klopt je mysql query niet.

Voor het controleren van je query:

code:
1
mysql_query("") or die(mysql_error());
Ok als ik die(mysql_error()); invul na de query zelf ($sqlfinal dus) dan geeft hij nog steeds gewoon een witte pagina.
Maar hier zocht ik niet naar... alles werkt wel goed want als ik die query in bijv. run.php zet en dan van de action 'run.php' maak gaat alles goed....

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Hoe word de pagina aangeroepen, en waar komt $submit vandaan?

Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
De pagina word aangeroepen door gewoon edit.php...

Submit komt natuurlijk uit de submit knop..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<form action='edit.php?action=edit' method=post>
<p>
<input name=nieuwdate type=text id=nieuwdate value=");
print($record2->date);
echo(">
</p>
<p> 
<textarea name=nieuwmessage cols=50 rows=10 id=nieuwmessage value=>");
print($record2->message); 
echo("</textarea>
</p>
<p>
<input type=submit name=submit value=Submit>
</p>
</form>


Zo doe ik het altijd, maar nu werkt het niet :?

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
en $_POST['submit']?

Ps. value= kan je gewoon weglaten in textarea ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Het probleem ligt hem idd in:
PHP:
1
if ($submit)

Aangezien $submit idd niet wordt gedefinieerd voor zo ver ik weet is deze dus automatisch 'false'.
Dit kan je oplossen door if($submit) te vervangen door:
PHP:
1
2
3
4
5
6
7
// We schrijven alleen de nieuwe data naar de database als de variabelen nieuwdate en nieuwmessage zijn verstuurt naar het PHP script.
if(isset($nieuwdate) && isset($nieuwmessage))
{
$sqlfinal="UPDATE hoofdpagina SET date='$nieuwdate', message='$nieuwmessage' WHERE id='2'";
mysql_query( $sqlfinal ) or die("hier gaat wat fout");
echo ("De update is geschied");
}

Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Krijg nou tieten... dat werkt !
Dat moest ik hebben! Thnx! _/-\o_ _/-\o_

Enige puntje is dat ik het al op een andere manier had gedaan (namelijk zoals in dat voorbeeld van action=run.php) en dat is naderhand zelfs handiger, aangezien ik DELETE en INSERT er ook nog bij moest maken...
Dat gedeelte van het admin systeem is nu iig klaar... woei! :D

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Jep, je kunt een GET of POST-var dus niet meer als $var gebruiken.. Lees ook http://www.php.net/manual/nl/security.registerglobals.php :)

Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 11:40
Verder is het netter isset te gebruiken ism if ($action == "bla") {, anders krijg je op e_all leuke warnings en het is niet netjes :)

[ Voor 14% gewijzigd door simon op 07-12-2003 19:39 ]

|>


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Mijn tips dan:

1) gebruik geen GET-vars in je action van een POST-form; het is gewoon netter en eenduidiger om ze op te nemen in een hidden input zodat je in je verwerking alleen met $_POST kan werken.
2) Vertrouw er nooit op dat de value van je submit button wordt meegegeven; als je in IE een form met enter submit wordt 'ie bijvoorbeeld al niet meegegeven. Je kan voor dat soort forms gewoon beter de request method uitvragen in je verwerkingsscript.
3) Gebruik nooit of te nimmer "submit" als name-attribuut - je overschrijft daarmee de javascript submit() method.

Blijkbaar zitten dit soort dingen er behoorlijk ingeramt bij PHP-ers, maar ik vind het echt verschrikkelijk elke keer als ik zie dat forms zo worden afgehandeld...

Vergeet ook niet om alles wat je aan content in een form plaatst daar eerst htmlentities of htmlspecialvars overheen te halen, en gebruik aub quotes om attributen in HTML. Ook dat zijn dingen waar je anders vroeg of laat nat op gaat.

[ Voor 29% gewijzigd door crisp op 07-12-2003 21:31 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 11:40
crisp schreef op 07 december 2003 @ 21:26:
[knip]htmlentities of htmlspecialchars overheen te halen, en gebruik aub quotes om attributen in HTML. Ook dat zijn dingen waar je anders vroeg of laat nat op gaat.
Overigens vervangen die beiden (geloof ik) soms wat teveel :)

|>


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Simon schreef op 07 december 2003 @ 21:48:
[...]

Overigens vervangen die beiden (geloof ik) soms wat teveel :)
htmlspecialchars ( ;) ) vervangt alleen de & " < en > door entities; dat lijkt me zeker niet teveel. Als je enkele quotes om je attributen gebruikt zou je ook de optie ENT_QUOTES mee moeten geven om de single quote ook naar een entity om te zetten. Let wel, ik heb het hier over content die je plaatst in form-elementen in een value-attribuut of in een textarea.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
crisp schreef op 07 december 2003 @ 21:26:
[...] en gebruik aub quotes om attributen in HTML. Ook dat zijn dingen waar je anders vroeg of laat nat op gaat.
Ja maar quotes in een echo veroorzaakt parse errors tot mijn grote verdriet :( :P

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

pEeDy16 schreef op 07 december 2003 @ 22:15:
[...]


Ja maar quotes in een echo veroorzaakt parse errors tot mijn grote verdriet :( :P
Dan doe je iets niet goed :P

Persoonlijk ben ik een groot voorstander van het gebruik van single quotes in scripting, en concatten van variabelen:

PHP:
1
echo '<input name="foo" type="text" value="'.htmlspecialchars($bar).'" />';


escapen is ugly en error-prone ;)

[ Voor 38% gewijzigd door crisp op 07-12-2003 22:21 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
pEeDy16 schreef op 07 december 2003 @ 22:15:
[...]


Ja maar quotes in een echo veroorzaakt parse errors tot mijn grote verdriet :( :P
Escapen :X
Pagina: 1