Autor | Zpráva | ||
---|---|---|---|
Jirik Profil * |
#1 · Zasláno: 1. 3. 2009, 21:49:40
Ahoj,
následující konstrukt má provést uložení dat do db pouze v případě že se zmáčkne tlačítko. Měl by to mít na svědomí if (isset($_get["Submit"])) <?php if (isset($_get["Submit"])) { $spojeni = mysql_connect("mysql","uživatel","heslo") or die("Nenavazane spojeni se serverem!"); mysql_select_db("mysql",$spojeni) or die("Nenavazane spojeni s databazi!"); // výběr databáze mysql_query ("SET NAMES CP1250"); // nastavení kódování //$spojeni = MySQL_pConnect("MYSQL5-1","uživatel", "heslo"); if(!$spojeni): echo "ERROR: nelze navázat spojení s databázovým serverm !!!"; endif;/ /*definice proměnných*/ $ip = $_SERVER['REMOTE_ADDR']; $datum =date("Y m d G:i:s "); $jmeno =($_GET["jmeno"]); $vek = ($_GET["vek"]); $sql = "INSERT INTO seznam (ip, datum, jmeno, vek) VALUES (\"$ip\", now(), \"$jmeno\", \"$vek\ MySQL_DB_Query("databaze", $sql, $spojeni)or die(mysql_error) } ?> Jenže ono to nefunguje a hlásí to: Warning: mysql_db_query(): supplied argument is not a valid MySQL-Link resource in /home/www/domena/subdomeny/www/cvik/databaze.php on line 66 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/domena/subdomeny/www/cvik/databaze.php on line 67 přičemž číslování řádků je následující: 64 <?php 65 $sql_vyber = "SELECT * FROM seznam;"; 66 $vysledek = MySQL_DB_Query("vycvik_1083", $sql_vyber, $spojeni); 67 while($zaznam = MySQL_Fetch_Array($vysledek)): 68 echo "<table border= \"1\"> <tr> <td>$zaznam[ip] </td><td>$zaznam[datum]</td><td>$zaznam[jmeno] </td><td>$zaznam[vek]</td> </tr><table/>"; 69 endwhile; 70 ?> Když ten konstrukt okleštím od onoho if (isset($_get["Submit"])) Chci aby se data do db zapsali jen po stisknutí submit. Jak na to? |
||
Kajman_ Profil * |
#2 · Zasláno: 1. 3. 2009, 22:23:15
Do dotazů nedávejte středníky (ten řádek 65). U proměnných dodržujte velikost $_GET["Submit"]
|
||
keeehi Profil |
#3 · Zasláno: 1. 3. 2009, 22:37:41 · Upravil/a: keeehi
$sql = "INSERT INTO seznam (ip, datum, jmeno, vek) VALUES (\"$ip\", now(), \"$jmeno\", \"$vek\ MySQL_DB_Query("databaze", $sql, $spojeni)or die(mysql_error) } nemělo by to být třeba takto? $sql = "INSERT INTO seznam (ip, datum, jmeno, vek) VALUES ('".$ip."', ".now().", '".$jmeno."', '".$vek."');"; MySQL_DB_Query("databaze", $sql, $spojeni)or die(mysql_error); } $spojeni = mysql_connect("mysql","uživatel","heslo") je uživatel opravdu "uživatel" a jako heslo se používá "heslo"? |
||
Časová prodleva: 3 dny
|
|||
Jirik Profil * |
#4 · Zasláno: 4. 3. 2009, 21:58:28
Takže zkoumám a trápím se a nic z toho co tu bylo psáno nefunguje. upravena velikost písmen i středníky ale pořád je to bez výsledku. Napadá vás ještě něco?
|
||
Kajman_ Profil * |
#5 · Zasláno: 4. 3. 2009, 22:38:22
A ve formuláři máte input s názvem Submit a používate metodu GET?
|
||
Jiřík Profil |
#6 · Zasláno: 5. 3. 2009, 09:29:45
„A ve formuláři máte input s názvem Submit a používate metodu GET?“
zkoušel jsem i method POST a výsledek je stejný. prostě je to jako obvykle nějaká prkotina a furt nevím kde. Zkoušel jsem i cvičně zkopírovat už hotové scripty s z hotových funkčních aplikací, ale pro můj účel to prostě nefunguje.. 8-( |
||
Kajman_ Profil * |
#7 · Zasláno: 5. 3. 2009, 09:45:02
Tak si do skriptu dejte pár echo s poocným textem, ať víte, do které větve se to dostane a do které ne.
|
||
Jiřík Profil |
#8 · Zasláno: 5. 3. 2009, 10:01:23
Tak jsem dal metodu POST a celé jsem to přepsal písmenko po písmenku a stále to nedělá to co to dělat má. Nyní vypadá kód takhle ( přihlašovací údaje jsou změněny):
1 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <title> databaze</title> </head> <body> Je na čase se naučit základy databáze MYSQL. <br> Úkol této stránky: <br> 1.Zápis hodnot do databáze a zpětný výpis. <br> 10 dvě hodnoty budou zapsány uživatelem pomocí formuláře, číselná a textová hodnota<br> mimo kontrolu uživatele pak bude zapsáno: <br>IP uživatele, datum a čas přístupu na stránku, Databázová tabulka pak bude o čtyřech sloupcích s názvy:<br>ip,datum,jméno,roky.<br> jméno databáze = výcvik<br> název tabulky = seznam <br> <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> vek <input type="text" name="vek"><br> jmeno <input type="text" name="jmeno"><br> <input type="Submit" name="zapiš se"> </form> <?php 20 if (isset($_POST["Submit"])) { $spojeni = mysql_connect("mysql","vycvik","heslo") or die("Nenavazane spojeni se serverem!"); // např: mysql4-1, mysql5-1, mysql5-2, localhost - zadává se dle fyzického umístění databáze mysql_select_db("vycvik_1083",$spojeni) or die("Nenavazane spojeni s databazi!"); // výběr databáze mysql_query ("SET NAMES CP1250"); // nastavení kódování if(!$spojeni): //kontrola spojení, když je něco špatně ukáže se hláška co je o řádek níž echo "ERROR: nelze navázat spojení s databázovým serverm !!!"; endif;//nevím co je endif ale je to na všech ověřovacích scriptech /*mysql_query("create DATABASE vycvik"); tímto se vytvoří nová databáze s názvem php.když 30 se zadá místo create drop tak to databázy smaže*/ /*definice proměnných*/ $ip = $_SERVER['REMOTE_ADDR'];//vypisuje ip adresu příchozího $datum =date("Y m d G:i:s ");//formát času tak jak by se měl ukládat v databázy $jmeno =($_POST["jmeno"]); //odebírá a následně zobrazuje a ukládá hodnotu z formuláře $vek = ($_POST["vek"]); $sql = "INSERT INTO seznam (ip, datum, jmeno, vek) VALUES (\"$ip\", now(), \"$jmeno\", \"$vek\")";// sql dotaz s proměnnými, kde proměnné jsou označeny uvozovkama, které je nutno ohraničit zpětným lomítkem. MySQL_DB_Query("vycvik_1083", $sql, $spojeni)or die(mysql_error());//tato konstrukce vypíše chybu ve spojení s dabází pokud k ní dojde. Stačí malý překlep nebo chyba spojení a dojde k textovému výstupu s údaji o chybě. $sql_vyber = "SELECT * FROM seznam"; $vysledek = MySQL_DB_Query("vycvik_1083", $sql_vyber, $spojeni); 40 while($zaznam = MySQL_Fetch_Array($vysledek)): echo "<table border= \"0\"> <tr> <td>$zaznam[ip] </td><td>$zaznam[datum]</td><td>$zaznam[jmeno] </td><td>$zaznam[vek]</td> </tr><table/>"; endwhile; } else { echo "nějak se to nedaří"; } ?> </div> </body> 50 </html> Je mi záhadou, že po okleštění od if (isset($_POST["Submit"])) To zas bude nějaká Lamácká hovadina.. jak se znám |
||
Aesir Profil |
#9 · Zasláno: 5. 3. 2009, 10:19:15
Jiřík:
„Je mi záhadou, že po okleštění od if (isset($_POST["Submit"]))“ Jeikož nemáte ve formuláři žádný prvek, který by měl název "Submit", tak se tato podmínka nikdy nesplnila. |
||
Jiřík Profil |
#10 · Zasláno: 5. 3. 2009, 10:32:11
„Jiřík:“
„„Je mi záhadou, že po okleštění od if (isset($_POST["Submit"]))““ „Jeikož nemáte ve formuláři žádný prvek, který by měl název "Submit", tak se tato podmínka nikdy nesplnila.“ To je ono!! Dyť to říkám... zase lamácká hovadina....Moc děkuju za radu |
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0