Zapis do MySQL + PDO – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zapis do MySQL + PDO – PHP – Fórum – Programujte.comZapis do MySQL + PDO – PHP – Fórum – Programujte.com

 

zelenac10
Stálý člen
10. 11. 2016   #1
-
0
-

 Zdravim,

mam menší problém vo formulári použivam arrvay no do DB sa mi zapiše prvy riadok dobre,

ale do druheho mi zobere s každej prvej hodnoty 2 pismeno keď je 2 set prázdny.

HTML

                                         
                      <form action="#" method="post">
                       <h3>Názov podstránky</h3>                      
                       <div class="form-group">                           
                        <input type="text" class="form-control" name="nazov[]" id="nazov" placeholder="Názov <?=$jazykJedna;?> *" required>
                        <input type="text" class="form-control" name="klucoveSlova[]" id="klucoveSlova" placeholder="Klučové slová <?=$jazykJedna;?> *" required>
                        <input type="text" class="form-control" name="kratkyPopis[]" id="kratkyPopis" placeholder="Kratký popis <?=$jazykJedna;?> *" required>
                       </div>
                       <div class="form-group">   
                        <input type="text" class="form-control" name="nazov[]" id="nazov" placeholder="Názov <?=$jazykDva;?>">
                        <input type="text" class="form-control" name="klucoveSlova[]" id="klucoveSlova" placeholder="Klučové slová <?=$jazykDva;?>">
                        <input type="text" class="form-control" name="kratkyPopis[]" id="kratkyPopis" placeholder="Kratký popis <?=$jazykDva;?>"> 
                       </div>
adť...... až po 8

PHP 

            $nazov = htmlspecialchars($nazov[$i]); 
            $klucoveSlova = htmlspecialchars($klucoveSlova[$i]);
            $kratkyPopis = htmlspecialchars($kratkyPopis[$i]);   
            
            if (!isset($nazov)){$nazov = "NULL";}
            if (!isset($klucoveSlova)){$klucoveSlova = "NULL";}
            if (!isset($kratkyPopis)){$kratkyPopis = "NULL";}  
            
            $zapisPDO = $pdo->prepare("INSERT into stranka (idNastevnia,nazov,klucoveSlova,kratkyPopis,jazyk) VALUES(:idNastevnia,:nazov,:klucoveSlova,:kratkyPopis,:jazyk)");
            $zapisPDO->bindValue(':idNastevnia',  $StrankaId);
            $zapisPDO->bindValue(':nazov',  $nazov);
            $zapisPDO->bindValue(':klucoveSlova',  $klucoveSlova);
            $zapisPDO->bindValue(':kratkyPopis',  $kratkyPopis);
            $zapisPDO->bindValue(':jazyk',  $i);
            $zapisDB = $zapisPDO->execute();          
            if (!$zapisDB){$MySQLerror++;} 
Nahlásit jako SPAM
IP: 188.121.182.–
Octopia.sk - Záhrada na kľúč
Kit+15
Guru
10. 11. 2016   #2
-
0
-

#1 zelenac1
Už na prvních třech řádcích si zdemoluješ všechna 3 pole, tak se nediv.

BTW: K čemu je dobrá metoda bindValue()?

BTW2: Proč místo NULL zapisuješ do databáze string "NULL"?

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:bded:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
11. 11. 2016   #3
-
0
-

1. Html kod mas spatne. id je unikatni, nemuzes mit dva tagy nazvane id="nazov" a id="nazov" na te same strance.

2. Pred timto kodem je jste znacna cast kodu, dulezita, nepridana do forka. Minimalne kod pro cyklus. Takze potom sorac, kdyz problem nebude resitelny :)

$nazov = htmlspecialchars($nazov[$i]);
$klucoveSlova = htmlspecialchars($klucoveSlova[$i]);
$kratkyPopis = htmlspecialchars($kratkyPopis[$i]);

3. viz kod 2, viz Kid, ale neumi to napsat :)
predstav si, ze mas takovyto zapis
$nazov = array(1, 2, 3, 4); var_dump($nazov); // vypise array(1, 2, 3, 4)
$nazov = $nazov[0]; var_dump($nazov); // vypise 1
var_dump($nazov); // stale vypise 1, uz z toho nikdy puvodni array nebude, tu uz jsi znicil predchozim radkem.

4. A tak jako, co chces docilit timto?
if (!isset($nazov)){$nazov = "NULL";}
if (!isset($klucoveSlova)){$klucoveSlova = "NULL";}
if (!isset($kratkyPopis)){$kratkyPopis = "NULL";}
Isset zjistuje existenci. Ale preci 3 radky nahore mu priradis vysledek funkce htmlspecialchars. Podle dokumentace htmlspecialchars vrati vzdy string. Vysledkem isset bude vzdy true. Tyto 3 radky se budou tudiz vzdy ignorovat.
'Description string htmlspecialchars ( ...'
'Return Values The converted string.'
http://php.net/…specialchars

Mimochodem, ja pouzivam htmlspecialchars jen pro generovani vystupu pro obrazovku a mam to prepsane na takoveto funkce

function escapeHtml($str) {return htmlspecialchars($str);}
function escapeUrl($str) {return urlencode($str);}
function unescapeUrl($str) {return urldecode($str);}
...

protoze mne nebavi hledat v dokumentci, jak si to zrovna pojmenovali :)

--- nebo treba pro js

function isExist(item) {return typeof(item)!=='undefined' && item!=null;}
function isSet(item,key) {return typeof(item[key])!='undefined' && item!=null;}
function isObject(item) {return typeof(item)=='object' && item!=null;}
function isArray(item) {return typeof(item)=='array' && item!=null;}

this.csv = {
    sep_row   : "\n",
    sep_col   : ';',
    enclosure : '"',
    escape    : '"'
    }

this.escapeCsv = function(str)
    {
    var reg, spc, repl, csv;
    csv = this.csv;
    spc = '(['+escapeRegexp(csv.enclosure)+'])';
    re  = new RegExp(spc,'g');
    str = str + ''; //convert to string
    str = str.replace(re,csv.escape+'$1');
    spc = '['+escapeRegexp(csv.sep_col)+escapeRegexp(csv.sep_row)+']';
    re  = new RegExp(spc,'g');
    str = str.search(re)!=-1 ? csv.escape + str + csv.escape : str;
    // ignore RFC 4180
    return str;
    }

function escapeRegexp(str)
{
var reg, symbols;
spc = ('(['+'\\^$*+?.()|{}[]'.split('').join('\\'))+'])';
reg = new RegExp(spc,'g');
//alert(str)
return str.replace(reg,'\\$1');
}

Nahlásit jako SPAM
IP: 2001:718:2601:26c:1c1a:87...–
Kit+15
Guru
11. 11. 2016   #4
-
0
-

#3 peter
Ty nepoužíváš našeptávání názvů funkcí v editoru?

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
11. 11. 2016   #5
-
0
-

Far nic takoveho nastesti nema. Jeste, to by chybelo :)

Nahlásit jako SPAM
IP: 2001:718:2601:26c:1c1a:87...–
peter
~ Anonymní uživatel
4014 příspěvků
11. 11. 2016   #6
-
0
-

Jo, jeste k tomu htmlspecialchars, ty to pak dal pouzivas pro sql. Tak to jako nechapu proc to escapujes na html a ne na sql? To bind by to mohlo escapovat mozna samo, kdyz je to pdo.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:1c1a:87...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 60 hostů

Podobná vlákna

PDO pripojenie do MySQL — založil zelenac1

MySQL Zapis — založil zelenac1

Zápis do mysql — založil FanatiK

Zápis do databáze Mysql — založil Michal Voldán

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý