variable text opslaan in database
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>
<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)
1
2
3
4
2
3
4
<?
mysql_query("INSERT INTO `message` (user,text,date) VALUES ( '".$_SESSION['user']."', '".$text."' , '".date("d/m/Y")."') ") OR DIE(mysql_error());
?>
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
$_POST['text']
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)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// HIER DE VERWERKING VAN JE FORMULIER
}
?>
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 -
$text = mysql_real_escape_string($_POST['text']);
Dat mysql_real_escape_string is voor de beveiliging
Het kan ook gewoon
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 -
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?
Je moet het formulier natuurlijk wel submitten (verzenden)....
bedankt :)
dus nu gewoon:
<input type="button" NAME="button" VALUE= 'verzenden' onClick= mysql.../>
alvast bedankt
Heb je wel een compleet formulier. Alleen een input werkt niet.
wat mis ik dan?
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
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
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
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.
bedankt, zal er vanavond verder voor kijken moet nu door!
bedankt voor de snelle en goeie hulp!
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)
1
2
3
4
5
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());
?>
$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!
- 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.