variable text opslaan in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen Verstraete

Jeroen Verstraete

11/06/2011 15:36:01
Quote Anchor link
Hallo

Ik kan al een heel klein beetje php, maar ik stuit op het volgende probleem:

Ik wil op m'n site een textvak maken waarin ze iets kunnen zetten, en dit kan ik dan zien op de admin pagina.
Alles werkt alleen de text niet, de text wordt niet opgeslagen in de database

Ja, ik moet nog een button maken die er voor zorgt dat het pas na het typen verzonden wordt, maar zelfs de value='test' komt niet op m'n database...
Quote:
<p>
<input type="text" NAME="text" style="border: solid 1px; width:100%; height:20px; background-color:#CCCCCC; border-color:#666666;" VALUE= 'test' /><br /><br />
</p>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?

mysql_query("INSERT INTO `message` (user,text,date) VALUES ( '".$_SESSION['user']."', '".$text."' , '".date("d/m/Y")."') ") OR DIE(mysql_error());
?>


nu dus de vraag, aan wat moet $text gelijk zijn?


mvg,
Jeroen
 
PHP hulp

PHP hulp

05/08/2020 09:58:55
 
- Ariën -
Beheerder

- Ariën -

11/06/2011 15:37:27
Quote Anchor link
$text vervangen door:

$_POST['text']
 
Arjan -

Arjan -

11/06/2011 15:38:10
Quote Anchor link
Na het submitten van een formulier worden de waarden van de formuliervelden opgeslagen in de $_POST array (uitgezonderd de uploadvelden).

Dus in jouw geval betekent dit dat je de waarde van het veld "text" kan opvragen door middel van $_POST['text'].

Overigens controleer je of een formulier gesubmit is middels:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {

// HIER DE VERWERKING VAN JE FORMULIER

}
?>


En gebruik geen or die(), maar gebruik goede foutafhandeling en let op SQL injecties!
En maak van je date veld een type "DATE", waarna je simpel in je query CURDATE() kunt gebruiken om de huidige datum op te slaan.
Gewijzigd op 11/06/2011 15:43:33 door Arjan -
 
Bart -

Bart -

11/06/2011 15:39:27
Quote Anchor link
Of boven je query:
$text = mysql_real_escape_string($_POST['text']);

Dat mysql_real_escape_string is voor de beveiliging
Het kan ook gewoon
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$text
= $_POST['text'];
?>

Maar de beveiliging is toch beter!
Of gewoon wat - Aar - zegt

@arjan
Ik zou DATETIME gebruiken, en dan met NOW() in de database zetten
Gewijzigd op 11/06/2011 15:46:57 door Bart -
 
Jeroen Verstraete

Jeroen Verstraete

11/06/2011 15:45:57
Quote Anchor link
bedankt allemaal!

ook bedankt voor de beveiliging info, zal het aanpassen!


maar is het normaal dat er nu nog altijd niets komt?
dat zelfs de standaartwaarde niet verzonden wordt naar m'n database?

komt dat misschien omdat er nog geen knop is?
 
Arjan -

Arjan -

11/06/2011 15:46:34
Quote Anchor link
Je moet het formulier natuurlijk wel submitten (verzenden)....
 
Jeroen Verstraete

Jeroen Verstraete

11/06/2011 15:49:36
Quote Anchor link
aha, de waarden worden enkel opgeslagen in $_post na het verzenden van je formulier

bedankt :)

dus nu gewoon:
<input type="button" NAME="button" VALUE= 'verzenden' onClick= mysql.../>

alvast bedankt
 
- SanThe -

- SanThe -

11/06/2011 15:49:41
Quote Anchor link
Heb je wel een compleet formulier. Alleen een input werkt niet.
 
Jeroen Verstraete

Jeroen Verstraete

11/06/2011 15:51:39
Quote Anchor link
nee, momenteel enkel die input...

wat mis ik dan?
 
Bart -

Bart -

11/06/2011 15:52:06
Quote Anchor link
Jeroen Verstraete op 11/06/2011 15:49:36:
aha, de waarden worden enkel opgeslagen in $_post na het verzenden van je formulier

bedankt :)

dus nu gewoon:
<input type="button" NAME="button" VALUE= 'verzenden' onClick= mysql.../>

alvast bedankt

Nee, niet zo. Zo:
<input type="submit" NAME="de naam" VALUE= 'De value' />
En er moet wel in de form tag method="post" aangegeven zijn
 
Arjan -

Arjan -

11/06/2011 15:52:07
Quote Anchor link
Jeroen Verstraete op 11/06/2011 15:49:36:
aha, de waarden worden enkel opgeslagen in $_post na het verzenden van je formulier

bedankt :)

dus nu gewoon:
<input type="button" NAME="button" VALUE= 'verzenden' onClick= mysql.../>

alvast bedankt


Nee!!

Je gaat uiteraard geen mysql_query in je javascript onclick event zetten!

Je zal gewoon een normale submit button moeten plaatsen waarmee je je formulier verzend (en ook de nodige form tags, waarin je aangeeft naar welk bestand het formulier moet worden verzonden en welke methode die moet gebruiken (POST of GET).

Via google kan je genoeg simpele scripts vinden die laten zien hoe je zoiets opzet.
 
- SanThe -

- SanThe -

11/06/2011 15:56:22
 
Jeroen Verstraete

Jeroen Verstraete

11/06/2011 15:56:44
Quote Anchor link
hmm, oké

bedankt, zal er vanavond verder voor kijken moet nu door!

bedankt voor de snelle en goeie hulp!
 
Jeroen Verstraete

Jeroen Verstraete

19/06/2011 11:42:27
Quote Anchor link
oké alles goed momenteel

ik kan opslaan wat ik wil :)

maar toch 1 probleem, vanaf dat iemand de pagina bezoekt wordt het opgeslaan, zonder ingevoerde waarden dan:

<form name="input" method="POST">
Site: <input type="text" name="site" /><br />
Gebruikersnaam op die site:: <input type="text" name="gbr" /><br />
<input type="submit" value="verzenden" />
</form>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
$site
= mysql_real_escape_string($_POST['site']);
$gbr = mysql_real_escape_string($_POST['gbr']);
mysql_query("INSERT INTO `message` (user,site,gbr,date) VALUES ( '".$_SESSION['user']."', '".$site."' , '".$gbr."' , '".date("d/m/Y")."') ") OR DIE(mysql_error());
?>


Dus wat doe ik verkeerd?
(achter dat dit lukt ga ik kijken voor die mysql_error te vervangen :))

alvast bedankt!
 
Karl Karl

Karl Karl

19/06/2011 11:49:30
Quote Anchor link
Zoals ook misschien hierboven al vermeld is:
- Controleer of een post is gedaan met if($_SERVER['REQUEST_METHOD'] == 'POST')
- Gebruik geen backticks (`).
- Zie ook sprintf.
- Maak gebruik van MySQL's datum en tijd functies: mysql date time functions en mysql now.
- Bouw foutafhandeling in, zie wat mysql_query teruggeeft.
- 'or die' is geen foutafhandeling.
- Toon nooit de mysql fout aan de gebruiker.
Gewijzigd op 19/06/2011 11:51:07 door Karl Karl
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.