| 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: 17 let
|
|||
Toto téma je uzamčeno. Odpověď nelze zaslat.
0