Autor Zpráva
marek888
Profil
Dobrý den. Mám kód, který mi zapíše data do databáze, ale mám tu jeden problém. Když třeba omilem napíšu adresu souboru do vyhledávače, tak se mi odešlou prázdné proměnné.
Chtěl bych se zeptat, co musím v kodu změnit. Předem děkuji. Marek
Kód zde:
<?php 
  
  include ('log.php');
 
$sql = mysql_query("SET NAMES 'utf8'");
            
        mysql_connect("$db_host", "$db_username", "$db_pass");
        mysql_select_db("$db_name");
        mysql_query("insert into prispevky (id,datum,autor,titulek,obsah) values(NULL,NOW(),'" . mysql_real_escape_string($_POST['autor'])
                        . "', '" . mysql_real_escape_string($_POST['titulek'])
                        . "', '" . mysql_real_escape_string($_POST['obsah']) . "')");
                                                       
?>
margin
Profil *
Podmínka if (isset($_POST['titulek'])) (nebo jakýkoliv jiný klíč z daného formuláře).
marek888
Profil
Děkuji! Nějak jsem si z tím pohrál, a funguje to! Dík!
Oprava: Tak to bozužem nefunguje, buďto to vypíše error na stránce, nebo to nezapíše vůbec nic do databáze...
Rfilip
Profil
marek888:
error na stránce“ Křišťálovou kouli nevlastníme, přesná chybová hlášky by nebyla?
okolojsoucí
Profil
Pokud chcete opravdu něco univerzálního, tak bych začal procházet celé pole.
  foreach($_POST as $key => $value)
    if(!empty($value) || $value == "")
      echo "Promenna {$key} je prazdna. <br />";
marek888
Profil
Píše mi to toto:
Parse error: syntax error, unexpected 'if' (T_IF) in C:\xampp\htdocs\prispevky.php on line 17
Já jsem to tam asi špatně vložil, po úpravě by to asi němělo vypadat takhle:
. "', '" . mysql_real_escape_string if (isset($_POST['titulek']))
Micruss
Profil
taky se to if nedává do mysql dotazu ale před tím než vůbec něco odersíláš do db
if(isset($_POST['..'])) {


$sql = mysql_query("sql dotaz");

}
marek888
Profil
Micruss:
Díky, zkusím to!
okolojsoucí
Profil
A když už jsi zasednutý na [#2] a moje řešení [#5] se ti nelíbí tak to můžeš využit takto
  // Příklad
  $jmeno =  isset($_POST['test']) ? $_POST['test'] : 'prazdne';
marek888
Profil
Pokusil jsem se nějak zkombinovat [#7] s mým dotazem, a vyšlo my z hoho toto:
if(isset($_POST['poslatp'])){
        mysql_query("insert into prispevky (id,datum,autor,titulek,obsah) values(NULL,NOW(),'" . mysql_real_escape_string($_POST['autor'])
                        . "', '" . mysql_real_escape_string($_POST['titulek'])
                        . "', '" . mysql_real_escape_string($_POST['obsah']) . "')");  
                        }
Domnívám se, že ta proměnná poslatp je proměnná, díky které se to odešle. Nejsem si jistý, jesli tam nemá bít get, nebo jestli na stránce, kde to odesílám nemá být gret na tu proměnnou. Toto řešení funguje pouze jednostraně a to tak, že to nic nikdy nezapíše...
okolojsoucí
Profil
marek888:
bít
Chyba

gret
Takový přenos dat neznám

Rozšíření MySQL již bude v následující verzi odstraněno, využijte MySqli nebo jeho třídy jako je Dibi která se o bezpečnost vstupu proměnných stará sama. Její kód by vypadal:
dibi::query("INSERT INTO [prispevky] (`id`, `datum`, `autor`, `titulek`, `obsah`) VALUES (NULL, NOW(), %s, %s, %s)", $_POST['autor'], $_POST['titulek'], $_POST['obsah']);
marek888
Profil
Děkuji, já jsem blbec, já jsem tam měl špatně proměnnou a proto mě to nepustílo dál. Děkuji každému, kdo mi tu odepsal. Marek
okolojsoucí
Profil
marek888:
Když zdejší rady ignoruješ, tak se prosím nechoď pro rady proč ti funkce mysql() nefunguje, jasně jsem ti psal přejdi ne něco jiného když každou chvilkou ji smažou.
marek888
Profil
okolojsoucí:
Díky za rady, už to předělávám, já si toho moc nevšiml, díkes.

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: