Autor Zpráva
problem
Profil *
Dobrý večer, mám takovýhle kód a z mě neznámého důvodu vůbec nezapisuje do DB samozřejmě přihlášení je správně ;) Nejvíc mě překvapuje, že dokud tam nebyly ty posty zápis fungoval...
(ty údaje s v ' jsou textové; v poznámce je ta funkční varianta) Věřím, že je to nějáká hloupost... Vrtám se v tom celej den. Kdyby se na to koukl moc by mě to potěšilo. Děkuji za pomoc :)

<?php
//$co = "co";    
//$nemovitost = "nemovitost";        
//$blurceni = "blurceni";    
//$stav = 2;
//$mesto = "mesto";    
//$mestcast = "mestcast";
//$cena = 1;
//$poznkcene = "poznkcene";        
//$material = "material";
//$vlastnictvi = "vlastnictvi";
//$energtrida = "energtrida";    
//$popis = "popis";
//$plocha = 1;    
//$balkon = 1;        
//$lodzie = 1;        
//$terasa = 1;        
//$sklep = 1;        
//$parkovani = 1;
//$garaz = 1;            
//$vytah = 1;

$co = $_POST["co"];    
$nemovitost = $_POST["nemovitost"];        
$blurceni = $_POST["blurceni"];    
$stav = $_POST["stav"];
$mesto = $_POST["mesto"];    
$mestcast = $_POST["mestcast"];
$cena = $_POST["cena"];
$poznkcene = $_POST["poznkcene"];        
$material = $_POST["material"];
$vlastnictvi = $_POST["vlastnictvi"];
$energtrida = $_POST["energtrida"];    
$popis = $_POST["popis"];
$plocha = $_POST["plocha"];    
$balkon = $_POST["balkon"];        
$lodzie = $_POST["lodzie"];        
$terasa = $_POST["terasa"];        
$sklep = $_POST["sklep"];        
$parkovani = $_POST["parkovani"];
$garaz = $_POST["garaz"];            
$vytah = $_POST["vytah"];


$db="";
$tb="";
$spojeni=mysql_connect("","","");
mysql_select_db($db, $spojeni);
mysql_query("INSERT INTO $tb (co, nemovitost, blurceni, stav, mesto, mestcast, cena, poznkcene, material, vlastnictvi, energtrida, popis, plocha, balkon, lodzie, terasa, sklep, parkovani, garaz, vytah, aktivita) values ('$co', '$nemovitost', '$blurceni', $stav, '$mesto', '$mestcast', $cena, '$poznkcene', '$material', '$vlastnictvi', '$energtrida', '$popis', $plocha, $balkon, $lodzie, $terasa, $sklep, $parkovani, $garaz, $vytah, 1)");
?>
juriad
Profil
Nejspíš ti selhává dotaz do databáze, vypiš si jej před tím než zavoláš mysql_query.
Řetězcová vstupní data musíš ošetřit pomocí mysql_real_escape_string, před tím než je vložíš do dotazu. Číselná pomocí intval nebo podobné.

Hádám, že:
* některý řetězec obsahuje apostrof
* nějaká číslená hodnota obsahuje desetinnou čárku

Mimochodem, mysql_* funkce jsou zavržené a v novém PHP 7 už neexistují. Použij něco modernějšího.
Lonanek
Profil
A jsou proměnné předány do scriptu? Pokud ne, pak mne vůbec nepřekvapuje, že to nefunguje jak má.

Důrazně doporučuji ošetřit vstupní proměnné -> SQL Injection
problem
Profil *
Chlapi přiznám se vůbec z toho nejsem moudrej...
doufám, že jsem pochopil správně, že mi tam chybí ochrana proti SQL Injection
teda jak wiki říká něco takovýho

$query = sprintf("SELECT * FROM `Users` WHERE UserName='%s' AND Password='%s'",
                  mysql_real_escape_string($user),
                  mysql_real_escape_string($pass));
mysql_query($query);

Myslím, že jsem dobře pochopil i to, že do user a pass patří moje jméno a heslo k databázi, ale co doplním do Users? Případně chybí mi v tom doplnit ještě něco? Přiznám se, že na luštění v angličtině na php net jsem se necítil... Možná je MySQL zastaralé, ale pro moje účely zatím vždy stačilo...Je opravdu zásadní důvod k tomu použít něco jiného, když neukládám nic tajného a důvěného?
Lonanek
Profil
problem:
.Je opravdu zásadní důvod k tomu použít něco jiného,
Ano, je viz. citace juriad: „mysql_* funkce jsou zavržené a v novém PHP 7 už neexistují“. To znamená, že v PHP 7 to nebude fungovat.

problem:
doufám, že jsem pochopil správně
NE, nepochopil.


$co =  mysql_real_escape_string($_POST["co"]); 
$nemovitost =  mysql_real_escape_string($_POST["nemovitost"]);        
...
$stav = intval($_POST["stav"]);
...
...
atd.

Samozřejmě před použitím mysql_real_escape_string() již musíte mít připojení do MySQL.
Kajman
Profil
problem:
Chybu vypátráte snáze, pokud si budete ověřovat návratové hodnoty funkcí a případně si vypíšete chybu databáze. To je obecná rada.

Konkrétní je, že bez vyplněných $db $tb skript neví, kam se připojit a do které tabulky zkusit vložit data.
problem
Profil *
Děkuji :) Databázi a tabulku jsem samozřejmě měl vyplněnou, jen v tomhle kódu neni...
Po té radě se mi začala vepisovat čísla, ale textové hodnoty ne. Píše mi to tuhle chybu u všech...

Warning: mysql_real_escape_string(): No such file or directory in /data/web/virtuals/127802/virtual/www/cristal/novatabulka_mysql.php on line 2

Warning: mysql_real_escape_string(): A link to the server could not be established in /data/web/virtuals/127802/virtual/www/cristal/novatabulka_mysql.php on line 2



Kód vypadá takhle:
<?php
$co = mysql_real_escape_string($_POST["co"]);
$nemovitost = mysql_real_escape_string($_POST["nemovitost"]);        
$blurceni = mysql_real_escape_string($_POST["blurceni"]);    
$stav = intval($_POST["stav"]);
$mesto = mysql_real_escape_string($_POST["mesto"]);    
$mestcast = mysql_real_escape_string($_POST["mestcast"]);
$cena = intval($_POST["cena"]);
$poznkcene = mysql_real_escape_string($_POST["poznkcene"]);        
$material = mysql_real_escape_string($_POST["material"]);
$vlastnictvi = mysql_real_escape_string($_POST["vlastnictvi"]);
$energtrida = mysql_real_escape_string($_POST["energtrida"]);    
$popis = mysql_real_escape_string($_POST["popis"]);
$plocha = intval($_POST["plocha"]);    
$balkon = intval($_POST["balkon"]);        
$lodzie = intval($_POST["lodzie"]);        
$terasa = intval($_POST["terasa"]);        
$sklep = intval($_POST["sklep"]);        
$parkovani = intval($_POST["parkovani"]);
$garaz = intval($_POST["garaz"]);            
$vytah = intval($_POST["vytah"]);



$db="";
$tb="";
$spojeni=mysql_connect("","","");
mysql_select_db($db, $spojeni);
mysql_query("INSERT INTO $tb (co, nemovitost, blurceni, stav, mesto, mestcast, cena, poznkcene, material, vlastnictvi, energtrida, popis, plocha, balkon, lodzie, terasa, sklep, parkovani, garaz, vytah, aktivita) values ('$co', '$nemovitost', '$blurceni', $stav, '$mesto', '$mestcast', $cena, '$poznkcene', '$material', '$vlastnictvi', '$energtrida', '$popis', $plocha, $balkon, $lodzie, $terasa, $sklep, $parkovani, $garaz, $vytah, 1)");
?>

pomohli byste mi to prosím děšifrovat?


Jasně už vím přihlášení musí být před tím... když to ale prohodím nedělá nic...
Lonanek
Profil
Jak jsem již v předchozím příspěvku uváděl:
Lonanek:
Samozřejmě před použitím mysql_real_escape_string() již musíte mít připojení do MySQL.

Tedy na ř.2 mít mysql_real_escape_string() a teprve na ř. 28 připojení do MySQL musí skončit chybou.
problem
Profil *
Já vím uvědomil jsem si to potom...

problem:
Jasně už vím přihlášení musí být před tím... když to ale prohodím nedělá nic...

Teď to sice neháže chybu, ale nezapisuje to nic
Kajman
Profil
Chybu vypátráte snáze, pokud si budete ověřovat návratové hodnoty funkcí a případně si vypíšete chybu databáze.
problem
Profil *
Jo to pomohlo sem vůl neměl jsem vybranou tu databázi ... Děkuji moc všem co se snažili ;)

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: