Autor Zpráva
Jany
Profil *
Ahoj,
mám webovský formulář. Odešlu z něj data na PHP skrip, který je má zpracovat.

Zpracování spočívá v uložení přijatých hodnot do databáze.

data z formuláře jsou ve tvaru:

jméno_prvku=hodnota

Já chci do databáze ukládat ve tvaru:

mysql_query("INSERT INTO $tb values ('jméno_prvku', 'hodnota', 'něco_dalšího', 'něco_dalšího_2')", $spojeni);.


Jinými slovy: Z formuláře odešlu data z několika inputů a s různými hodnotami. Při zpracovávání však dopředu neznám jména těch inputů. Do jednoho řádku v databázi chci uložit jak jméno inputu, tak hodnotu v něm.


Jak mám tedy přistoupit k těm příchozím datům - přes jméno formuláře?
Jany
Profil *
Prosím, podívejte se na stránku: http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=28&topic=8 5260
v jednom mém příspěvku je napsáno: "a uložím to do tabulky dochazka"
a to právě teď nevím, jak provést...

možná používám úplně chybný postup, ale nenapadá mne, jak to udělat jinak.
Taps
Profil
Jany
nemáš třeba na mysli že neznáš hodnoty formulářových polí ?
podívej se třeba na http://tvorba-webu.zdarek.com/php/formulare.php
Jany
Profil *
nemáš třeba na mysli že neznáš hodnoty formulářových polí ?

Ne, to nemám na mysli. Neznám totiž ani jména těch formulářových polí.
YoSarin
Profil
Jany
Jen rychlý nástřel:
$queryString = "INSERT INTO table('id', 'input_name', 'input_value') VALUES %s";
$data = array();
foreach ($_POST as $title => $value) {
    $title = mysql_escape_string($title);
    $value = mysql_escape_string($value);
    $data[] = "(%, '$title', '$value')";
}
if (!empty($data)) {
    $queryString = sprintf($queryString, implode(", ", $data));
    mysql_query($queryString);
}
YoSarin
Profil
A hned chyba - u jmen sloupečů (závorka za table) nemají být uvozovky :)

EDIT: A ještě to bude chtít nějak ošetřit případná POSTnutá pole - teď by se v tom případě do db uložila jen konverze na string, což tuším je "Array" - vyřešíš to pomocí is_array() a buď json_encode, nebo serialize

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0