Autor Zpráva
valocsay
Profil *
Chyba: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`Ulica`=,`Cislo_domu`=,`uzitkova`=,`poschodie`=,`max_poschodie`=,`Vytah`=,`balko' at line 1

Kód:
<?php
if(isset($_GET['Submit'])){
            $q="UPDATE `nehnutelnosti` SET `Cena`=$cena,`Ulica`=$ulica,`Cislo_domu`=$cislo,`uzitkova`=$plocha,`poschodie`=$poschodie,`max_poschodie`=$max_poschodie,`Vytah`=$vytah,`balkon`=$balkon,`M2`=$balkon_plocha,`pocet`=$balkon_pocet,`pivnica`=$pivnica,`typ`=$pivnica_typ,`rozloha`=$pivnica_plocha,`WC`=$WC,`Podlaha`=$podlaha,`Kuchina`=$kuchina_vybavenie,`parkovanie`=$parkovanie,`kurenie`=$kurenie,`Zariadenie`=$zariadenie,`vybavenie`=$vybavenie,`bezpecnost`=$bezpecnost,`volane`=1 WHERE cislo=$ID";
            $q2="UPDATE `klienti` SET `Meno`=$meno,`Priezvisko`=$priezvisko,`Email`=$mail, WHERE cislo=$ID";
            mysql_query($q) or die(mysql_error());
            mysql_query($q2) or die(mysql_error());
                            echo mysql_error();
                            echo "<span style=\"color:green;text-align:center;\">podarilo sa upraviť</span>";

            }
?>
prosím poradí niekto čo s tým je? :P
juriad
Profil
Všechny ty proměnné ti nejspíš neexistují. Nejčastější potíže s PHP (FAQ) » Nefungují proměnné z formuláře nebo z URL (vypnuté register globals)
Když skladáš dotaz tímto způsobem, musíš data správně escapovat.
valocsay
Profil *
prišiel som na to :P bola tam chyba že všetko muselo byť v '".."' :D ale stále mi to hádže error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
a error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE cislo=' at line 1
Vyzerá to takto: (všetky premenné mam vyjadrené)
<?php
                    echo " <input type=\"button\" name=\"neza\" value=\"Nezastihnutý\" onclick=\"location.replace('zoznam.php')\">";
                    echo " <input type=\"button\" name=\"bezrk\" value=\"Bez RK\">";

        if(isset($_GET['Submit'])){
            $q="UPDATE `nehnutelnosti` SET `Cena`='".$cena."',`Ulica`='".$ulica."',`Cislo_domu`='".$cislo."',`uzitkova`='".$plocha."',`poschodie`='".$poschodie."',`max_poschodie`='".$max_poschodie."',`Vytah`='".$vytah."',`balkon`='".$balkon."',`M2`='".$balkon_plocha."',`pocet`='".$balkon_pocet."',`pivnica`='".$pivnica."',`typ`='".$pivnica_typ."',`rozloha`='".$pivnica_plocha."',`WC`='".$WC."',`Podlaha`='".$podlaha."',`Kuchina`='".$kuchina_vybavenie."',`parkovanie`='".$parkovanie."',`kurenie`='".$kurenie."',`Zariadenie`='".$zariadenie."',`vybavenie`='".$vybavenie."',`bezpecnost`='".$bezpecnost."',`volane`=1 WHERE `cislo`=".$ID;
            $q2="UPDATE `klienti` SET `Meno`='".$meno."',`Priezvisko`='".$priezvisko."',`Email`='".$mail."', WHERE cislo=" .$ID;
            mysql_query($q) or die(mysql_error());
            mysql_query($q2) or die(mysql_error());
                            echo mysql_error();
                            echo "<span style=\"color:green;text-align:center;\">podarilo sa upraviť</span>";

            }
        ?>
juriad
Profil
Vypiš si $q a $q2 předtím než je provedeš.
bestik_63
Profil
ta čárka za emailem tam nemá co dělat. Tu jsi tam zapoměl když jsi dělal ctrl +c a ctrl +v :-)
`Email`='".$mail."', WHERE cislo=" .$ID;
valocsay
Profil *
bestik_63:
ďakujem, funguje. A vedel by si poradiť aj s tou prvou chybou?
Martin2
Profil *
valocsay:
juriad má v příspěvku [#2] pravdu. Plus bych přidal, že bys nikdy neměl v ostrém provozu vypisovat chyby přímo do stránky. Navíc, extenze Mysql, kterou používáš, je zastaralá a v PHP7 je již odstraněna.

Long story short, docela jsi zanedbal studium elementárních základů PHP, měl by ses tomu ještě věnovat, než budeš publikovat veřejný projekt.
valocsay
Profil *
Ja neplánujem nič zatiaľ publikovať :). Najprv ako hovoríš sa to všetko musím naučiť. :) Tento web slúži iba pre mňa ako databáza. ale neviem ako to mám vypísať keďže keď tam dám <input type="button" name="Submit" value="Odoslať" /> tak po kliknutí to nič nespraví. doteraz som tam mal <input type="submit" name="Submit" value="Odoslať" /> ale to mi prehodí stránku na základ :P to znamená na index.php miesto index.php?id="" :P čo s tým?
Martin2
Profil *
valocsay:
čo s tým?
[#2]
valocsay
Profil *
ale ako to mám vypísať keď mi nejde stlačiť tlačidlo? na to som sa pýtal :)
juriad
Profil
valocsay:
Typ inputu musí být submit a musíš v atributu action formuláře mít uvedené id. Ale to je jen dočasná pomoc, protože po zpracování formuláře musíš vždy přesměrovat.
valocsay
Profil *
Nerozumie. Som začiatočník :D mohol by si to prosím napísať v názornom kóde?
Martin2
Profil *
Nechceš si radši prostudovat nějakou učebnici pro začátečníky (třeba tuhle)? Tohle jsou opravdu elementární základy.
valocsay
Profil *
Viem že sú to základy ale ja to robím iba zo zábavy :). Mňa viac baví keď niečo napíšem s minimom vedomostí a funguje to. nemám náladu si čítať dlhé manuály. názornú ukážku som chcel preto, preto že keď som to zadal tak ako mi vy vravíte (bez id v action pretože som nevedel kam) mi to vypísalo toto UPDATE `nehnutelnosti` SET `Cena`='',`Ulica`='',`Cislo_domu`='',`uzitkova`='',`poschodie`='',`max_poschodie`='',`Vytah`='',`balkon`='',`M2`='',`pocet`='',`pivnica`='',`typ`='',`rozloha`='',`WC`='',`Podlaha`='',`Kuchina`='',`parkovanie`='',`kurenie`='',`Zariadenie`='',`vybavenie`='',`bezpecnost`='',`volane`=1 WHERE `cislo`=You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 hladám tu normálnu pomoc a nie odkazovanie na manuáli :/
lionel messi
Profil
valocsay:
Mňa viac baví keď niečo napíšem s minimom vedomostí a funguje to. nemám náladu si čítať dlhé manuály.

Až také dlhé nie sú. Mimochodom, slovo kuchiňa sa v slovenčine (podobne ako jeho český ekvivalent) píše kuchyňa.
juriad
Profil
1. když provádíš akci, která něco mění, musíš odeslat formulář metodou post (atribut method elementu form)
2. skript, který bude formulář zpracovávat zadáš do atributu action elementu form
3. formulář se odesílá inputem typu submit
4. hodnoty z formuláře najdeš v $_POST ve skriptu, který jsi zadal v atributu action
5. v něm také provedeš zápis do databáze, nesmíš v něm nic vypsat
6. na jeho konci přesměruješ pomocí funkce header na vhodnou stránku (a to v případě úspěchu i neúspěchu).

Když budeš ladit ten zápis do databáze, v tom skriptu (bod 5) si budeš vypisovat třeba ty sestavené dotazy a musíš si dočasně zakázat/zakomentovat přesměrování (bod 6).

Ještě k té databázi, nepoužívej zastaralé rozšíření mysql_*, použij alespoň novější mysqli_* (liší se obvykle jedním povinným parametrem). Když sestavuješ dotaz musíš data, která do něj vkládat správně escapovat a vkládat je se správným datovým typem (čísla jako čísla, NULL jako literál, snad vše ostatní jako řetězce).

Takto se to má dělat. To, co všude možně najdeš, je často chybně. Na to id v action raději zapomeň.


Problém je v tom, že proměnná $ID neexistuje. Proto ten dotaz končí rovnítkem a databáze si na to stěžuje.
valocsay
Profil *
1.Premenná $ID je vyjadrená v inej časti kódu. Tento kód ma 500 riadkov.
2.takže musím mať 2 dokumenty jeden na formulár a druhý na spracovane?
3.Ak prejdem na Mysqli tak musím prepisovať asi všetky kódy čo mám nie len o to "i" že?
juriad
Profil
valocsay:
1. Evidentně není. Co ti řekne:
var_dump($ID);

2. Ne nutně, ale pro začátek je to rozhodně lepší. Jinak bys asi na začátku skriptu kontoloval, zda je pole $_POST prázdné nebo není a podle zpracovávat formulář nebo ne. Ta věta o nutnosti přesměrování platí pořád. Tedy zpracovat bys jej musel před tím než vůbec vypíšeš <htm>.

3. Ano. Jelikož mysql_* v příští verzi PHP už nebude existovat a bylo označeno za zastaralé už před dvěma rokama, vyplatí se ti to.
valocsay
Profil *

<body background="farebne-pozadie,-duhove-farby-161060.jpg">
<div id="right">
        <?php
        $ID=$_GET['id'];
        include "config.php";
        ?>
    </div>
<div id="menu">
        <div id="menu_1">
        <a href="index.php">Pridať</a><br /> <a href="zoznam.php">Zoznam nehnutelnosti</a><br />
        <hr />
        <h1> Tieto údaje treba zistiť:</h1>
        <form action="volat.php" method="POST">
        <?php
        $ID=$_GET['id'];
        $sql = mysql_query("SELECT * FROM nehnutelnosti WHERE cislo=$ID");
                    
                    while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)){
                    
tu je vyjadrené $IDň

a čo má byť v ktorom dokumente? napr. mám dokument form.php a send.php do formu mam dať iba form? alebo aj premenné? ak aj premenné ako dostanem premenné do send.php? alebo ak majú byť premenné v send.php ako ich definujem?
juriad
Profil
Tak zřejmě při zpracování formuláře nepředáváš id metodou GET.
Jak jsem už psal, při odesílní editovacího formuláře používej metodu POST v něm pak vytvoř jeden hidden input s jménem id a hodnotu $ID.
Při zpracování formuláře jej pak najdeš v $_POST.

Nebo je možné jej (jak jsem již naznačil) doplnit do action:
<form action="skript.php?id=$id" ...>
, pak bude v $_GET, tak jak jsi zvyklý. Toto má výhodu tu, že se objeví i acess logu apache. A samozřejmě, že stránka s formulářem tam to id musí vyplnit, nestačí jen vypsat „dolar-id“.

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:

0