Autor Zpráva
Zoric
Profil *
ahoj, potrebuji poradit, jak na zapis do vice tabulek DB soucastne, ale pozor tabulky se lisi sloupci, co je pro tyto tabulky spolecne, tak je id nic vice. Nize je uvedeny kod pro zapis pouze do jedne tabulky, ale ja potrebuji do vice, predem dekuji za pomoc. Mirek

<?

if (isset($_GET["id"])) {
array_walk($set, create_function('&$val, $key', '$val = "$key = $val";'));
$result = mysql_query("UPDATE udaje SET " . implode(", ", $set) . " WHERE ID = '$_REQUEST[id]'") or die(mysql_error());
} else {
$result = mysql_query("INSERT INTO udaje (" . implode(", ", array_keys($set)) . ") VALUES (" . implode(", ", $set) . ")") or die(mysql_error());
}

?>
Honza Široký
Profil
Řešením jsou transakce: http://dev.mysql.com/doc/refman/5.0/en/transactional-commands.html
Ale stejně si myslim, že to nebude potřeba, protože dost webových aplikací se bez nich obejde. To bych potřeboval vědět, co to má přesně dělat.
Hugo
Profil
Zoric

A nestačí ti prostě použít několik insertů po sobě?
Robin.P.
Profil *
Honza Široký

No potreboval bych pouze php script, ktery z jednoho formulare zapise ruzna data do vice odlisnych tabulek v jedne databazi. Proste potrebuji nejake voditko, ktereho bych se chytnul a tim padem se vyvaroval klasickym INSERTům.
koudi
Profil
Robin.P.
Oni jsou i 'neklasické' INSERTY? :)
Robin.P.
Profil *
Hugo

No to staci, ale ne klasickych, proste potrebuji takove INSERTy, jaky je INSERT zde uvedeny.
Robin.P.
Profil *
koudi

No a takove prave potrebuji :o) Nevis nahodou o nejakem, potrebuji voditko?
koudi
Profil
Robin.P.
Je mi líto, ale jediný způsob zápisu dat do databáze co znám, je INSERT :)
Robin.P.
Profil *
koudi

To ja prece vim, ze je INSERT, SELECT, UPDATE, ale ja potrebuji mit v jednom formulari 3x INSERT, ktery bude uklidat data do tri ruznych tabulek v db a potrebuji poradit od zkusenejsich, jak na to, protoze se chci vyhnout klasickemu zapisu, protoze v nemem musi byt presny v poradi tak, jak v db.
Hugo
Profil
Robin.P.

Z toho co tady píšeš vůbec nechápu o co ti jde. Je problém dát ten insert třikrát (pokaždé bude zapisovat do jiné tab.)? Pokud ano, tak proč?
Robin.P.
Profil *
Hugo


Je problém dát ten insert třikrát (pokaždé bude zapisovat do jiné tab.)?

Ano kazdy INSERT bude zapisovat odlisna data do odlisne tabulky v db. Napr. name, password do tabulky 'hesla', jmeno, prijmeni atd do tabulky 'uzivatele' ..................................
Co by melo byt spolecne pro vsechny tabulky, tak je pouze 'id'

Pokud ano, tak proč?

Aby jsem v tom mel poradek :o)
Hugo
Profil
Aha, takže ty chceš jedním insertem zapsat data do tří tabulek s různou strukturou najednou. Tak to (alepoň pokud vím) nejde.

IMHO je tady nejrozumnější řešení použít tři inserty (alespoň pro MySQL).
koudi
Profil
data do tří tabulek s různou strukturou najednou
Hugo má imho pravdu - tady bych to viděl na tři různý inserty.
Robin.P.
Profil *
Hugo

Aha, takže ty chceš jedním insertem zapsat data do tří tabulek s různou strukturou najednou. Tak to (alepoň pokud vím) nejde.

Spatne jsi to pochopil, chci nasledujici:

$result = mysql_query("INSERT INTOhesla (" . implode(", ", array_keys($set)) . ") VALUES (" . implode(", ", $set) . ")") or die(mysql_error());

$result = mysql_query("INSERT INTOuzivatele (" . implode(", ", array_keys($set)) . ") VALUES (" . implode(", ", $set) . ")") or die(mysql_error());

.
.
.
.
A pokud mam promenou $set["login"] = "'$_POST[login]'"; tak me to ohlasi chybu, ze sloupec 'login' neni v tabulce 'uzivatele' .
Hugo
Profil
Jediné co mě napadá je napsat funkci, která proleze to pole a vybere pouze ty prvky, které do dané tabulky patří.
Robin.P.
Profil *
Hugo

A nebyl by prosim nejaky priklad te funkce, aby to pochopil?
Hugo
Profil
Psát se mi to nechce, ale princip může být ten, že si vytáhneš strukturu tabulky, z ní vezmeš názvy sloupců a pak jen vybereš ty prvky pole, které potřebuješ.
Robin.P.
Profil *
Hugo

Dobre, pokusim se to tedy napsat sam. A jinak diky.
tiso
Profil
Robin.P.
...podľa toho čo si tu napísal to máš strašne divoké... Vráť sa na začiatok a povedz si:
1. čo vlastne chceš od návštevníka,
2. sprav si formulár,
3. ošetrenie vstupných premenných
4. nakoniec ukladanie do databázy...
A keď niečo z toho nebudeš vedieť tak tu uveď všetky tie predchádzajúce kroky, aby si nebol v obraze len ty a ostatný museli hádať...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0