Autor Zpráva
Brutuska
Profil
Dobrý den,

Mám vytvořený takový menší systém pro naše prodejce kde si můžou přečíst své privátní zprávy, kouknout na PDF ceníky, katalogy a objednávky. A právě řeším rozšíření objednávek o jich detail. V současnosti se můžou podívat pouze na obecná data jako datum přijetí, spedice atd... Ale nemohou se podívat co bylo objednáváno. Bylo to tvořeno za účelem pouze informovat o stavu objednávky, ale rád bych to rozšířil. proto se ptám o názor / radu jak nejlépe navrhout schéma a provázanost databází. Podotýkám, že data budu přepisovat z objednávek do systému já - nejedná se o on-li objednávání.

V současnosti mám databázi "uzivatele" a "objednavky" propojené jsou pomocí pole login. Přemýšlím o vytvoření další databáze "objednavky_detail", která by indexovala na tabulky s obsahem objednávek.

Prosím o názory jak tuto věc obecně nejlépe vyřešit. Jedná se mi o zvolení nejlepšího principu.

Díky
tiso
Profil
produkty(id, ...)
uzivatele(id, ...)
objednavky(id, id_uzivatele, ...)
objednavky_produkty(id_objednavky, id_produktu, cena, mnozstvi)
Brutuska
Profil
Mám trochu problém. Při výpisu detailu objednávek mi vypisuje všechny data z tabulky které se shodují - viz níže. Tzn. Mám od jednoho uživatele třeba 3 objednávky, které obsahují deset položek. Teď mi to vypisuje ke každé objednávce všechny položky - neroztřizuje to podle aktuálně otevřeného detailu.

SELECT * FROM orders,orders_details,products WHERE login='{$_SESSION['SESS_LOGIN']}' AND order_ID_detail=order_id AND product_ID_detail=product_ID"


PHP volání sql :

	  while ($order_detail_list = mysql_fetch_assoc($vypis_orders_details))  {

	  	echo "<TABLE>
				<TR>
					<TD style='padding-left:5px;width:150px'>".$order_detail_list['polozka']."</TD>
					<TD style='padding-left:5px;width:200px'>".$order_detail_list['popis']."</TD>
					<TD style='text-align:center;width:105px'>" .$order_detail_list['mnozstvi']. "</TD>
					<TD style='text-align:center;width:110px'>".$order_detail_list['cena']."</TD>
				</TR>	
			 </TABLE>";
			
	  }


Nevím jak mu říct, aby prováděl vypis detailů z aktuální rozkliknuté objednávky a ne všechny detaily najednou...
Díky za rady
Brutuska
Profil
Aspoň obecně prosím. Jestli mám chybu v SELECT z databáze nebo mi v php chybí proměné.

Tohle je zápis, který odkazuje na detaily :

  while ($orders_list = mysql_fetch_assoc($vypis_list))  {

		 echo "
		 <TABLE cellspacing='4' >
		 <TR style='vertical-align:top; padding:3px 0px 3px 0px'>
		 <TD width='20px'>";
		 
		 if ($orders_list['uzavreno'] == 'ne') {
		 	echo "<IMG SRC='obrazky/nevykryto_icon.jpg'>"; }
		 else 
		 	{echo "<IMG SRC='obrazky/vykryto_icon.jpg'>"; }
		 
		 echo "</TD>
		 <TD style='width:80px;'>".$orders_list['datum_prijeti']."</TD>
		 <TD style='width:100px;padding-left:5px'>".$orders_list['objednavka_cislo']."</TD>
		 <TD style='width:250px;padding-left:5px'>".$orders_list['stav']."</TD>
		 <TD style='width:100px;'>".$orders_list['datum_odeslani']."</TD>
		 <TD style='width:50px;text-align:center'>".$orders_list['spedice']."</TD>
		 <TD style='width:100px;padding-left:5px'>";
		 
		 if ($orders_list['spedice'] == 'PPL' and $orders_list['cislo_zasilky'] != 'nepřiděleno' ) 
		 	echo  "<a href='http://www.ppl.cz' target='_blank'>".$orders_list['cislo_zasilky']."</a>";
		 else if ($orders_list['spedice'] == 'DHL' and $orders_list['cislo_zasilky'] != 'nepřiděleno') 
		 	echo  "<a href='http://www.dhl.cz/cs/express/sledovani_zasilek.html' target='_blank'>".$orders_list['cislo_zasilky']."</a>";
		 else 
			echo $orders_list['cislo_zasilky']; 	
			
		 echo "
		 </TD>
		 <TD style='padding-left:30px'><a href='order-details.php' target='_self'>detail</TD> // tady to odkazuje na detaily objednávky
		 </TR>
		 </TABLE>"; 
  }
panther
Profil
Brutuska:
tady to odkazuje na detaily objednávky
musíš předávat i ID objednávky, pravděpodobně v GETu. Když máš u každé obednávky odkaz na order-details.php, jak má script na této stránce vědět, jakou objednávku chceš ukázat?
Brutuska
Profil
Chlapi, jsem pitomec. Pořád nemůžu přenést informaci objednávky order_ID a vypsat v dalším souboru order_details.php její konkrétní detaily. Můžete mi poradit i s kódem...Předem díky
jenikkozak
Profil
Přenese se pomocí GET, jak uvedl panther, např. pomocí odkazu:
<a href="order_details.php?order_ID=50">Detail 50. objednávky</a>

V dotazu na databázi pak bude mimo jiné podmínka:
WHERE order_ID_detail='".$_GET['order_ID']."'
S tím, že si tam uděláš ještě ověření, zda hodnota $_GET['order_ID'] je číslem, aby ti tam lidé necpali apostrofy a podobné vylomeniny.
Brutuska
Profil
Tak, už doufám naposledy...Dal jsem to do kupy - už mi to správně odkazuje. Nový problém mi ale vyvstal při výpisu detailů a to : výpis položky/položek v detailu se opakuje tolikrát kolik má zákazník celkem objednávek. Tzn mám třeba pět objednávek, chci si vypsat jednu s jednou objednanou položkou, ale ta se mi vypíše 5x za sebou.

$qry_vypis_orders_details = "SELECT * FROM orders,orders_details,products WHERE login='{$_SESSION['SESS_LOGIN']}' AND order_ID_detail='".$_GET['order_ID']."' AND product_ID_detail=product_ID"


<TD style='padding-left:30px'><a href='order-details.php?order_ID=".$orders_list['order_id']."' target='_self' >Detail</TD>


LIMITem to omezit je myslím nesmysl. A nic dalšího mě nenapadá.

Slibuju, že už dám pokoj ;)
Brutuska
Profil
pořád na to nemůžu přijít. Chlapi nemůžete mi poradit ? Prostě detail objednávky opakuje záznamy tolikrát dokola kolik má uživatel vložených objednávek. Nevím jak to upravit v SELECTU (předpokládám, že tam je ta chyba).
Kcko
Profil
Brutuska:
Tvůj SQL dotaz vytváří kartézský součin, tj. všechny kombinace se vším. Přečti si nějaký článek o spojování tabulek.
Brutuska
Profil
Prostě nejsem schopen správně sestavit dotaz. Pořád mě to vypisuje v detailech objednávky položku tolikrát, kolik má uživatel celkem objednávek. Zápis je :

		SELECT *  
		FROM orders_details 
		INNER JOIN orders
		ON order_ID_detail='".$_GET['order_ID']."'
		INNER JOIN products
		ON product_ID_detail=product_ID
		WHERE orders.login='{$_SESSION['SESS_LOGIN']}'
		";


Chápu, že už to všechny otravuje, ale zkuste se na to ještě mrknout. Předem MOC díky
Kajman_
Profil *
ON order_ID_detail='".$_GET['order_ID']."' AND orders.order_ID=orders_details.order_ID_detail
Brutuska
Profil
Už to funguje - aneb jak si laik malou administraci udělal a naučil se spoustu věcí. Děkuji všem kteří mi poradili. Klidně bych platil i členské příspěvky za používání tohoto fóra :)
Kcko
Profil
Kajman:
Ta podmínka vypadá divně. Neměla by část s $_GETem být až ve WHERE?
Kajman_
Profil *
Kcko:

Já bych ji tam asi taky dal, ale výsledek bude stejný. Tipnul bych, že i explain bude totožný.

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