Nefunkcny kod na vkladanie dat do databazy

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

fili
Level 1.5
Level 1.5
Příspěvky: 102
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline

Nefunkcny kod na vkladanie dat do databazy

Příspěvekod fili » 24 led 2012 09:20

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!

Reklama
Antena
nováček
Příspěvky: 29
Registrován: leden 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod Antena » 24 led 2012 10:01

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á!) :-)

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod CZechBoY » 24 led 2012 10:08

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č
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
Ellrohir
nováček
Příspěvky: 49
Registrován: prosinec 11
Bydliště: Praha
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod Ellrohir » 24 led 2012 10:47

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í ;)
"Zprávy mají velikost, třeba i nulovou, a mají nějaký význam, třeba i žádný."

fili
Level 1.5
Level 1.5
Příspěvky: 102
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod fili » 24 led 2012 12:01

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);

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod CZechBoY » 24 led 2012 21:05

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 :)
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

fili
Level 1.5
Level 1.5
Příspěvky: 102
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod fili » 24 led 2012 21:27

Vyhadzuje: Query was empty
Viem to kodovanie je ine, ale vyhladavanie mi s tym funguje.

Uživatelský avatar
preclik
Level 2.5
Level 2.5
Příspěvky: 277
Registrován: říjen 07
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod preclik » 25 led 2012 11:11

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

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod CZechBoY » 25 led 2012 15:37

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();
?>
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
preclik
Level 2.5
Level 2.5
Příspěvky: 277
Registrován: říjen 07
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod preclik » 25 led 2012 20:50

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

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod CZechBoY » 25 led 2012 21:00

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 :)
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
preclik
Level 2.5
Level 2.5
Příspěvky: 277
Registrován: říjen 07
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod preclik » 25 led 2012 21:12

a na co tam máš teď ty dvoje uvozovky?:)


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti