Autor Zpráva
lokix
Profil
Zdravím všechny zde na fóru,

chtěl bych Vás požádat touto cestou o radu, pomoc či podrobnější nakopnutí jak vyřešit problém s INSERTEM dat do více tabulek. Snad nevadí, že jsem zvolil php kategorii ale jedná se jak o php tak i mysql.

Jde mi o zápis / vložení produktů do kategorií a jejich vazební tabulkou (3 tabulky celkem). 1 Produkt má zatím jen jednu kategorii - výrobce ale do budoucna chci myslet na jiný projekt kde budou i podkategorie.
Ale teď k problému:

Jelikož mám tabulku "products" kde je:id , id_stranky, www,atd... pak tabulku "kategories": id,name (1-Výrobce 1;2-Výrobce2;atd...) a spojovací tabulku "product_kat": id,produkty,kategorie (1-1-1), kde id je jasné,produkty je id produktu a poslední kategorie je id kategorie. Níže uvádím includovaný soubor "uvod.php" který se načítá na střed stránky se selectem na kategorii co jsem tady na fóru našel a pár věcí tu a tam poupravil. Select funguje sice né tak jak bych chtěl úplně ale hlavní problém je jak udělat insert aby se vše zapsalo správně. Formulář mám a klasický insert zvládnu ale jen do jedné tabulky jenže já potřebuji insertnout data do "products" ale také do vazební tabulky "product_kat tzn. Vložím nový produkt a přidám mu např. ze selectu kategorie-výrobce aby byla vazba např. 1-1-1;2-2-3;atd...

Předem děkuji za jakoukoliv pomoc a kdyby bylo potřeba něco dalšího vložit tak stačí napsat a je to tu.

<?php
require_once "adm/auth/inc/db_conn.php";
require_once('adm/auth/inc/Pager.class.php');//Slouzi pouze pro strankovani a odkaz na kod je: http://snipt.org/mmpop/
//vytvoreni objektu, jako parametry konstruktoru se 
//predavaji SQL dotaz a parametr URL, ktery bude pager
//pouzivat pro odkazy na dalsi stranky
$pager = new Pager('SELECT 
`products`.`nazev` AS productname,
     `kategories`.`name` AS katname,
     `www`,
     `cena`,
     `nazev`,
     `pictures`
   FROM `products`
   LEFT JOIN `product_kat` ON `products`.`id`=`product_kat`.`produkty`
   LEFT JOIN `kategories` ON `product_kat`.`kategorie`=`kategories`.`id` '.$wh.' ORDER BY '.$zarad.'', 'pages');
$pager->PageSize = $count;
$pager->PagerAlign = "center";
//ziska z databaze pozadovanou cast vysledkove sady
$pager->DataBind();

//postupne ziskavani jednotlivych zaznamu z vysledkove sady
while ($obj = $pager->GetOne())
  echo "<div class=\"ofer-box\">
           <div class=\"ofer-box-top\"><!-- --></div>
           <a class=\"blue\" href=\"index.php?vyrobce=".$obj->katname."&amp;read=".$obj->www."\">".$obj->nazev."</a>
           <a href=\"index.php?vyrobce=".$obj->katname."&amp;read=".$obj->www."\"><img class=\"product\" src=\"img/".$obj->pictures."\" alt=\"\" /></a>
          <div class=\"order-btn\"><p>".$obj->cena."&nbsp;Kč</p>
              <a href=\"\"><img src=\"img/order-img.gif\" alt=\"\" /></a>
              <div class=\"order-btn-2\"><!-- --></div>
           </div> 
        </div>";
//vypis odkazu na stranky
//nebyly pouzity zadne mody, proto se pouzije 
//defaultni strankovani
?>
xmark
Profil
$qry = "INSERT INTO tbl1 (a, b, c) VALUES (1,2,3)";
$ret=mysql_query($qry);

$nove_id= mysql_insert_id();

$qry = "INSERT INTO vazby (tbl1_id, x, y) VALUES (".$nove_id.",2,3)";
$ret=mysql_query($qry);
xmark
Profil
Ještě bych dodal, že aby to fungovalo, tak v první tabulce musí být zřejmě něco, co funguje jako ID, tedy nejlépe klasicky nastavený sloupec ID.
lokix
Profil
xmark:
Díky vyzkouším. Jinak jak jsem psal tak první tabulka má i klasické id (auto_increment) které je navázáno na vazební tabulku.
Update:
Tak jsem to sprovoznil díky moc "xmark-u" rep+

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0