Stránka 1 z 8

Nefunkcny kod na vkladanie dat do databazy

Napsal: 24 led 2012 09:20
od fili
Tento kod mi nefunguje, poradi mi niekto, kde je chyba?

<?php
echo "Odeslal jsi POST:";var_dump($_POST);echo "<br><br>";

$Nazov = $_POST['Nazov'];
$Kraj = $_POST['Kraj'];
$Lokalita = $_POST['Lokalita'];
$Miesto = $_POST['Miesto'];
$Cena = $_POST['Cena'];
$Typ = $_POST['Typ'];
$Min_pocet = $_POST['Min.pocet'];
$Kapacita = $_POST['Kapacita'];
$Sezóna = $_POST['Sezóna'];


$sql = mysql_query("INSERT INTO ubytovanie(Nazov,Lokalita,Kraj,Miesto,Cena,Typ,Min.pocet,Kapacita,Sezóna,Bezbariérový,Zvieratko) VALUES('$Nazov','$Kraj','$Lokalita','$Miesto','$Cena','$Typ','$Min.pocet','$Kapacita','$Sezóna')");
$sql=MySQL_Query($sql) Or Die(MySQL_Error());

if($sql){
echo ("Záznam bol úspešne vložený do databázy!");
} else {
echo ("Záznam sa nepodarilo vložiť do databázy!");
}

mysql_close();

?>

Vysledok:

Odeslal jsi POST:array(9) { ["Nazov"]=> string(8) "Chalupka" ["Kraj"]=> string(15) "Banskobystrický" ["Lokalita"]=> string(8) "Ponitrie" ["Miesto"]=> string(5) "Nitra" ["Cena"]=> string(15) "cena od 5 €/noc" ["Typ"]=> string(5) "Chata" ["Min_pocet"]=> string(1) "2" ["Kapacita"]=> string(1) "8" ["Sezóna"]=> string(9) "Celoročne"}

Záznam sa nepodarilo vložiť do databázy!

Re: Nefunkcny kod na vkladanie dat do databazy

Napsal: 24 led 2012 10:01
od Antena
Ahoj fili, sloupec s názvem Min.pocet bude podle mě sql brát jako že chceš vkládat do sloupce s názvem pocet (bez Min.). Ponaučení: názvy proměnných,tabulek,sloupců píši bez háčků a čárek, bez teček, bez speciálních znaků, jen malým písmenem. Protože čím je jakýkoli systém složitější, je větší pravděpodobnost chyby.
Dál ve VALUES() můžeš psát bez uvozovek, když tam máš proměnné, které jsi už do uvozovek dával.

Další možnost chyby, nemáš sloupec Cena v tabulce vedený jako číslo a teď tam vkládáš string?

Kdyby nepomohlo hoď sem prosímtě strukturu tabulky <--- (velikost písma: 200px, barva: červená!) :-)

Re: Nefunkcny kod na vkladanie dat do databazy

Napsal: 24 led 2012 10:08
od CZechBoY
nemůžeš použít výsledek funkce MySQL_Query a zase ji předat funkci MySQL_Query
$sql = mysql_query("INSERT INTO ubytovanie(Nazov,Lokalita,Kraj,Miesto,Cena,Typ,`Min.pocet`,Kapacita,Sezóna,Bezbariérový,Zvieratko) VALUES('$Nazov','$Kraj','$Lokalita','$Miesto','$Cena','$Typ','$Min.pocet','$Kapacita','$Sezóna')");
a ten $sql=MySQL_Query.. co je za tímhle řádkem dej pryč

Re: Nefunkcny kod na vkladanie dat do databazy

Napsal: 24 led 2012 10:47
od Ellrohir
jenom taková technická/kosmetická - tu tečku ze sloupce "Min.pocet" bych dal pryč a nahradil radši za podtržítko...zřejmě se s tím při použití apostrofů pracovat dá, ale obecně znamená tečka v SQL něco jinýho ("sloupec 'pocet' tabulky označené jménem 'Min'"), tak aby nedocházelo ke zmatení ;)

Re: Nefunkcny kod na vkladanie dat do databazy

Napsal: 24 led 2012 12:01
od fili
Ahojte, dakujem za odpovede.
Odstranil som apostrofy vo Values()aj tuto cast kodu
$sql=MySQL_Query($sql) Or Die(MySQL_Error());
if($sql){
echo ("Záznam bol úspešne vložený do databázy!");
} else {
echo ("Záznam sa nepodarilo vložiť do databázy!");
}

Skusal som vyhladavanie z tej tabulky a tam mi ziadna diakritika nerobi problemy ani Min. pocet.

Tu je struktura tabulky:
-- Štruktúra tabuľky pre tabuľku `ubytovanie`
--

Kód: Vybrat vše

CREATE TABLE `ubytovanie` (
  `Nazov` varchar(255) collate utf8_slovak_ci NOT NULL,
  `Kraj` varchar(255) collate utf8_slovak_ci NOT NULL,
  `Lokalita` varchar(255) character set utf8 collate utf8_bin NOT NULL,
  `Miesto` varchar(255) collate utf8_slovak_ci NOT NULL,
  `Cena` varchar(150) collate utf8_slovak_ci NOT NULL,
  `Typ` varchar(150) collate utf8_slovak_ci NOT NULL,
  `Min.pocet` varchar(40) collate utf8_slovak_ci NOT NULL,
  `Kapacita` varchar(40) collate utf8_slovak_ci NOT NULL,
  `Sezóna` varchar(255) collate utf8_slovak_ci NOT NULL,
  `Bezbariérový` varchar(255) collate utf8_slovak_ci NOT NULL,
  `Zvieratko` varchar(40) collate utf8_slovak_ci NOT NULL,
  `Url` varchar(255) character set cp1250 collate cp1250_bin NOT NULL,
  `Img` varchar(255) character set cp1250 collate cp1250_bin NOT NULL,
  `Title` varchar(255) character set cp1250 collate cp1250_bin NOT NULL,
  `Keywords` varchar(255) character set cp1250 collate cp1250_bin NOT NULL,
  `Description` varchar(255) character set cp1250 collate cp1250_bin NOT NULL,
  FULLTEXT KEY `Url` (`Url`,`Keywords`,`Description`),
  FULLTEXT KEY `Title` (`Title`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_slovak_ci;

--
-- Sťahujem dáta pre tabuľku `ubytovanie`
--

INSERT INTO `ubytovanie` (`Nazov`, `Kraj`, `Lokalita`, `Miesto`, `Cena`, `Typ`, `Min.pocet`, `Kapacita`, `Sezóna`, `Bezbariérový`, `Zvieratko`, `Url`, `Img`, `Title`, `Keywords`, `Description`) VALUES ('Apartmány Kanianka', 'Trenčiansky kraj', 0x506f6e6974726965, 'Kanianka', '12 €', 'Apartmán', '2', '16', 'Celoročne', 'Neuvedené', 'Áno', 0x61706172746d616e792d736b2f61706172746d616e792d6b616e69616e6b612e706870, 0x6f6272617a6b792f6b616e69616e6b612f43494d47353331375f6d2e6a7067, 0x556279746f76616e69652076204b616e69616e6b65202d2061706172746dc3a16e79207620626cc3ad7a6b6f73746920426f6a6ec3ad63, 0x61706172746dc3a16e207620426f6a6e6963696163682c20756279746f76616e6965207620426f6a6e6963696163682c20756279746f76616e69652076204b616e69616e6b652c205472656ec48d69616e736b79206b72616a, 0x556279746f76616e696520762041706172746dc3a16e65204b616e69616e6b612e2041706172746dc3a16e207361206e616368c3a1647a612076205472656ec48d69616e736b6f6d206b72616a692034206b696c6f6d65747265206f642063656e747261206d6573746120426f6a6e6963652e20506f6ec3ba6b612063656c6f726fc48d6ec3a920756279746f76616e69652073206b6170616369746f752032202d203136206f73c3b4622e20);

Re: Nefunkcny kod na vkladanie dat do databazy

Napsal: 24 led 2012 21:05
od CZechBoY
co je teda za problém po odstranění toho query co jsem psal?
zkus si vypsal ten MySQL_Error() a napiš sem hlášku co vyhodí

koukám, že máš u tabulky kodování UTF8 a u sloupců CP1250, sice to asi nebude hlavní problém, ale já se to snažím vždy sjednotit :)

Re: Nefunkcny kod na vkladanie dat do databazy

Napsal: 24 led 2012 21:27
od fili
Vyhadzuje: Query was empty
Viem to kodovanie je ine, ale vyhladavanie mi s tym funguje.

Re: Nefunkcny kod na vkladanie dat do databazy

Napsal: 25 led 2012 11:11
od preclik
u těch hodnot zkus přidat uvozovky VALUES("'$Nazov'", "'$Kraj'"...až dorazím na svůj pc tak to tvé řešení vyzkouším

Re: Nefunkcny kod na vkladanie dat do databazy

Napsal: 25 led 2012 15:37
od CZechBoY
preclik: dvoje uvozovky?! (dvojtý a jednoduchý) to je blbost..
fili: takhle se nikam nedostanem, někde si smazal nebo přidal něco navíc :(

PHP píše:<?php
echo "Odeslal jsi POST:";var_dump($_POST);echo "<br><br>";

$Nazov = $_POST['Nazov'];
$Kraj = $_POST['Kraj'];
$Lokalita = $_POST['Lokalita'];
$Miesto = $_POST['Miesto'];
$Cena = $_POST['Cena'];
$Typ = $_POST['Typ'];
$Min_pocet = $_POST['Min.pocet'];
$Kapacita = $_POST['Kapacita'];
$Sezóna = $_POST['Sezóna'];


$sql = "INSERT INTO ubytovanie(Nazov,Lokalita,Kraj,Miesto,Cena,Typ,`Min.pocet`,Kapacita,Sezóna,Bezbariérový,Zvieratko) VALUES('$Nazov','$Kraj','$Lokalita','$Miesto','$Cena','$Typ','$Min.pocet','$Kapacita','$Sezóna')";
$query=MySQL_Query($sql);

if($sql){
echo "Záznam bol úspešne vložený do databázy!<br>";
} else {
echo "Záznam sa nepodarilo vložiť do databázy!<br><br>";
echo "MySQL chyba:<span style='color:red'>".MySQL_Error()."</span><br>";
echo "SQL dotaz:<b>".htmlSpecialChars($sql)."</b><br>";
}

mysql_close();
?>

Re: Nefunkcny kod na vkladanie dat do databazy

Napsal: 25 led 2012 20:50
od preclik
přesně takhle bych to viděl já

Kód: Vybrat vše

$sql = "INSERT INTO ubytovanie(Nazov, Lokalita, Kraj, Miesto, Cena, Typ, Min.pocet, Kapacita, Sezóna, Bezbariérový, Zvieratko) VALUES('".$Nazov."', '".$Kraj."', '".$Lokalita."', '".$Miesto."', '".$Cena."', '".$Typ."', '".$Min.pocet."', '".$Kapacita."', '".$Sezóna."')";

ale každopádně bych ty proměnné pojmenoval malými písmeny a bez interpunkcí (Sezóna=sezona) atd. stejně tak i sloupce v databázi.vyhneš se zbytečným problémům

--- Doplnění předchozího příspěvku (Stř Led 25, 2012 8:56 pm) ---

a každopádně tam nevidím vůbec připojení k databázi...pošli mi prosím kdyžtak vyexportovanou tabulku z databáze a já se ti to pokusím sesmolit

Re: Nefunkcny kod na vkladanie dat do databazy

Napsal: 25 led 2012 21:00
od CZechBoY
a nebo ještě univerzálním způsobem přes pole
PHP píše:$insert=Array(
'Nazov' => $Nazov,
'Lokalita'=> $Lokalita,
'Kraj' => $Kraj,
'Miesto' => $Miesto,
'Cena' => $Cena,
'Typ' => $Typ,
'Min.pocet'=> $Min.pocet,
'Kapacita'=> $Kapacita,
'Sezóna' => $Sezóna
);
$sql="INSERT INTO ubytovanie (`".Implode('`',Array_Keys($insert))."`) VALUES ('".Implode("'",Array_Values($insert))."')";
$query=MySQL_Query($sql);
If($query)
echo "OK";
Else
echo "Chyba:".MySQL_Error();


při psaní tohoto kodu jsem si všiml, že tam máš o 2 sloupce více než hodnot, to bude další chyba, kvůli které neprojde tento dotaz - oba jsme ho jako stroje přepsali bez jakéhokoliv překontrolování
můj způsob přesloupcování nebo přehodnotování neumožňuje a je dobře čitelný
pro zajímavost: tento zápis se používá ve frameworkách :)

Re: Nefunkcny kod na vkladanie dat do databazy

Napsal: 25 led 2012 21:12
od preclik
a na co tam máš teď ty dvoje uvozovky?:)