Formulář & DB – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Formulář & DB – PHP – Fórum – Programujte.comFormulář & DB – PHP – Fórum – Programujte.com

 

JMM
~ Redaktor
0
Grafoman
1. 8. 2008   #1
-
0
-

Ahoj, jsem na to prostě asi tupej...
poradíte jak poslat data z formuláře do mysql?
Posílám to pomocí Post přes soubor send.php

Formulář

<form action="send.php" method="post">

<table border="0">
<tr><td><label for="od">Od:</label></td>
<td>Den <select name="od_d">
<option>1.</option>
<option>2.</option>
<option>3.</option>
<option>4.</option>
<option>5.</option>
<option>6.</option>
<option>7.</option>
<option>8.</option>
<option>9.</option>
<option>10.</option>
<option>11.</option>
<option>12.</option>
<option>13.</option>
<option>14.</option>
<option>15.</option>
<option>16.</option>
<option>17.</option>
<option>18.</option>
<option>19.</option>
<option>20.</option>
<option>21.</option>
<option>22.</option>
<option>23.</option>
<option>24.</option>
<option>25.</option>
<option>26.</option>
<option>27.</option>
<option>28.</option>
<option>29.</option>
<option>30.</option>
<option>31.</option>
</select> Měsíc
<select name="od_m">
<option>1.</option>
<option>2.</option>
<option>3.</option>
<option>4.</option>
<option>5.</option>
<option>6.</option>
<option>7.</option>
<option>8.</option>
<option>9.</option>
<option>10.</option>
<option>11.</option>
<option>12.</option>
</select> Rok
<select name="od_r">
<option>2008</option>
<option>2009</option>
<option>2010</option>
<option>2011</option>
</select></td></tr>
<tr><td><label for="do">Do:</label></td>
<td>Den <select name="do_d">
<option>1.</option>
<option>2.</option>
<option>3.</option>
<option>4.</option>
<option>5.</option>
<option>6.</option>
<option>7.</option>
<option>8.</option>
<option>9.</option>
<option>10.</option>
<option>11.</option>
<option>12.</option>
<option>13.</option>
<option>14.</option>
<option>15.</option>
<option>16.</option>
<option>17.</option>
<option>18.</option>
<option>19.</option>
<option>20.</option>
<option>21.</option>
<option>22.</option>
<option>23.</option>
<option>24.</option>
<option>25.</option>
<option>26.</option>
<option>27.</option>
<option>28.</option>
<option>29.</option>
<option>30.</option>
<option>31.</option>
</select> Měsíc
<select name="do_m">
<option>1.</option>
<option>2.</option>
<option>3.</option>
<option>4.</option>
<option>5.</option>
<option>6.</option>
<option>7.</option>
<option>8.</option>
<option>9.</option>
<option>10.</option>
<option>11.</option>
<option>12.</option>
</select> Rok
<select name="do_r">
<option>2008</option>
<option>2009</option>
<option>2010</option>
<option>2011</option>
</select></td></tr>
<tr><td><label for="nazev">Název akce:</label></td><td><input size="40" id="nazev" name="nazev" tabindex="9" accesskey="d" /></td></tr>
<tr><td><label for="www">Web:</label></td><td><input size="40" id="www" name="www" tabindex="10" accesskey="w" /></td></tr>
<tr><td> </td><td style="text-align:right"><input type="submit" value="odeslat"></dt></tr>
</table>
</form>

Send.php
<?php

$db = mysql_connect("", "", "");
mysql_select_db("",$db);

$odkdy = $_POST["od_d"] . $_POST["od_m"] . $_POST["od_r"];
$dokdy = $_POST["do_d"] . $_POST["do_m"] . $_POST["do_r"];
$nazev_a = $_POST["nazev"];
$www_a = $_POST["web"];
$ip = $REMOTE_ADDR;

$sql = "INSERT INTO seznam_akci (odkdy,dokdy,nazev,web,ip) VALUES ($odkdy,$dokdy,$nazev_a,$www_a,$ip)";
$vysledek = mysql_query($sql);
?>


Možná kdyby to šlo jestli byste napsali i sql příkaz na vytvoření tabulky, sice jsem něco zkusil ale nejsem si tím moc jistej.
Ještě když to pošle ty data do DB jestli by ot mohlo napsat "Data byla zapsána" či naopak.

Doména je už jen testovací, takže sem dal i login. Ten nevím jestli je OK, ale chybu to nepsalo tak snad jo.

Nahlásit jako SPAM
IP: 85.71.16.–
Jan Malý | web: www.malyphoto.cz, @malyphoto
Kobi
~ Moderátor
+1
Věrný člen
1. 8. 2008   #2
-
0
-

A co ti nefunguje na tom vkládání?

Zobrazení potvrzovací hlášky:
$sql = mysql_query("INSERT INTO seznam_akci (odkdy,dokdy,nazev,web,ip) VALUES ($odkdy,$dokdy,$nazev_a,$www_a,$ip)") or die ("Nebylo možné zapsat data do databáze");

když se dotaz povede, přesměruj ho na stránku s potvrzovací hláškou.

Nahlásit jako SPAM
IP: 78.146.162.–
JMM
~ Redaktor
0
Grafoman
1. 8. 2008   #3
-
0
-

To Kobi : no prostě je databáze prázdná... :(

Nahlásit jako SPAM
IP: 85.71.16.–
Jan Malý | web: www.malyphoto.cz, @malyphoto
bukaj0
Věrný člen
1. 8. 2008   #4
-
0
-

JMM
no prostě je databáze prázdná... :(
Tomu říkám popis problému. Za tohle by lidé zasloužili zabít :o)

Chyba bude určitě v SQL. A proto provní pravidlo, když nějaký posíláš je tam dát něco podobného tomuto:

$dotaz = mysql_query(...) or die(mysql_error()); // když se dotaz neprovede, vypíše se mysql_error()[1]


Jelikož všechny sloupce v databázi máš typu varchar, chybí ti v tom dotazu apostofy:
$sql = "INSERT INTO seznam_akci 

(odkdy, dokdy, nazev, web, ip)
VALUES
('" .
mysql_real_escape_string($odkdy) . "', '" .
mysql_real_escape_string($dokdy) . "', '" .
mysql_real_escape_string($nazev_a) . "', '" .
mysql_real_escape_string($www_a) . "', '" .
mysql_real_escape_string($ip) .
"')";

$vysledek = mysql_query($sql) or die(mysql_error());


A samozřejmě se řetězce musí escapovat, jelikož nikdy nevíš, co ti tam kdo může vložit. mysql_real_escape_string()[2] ti s tím pomůže.

[1] http://php.net/mysql_error
[2] http://php.net/mysql_real_escape_string

PS. Doporučuji ti si změnit přihlašovací údaje k DB, když je sem dáváš tak na odiv ;o)

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
JMM
~ Redaktor
0
Grafoman
1. 8. 2008   #5
-
0
-

To bukaj : díky... teď už to funguje. Vím ten popis nebyl zrovna nejvhodnější, ale i tak to žádnej error nepsalo. Na obdiv je dávám, pač tahle doména už je 2 roky bez náplně... takže tam jen testuju...

Nahlásit jako SPAM
IP: 85.71.16.–
Jan Malý | web: www.malyphoto.cz, @malyphoto
JMM
~ Redaktor
0
Grafoman
1. 8. 2008   #6
-
0
-

Tak vkládání jde... vypisování taky... ale né tak jak bych si přál... řadí mě to podle pořadí přidání do DB, já bych ale potřeboval aby to řadilo podle data (např: 1.1.2008, 5.2.2008) a né (1.1.2008, 25.12.2007,5.10.2008)

kod v seznam.php

require_once('pripoj_db.php'); // připojení k DB


$dotaz = "SELECT * FROM seznam_akci";
$vysledek = @mysql_query($dotaz); //spustí dotaz
$pocet = mysql_num_rows($vysledek); //počet záznamů

echo '<table border="1" style="border-collapse:collapse;border:1px solid &fff">
<tr><td>Odkdy</td><td>Dokdy</td><td>Název akce</td><td>Web</td></tr>';

while ($radek = mysql_fetch_array($vysledek,MYSQL_NUM)) {
echo "<tr><td>". stripslashes($radek[1]). "</dt><td>$radek[2]</td><td>$radek[3]</td><td>$radek[4]</td></tr>\n";
}
echo '</table>';
mysql_free_result($vysledek);
mysql_close();

Nahlásit jako SPAM
IP: 85.71.16.–
Jan Malý | web: www.malyphoto.cz, @malyphoto
bukaj0
Věrný člen
1. 8. 2008   #7
-
0
-

JMM
vypisování taky… ale né tak jak bych si přál… řadí mě to podle pořadí přidání do DB, já bych ale potřeboval aby to řadilo podle data
Nezlob se na mě, ale v tom případě by sis měl nastudovat základy SQL ;o) Poradím, že k řazení slouží klauzule ORDER BY.

A pokud chceš, aby to řadilo správně, neměl bys datum ukládat do sloupce typu VARCHAR, protože pak ti řazení může blbnout (a to hodně :o)). Datum bys měl ukládat do sloupce, který je k tomu určený – s typem DATE, či DATETIME.

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
hrach
~ Redaktor
+1
Boss
1. 8. 2008   #8
-
0
-

příště prosím víc hledat a nemíchat dvě témata, děkuji :)

Nahlásit jako SPAM
IP: 193.179.169.–
http://jan.skrasek.com@hrachcz – webdeveloper
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý