Autor Zpráva
Jirik
Profil *
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"]))
funguje tak, že se mi zapisuje do db každá aktualizace stránky.
Chci aby se data do db zapsali jen po stisknutí submit. Jak na to?
Kajman_
Profil *
Do dotazů nedávejte středníky (ten řádek 65). U proměnných dodržujte velikost $_GET["Submit"]
keeehi
Profil
$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"?
Jirik
Profil *
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 *
A ve formuláři máte input s názvem Submit a používate metodu GET?
Jiřík
Profil
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 *
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
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"]))
se zobrazuje i tabulka s aktuálníma hodnotama, ale zapíše se do ní každý přístup i když nestiskne Submit. Žádoucí je zápis to DB jen po stisknutí Submit.
To zas bude nějaká Lamácká hovadina.. jak se znám
Aesir
Profil
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
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
Toto téma je uzamčeno. Odpověď nelze zaslat.