Autor Zpráva
Scrash
Profil
Zdarec, fakt už nechápem, kde je chyba.. Sedím u primitivního kódu 3 hodiny, tak kdyby byl někdo tak hodný a podíval se na to.

config.php:
<?php

$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "chobot";

?>



index.php:
<?php

require_once "config.php";

echo "<html>\n<head>\n";
echo "<title>JF Příbraz</title>\n";
echo "</head>";
echo "<table align='center' border='0' height='100%'>\n<tr><td>\n";

if(!isset($_POST["odeslat"])){
  echo "<table align='center' border='0' style='border: 1px solid #000'>\n";
  echo "<form method='post' action='index.php' enctype='multipart/form-data'>\n";
    
  echo "<tr><td width='150'>Jméno:</td><td><input type='text' name='jmeno'></td></tr>\n";
  echo "<tr><td width='150'>Příjmení:</td><td><input type='text' name='prijmeni'></td></tr>\n";
    
  echo "<tr><td width='150'>Ulice:</td><td><input type='text' name='ulice'></td></tr>\n";
  echo "<tr><td width='150'>Směrovací číslo:</td><td><input type='text' name='smer_cis'></td></tr>\n";
  echo "<tr><td width='150'>Číslo popisné:</td><td><input type='text' name='popi_cis'></td></tr>\n";
    
  echo "<tr><td width='150'>E-mail:</td><td><input type='text' name='mail'></td></tr>\n";
    
  echo "<tr><td colspan='2'><div align='center'><input type='submit' name='odeslat' value='Zaregistrovat'></div></td></tr>\n";
    
  echo "</form>";
  echo "</table>\n"; 
     
}

if(isset($_POST["odeslat"])){
  
  if(trim($_POST["jmeno"]) == ""){
    echo "Zadejte jméno !<br />";
  }
  
  if(trim($_POST["prijmeni"]) == ""){
    echo "Zadejte příjmení !<br />";
  }
  
  if(trim($_POST["ulice"]) == ""){
    echo "Zadejte ulici !<br />";
  }
  
  if(trim($_POST["smer_cis"]) == ""){
    echo "Zadejte směrovací číslo !<br />";
  }
  
  if(trim($_POST["popi_cis"]) == ""){
    echo "Zadejte číslo popisné !<br />";
  }
  
  if(trim($_POST["mail"]) == ""){
    echo "Zadejte e-mailovou adresu !<br />";
  }else{ 
    
    $spojeni = mysql_connect($db_host, $db_user, $db_pass)
    or die("Chyba pri spojeni s MySQL : " . mysql_error());

    $db = mysql_select_db($db_name)
    or die("Chyba pri vyberu databaze");
  
    $result = mysql_query("INSERT INTO ".$db." . registrace (datum, jmeno, prijmeni, ulice, smer_cis, pipi_cis, email) 
    VALUES (".date("d. m. Y - H:i:s").", ".$_POST["jmeno"].", ".$_POST["prijmeni"].", ".$_POST["ulice"].", ".$_POST["smer_cis"].", ".$_POST["popi_cis"].", ".$_POST["mail"].")");
    echo "<div align='center'>Požadavek byl bezpečně odeslán, děkujeme za registraci."; 
    echo "<br />".date("d. m. Y - H:i:s")."</div>";
  }
  echo "<div align='center'><a href='index.php' style='color: red'>Zpět</a></div>";  
}




echo "</td></tr>\n</table>\n";
echo "<body>\n";
echo "</body>\n</html>\n";


?>
Alphard
Profil
Bylo by dobré napsat, v čem je vlastně problém…

Řetězcové hodnoty vkládané do databáze (řádek 63) obalte apostrofy. Vkládání aktuálního data je takto zbytečně složité. Dejte sloupci typ datetime a použijte MySQL fci now().

Doplnění 1: Kdybyste použil mysql_error() i za insertem, zjistil byste to před 3 hodinami.
Doplnění 2: Co bezpečnost? mysql_real_escape_string()
Scrash
Profil
Alphard:

Děkuji za radu, popis problému jsem omylem umazal, bylo tam že se nic nezapíše do DB..
Po použití mysql_error jsem na chybu přišel.

Tady je část kódu pro zápis do DB, kdybyste byl ochotný a poupravil jej pro jeho 100% funkčnost, ale myslím si že nebude třeba.
$spojeni = mysql_connect($db_host, $db_user, $db_pass)
    or die("Chyba pri spojeni s MySQL : " . mysql_error());

    $db = mysql_select_db($db_name, $spojeni)
    or die("Chyba pri vyberu databaze");
  
    $insert = mysql_query("INSERT INTO registrace (datum, jmeno) VALUES (NOW(), '".mysql_real_escape_string($_POST["jmeno"].)"')")
    or die("Chyba pri vkladani udaji do databaze" .mysql_error());
Alphard
Profil
Scrash:
kdybyste byl ochotný a poupravil jej pro jeho 100% funkčnost, ale myslím si že nebude třeba.
Také myslím. Nic do očí bijící tady není.

Ten styl pevně napsaného or die … mysql_error() je sice pofidérní, ale dokud nedojdete k nějakému layeru, např. dibi, nedá se nic dělat.

Jinak to vypadá funkčně, efektivně a bezpečně.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: