Autor Zpráva
rhintin
Profil
zdravim potřebuju poradit jak udělám vypis u databáze kde mám dve tabulky jedna jsou "sekce" kde mám nadpisy sekcí ceníku ty maj přiřazenou id 1 až 4 pak mám druhou tabulku "cenik" kde mám 18 položek "descr" s cenama "price" položky maj id přířazenou přseně podel toho jak maj jít na stráce zasebou od 1 do 18. a maj přiřazenej "Sect" od 1 do 4 podle toho ke kterýmu nadpisu v tabulce "sekce" patřej jak jsem psal nahoře.

a potřeboval bych script kterej by to vypsal na stránku ve znění:

<table class="cenik">
  <tr><td><h1>nadpis sekce ceniku</h1></td></tr>
  <tr><td class="levy">Položka v ceniku</td>
  <td class="pravy"><b>Cena Položky ceniku</b></td></tr>
  <tr><td><p>info</p></td></tr>
</table>


poradi mi někdo prosim.
trinitrochleba
Profil *
já teda nevim, zkus sem hodit schéme těch tabulek, moc to z tvýho popisu nechápu
peta
Profil
rhintin
to je presne pripad dotazu, mam jablicko a chci, aby jste mi z nej udelali hrusku.
Jsem linej, pracujte za mne se to jmenuje forum Prace a zakazky.

cz.php.net/mysq_query
Pokud to vytahnes vse do jednoho SQL dotazu, tak se to da zobrazit snadneji. Pokud do 2, mno, tak hold je to vic prace pres ruzne switch, in_array a pod
rhintin
Profil
a co tedy potřebujete vidět neni problém, jinak já php nerozumim akorát tabulkám trochu, tak promintě že se ptám blbě:)

výpis tabulek sql

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Databáze: `tsde`
--

-- --------------------------------------------------------

--
-- Struktura tabulky `cenik`
--

CREATE TABLE IF NOT EXISTS `cenik` (
  `ID` int(11) NOT NULL auto_increment,
  `Descr` varbinary(100) NOT NULL default '',
  `Sect` int(11) NOT NULL default '0',
  `Price` varbinary(30) NOT NULL default '',
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin PACK_KEYS=0 AUTO_INCREMENT=61 ;

--
-- Vypisuji data pro tabulku `cenik`
--

INSERT INTO `cenik` (`ID`, `Descr`, `Sect`, `Price`) VALUES
(1, '1.2 TDI, 1.4 TDI, 1.9 TDI, 2.5 TDI Audi, SEAT, ŠKODA, VW', 0, '300,- €'),
(2, 'Audi, ŠKODA, VW 2.5 V6 TDI 155, 163 a 180 PS', 1, '380,- €'),
(3, 'Alle andere Turbodiesel (HDI, JTD, CDI, TDS, DTI, DCI, CRDI usw.) 3 und 4 Zylinder', 1, '330,- €'),
(4, ' Alle andere Turbodiesel (HDI, JTD, CDI, TDS, DTI, DCI, CRDI usw.) 5 und 6 Zylinder', 1, '470,- €'),
(5, 'VW 2.0 16V TDI und andere Motoren mit dem Steuergerät EDC 16', 1, '500,- €'),
(6, 'VW Touareg V10 TDI', 1, '800,- €'),
(7, 'VW 1.8 T und andere Turbobenziner', 1, '470,- €'),
(8, 'Škoda Octavia und Fabia 1.4 MPI', 2, '130,- €'),
(16, 'TV Freischaltung', 3, 'Auf Anfrage'),
(17, 'Kontrolle', 4, '10,- €'),
(18, 'Klimanachfüllung', 4, '40,- (35,-) €'),
(15, 'Dekodierung, alle Modelle', 3, '20,- (15,-) €'),
(9, 'Tacho VW, SEAT, Škoda, Galaxy (alle Modelle, alle Baujahre)', 2, '33,- (27,-) €'),
(10, 'PopisTacho mit EEPROM', 2, '50,- (33,-) €'),
(11, 'Tacho mit Prozessor', 2, '85,- (75,-) €'),
(12, 'Tachos mit NEC', 2, '65,- (50,-) €'),
(13, 'Pixelreparaturen', 2, '120,- (100,-) €'),
(14, 'Sondertachos (BMW E60/61/65, neue Mercedes usw.) Bitte anfragen', 2, '70,- (60,-) €');

-- --------------------------------------------------------

--
-- Struktura tabulky `sekce`
--

CREATE TABLE IF NOT EXISTS `sekce` (
  `ID` int(11) NOT NULL auto_increment,
  `Title` varchar(40) collate utf8_bin NOT NULL default '',
  `Info` blob NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin PACK_KEYS=0 AUTO_INCREMENT=21 ;

--
-- Vypisuji data pro tabulku `sekce`

--

INSERT INTO `sekce` (`ID`, `Title`, `Info`) VALUES
(1, 'prieselist chiptuning', 0x46c3bc72206469652042657369747a657220766f6e204b756e64656e6b617274656e 20676962742065732065696e652045726dc3a473736967756e6720766f6e203130252e 204265692064656e206d6568726572656e20466168727a657567656e20676c65696368 7a65697469672067696274206573206e6f63682065696e656e20536f6e646572726162 6174742e21),
(2, 'preisliste tachojustierung', 0x4469652050726569736520696e2064656e204b6c616d6d65726e2067656c74656e20 66c3bc7220646965204b756e64656e206d69742064657220726f74656e204b756e6465 6e6b617274652e446965204b756e64656e206d69742064657220626c6175656e204b61 72746520686162656e207465696c7765697365206e6f63682062657373657265205072 656973652e20416c6c6520496e666f20c3bc62657220496872656d20546163686f2028 6f62206573207369636820756d2065696e20454550524f4d206f6465722050726f7a65 73736f7220546163686f2068616e64656c742920657266726167656e20536965206569 6e666163682062656920756e732e),
(3, 'preisliste k radios, navi und tv', 0x4469652050726569736520696e2064656e204b6c616d6d65726e2067656c74656e20 66c3bc7220646965204b756e64656e206d69742064657220726f74656e204b756e6465 6e6b617274652e446965204b756e64656e206d69742064657220626c6175656e204b61 72746520686162656e207465696c7765697365206e6f63682062657373657265205072 656973652e5769722066696e64656e20436f64652066c3bc722039392c392025205261 64696f73206175662064656d204d61726b742e),
(4, 'preisliste klimaanlagen', 0x4469652050726569736520696e2064656e204b6c616d6d65726e2067656c74656e2066c3bc7220646965204b756e64656e206d69742064657220726f74656e204b756e64656e6b617274652e20446965204b756e64656e206d69742064657220626c6175656e204b6172746520686162656e207465696c7765697365206e6f6368206265737365726520507265697365);
nightfish
Profil
rhintin
ještě pošli odkaz na stránku, jak má vypadat výsledek

udělat to půjde, cena 400 Kč, kontakt mám v profilu
papoušek
Profil *
No, dotaz je takový dost neurčitý a hodně obecný. Obecně platí, že pokud se do něčeho pouštíš, měl by sis to prvně nastudovat sám a ptát se na konkrétní problémy.

Na druhou stranu účtovat si za to 400....

Myslím, že výsledný script by mohl vypadat nějak takto, ale napsal jsem to narychlo:
function getBySection($id) {
	if (gettype($id) == "integer") {
		$sql = "SELECT * FROM cenik WHERE Sect = $id";
		$res = mysql_query($sql) or die("Chyba v dotazu v souboru ".__FILE__." na radku ".__LINE__);
		return $res;
	}
	else {
		return FALSE;
	}
}

function getSection($id) {
	if (gettype($id) == "integer") {
		$sql = "SELET * FROM sekce WHERE ID = $id";
		$res = mysql_query($sql) or die("Chyba v dotazu v souboru ".__FILE__." na radku ".__LINE__);
		return mysql_fetch_array($res);
	}
	else {
		return FALSE;
	}
}


$section = getSection($_GET["section"]);

echo "<table>";
echo "<tr><td><h1>".$section["Title"]."</h1></td></tr>";
$res = getBySection($_GET["section"]);
while ($price = mysql_fetch_array($res)) {
	echo "
<tr>
	<td class=\"levy\">".$price["ID"]."</td>
	<td clas=\"pravy\"><b>".$price["Price"]."</b></td>
</tr>
<tr>
	<td><p>".$price["Descr"]."</p></td>
</tr>";
}
echo "</table>";
rhintin
Profil
tak už jsem to dal sám nějak dohromady a funguje skvěle

Takto:
<?php
	
	include "../../sqlcon.inc";
	
	$qs = "SELECT * FROM sekce";
	$rs = mysql_query($qs) or die ("Nepovedlo se vykonat dotaz: $qs");
	
	$i=1; // title id
	
	while ($sekce=mysql_fetch_row($rs)) {
		echo "<table class=\"cenik\">\n";
		echo "<tr><td><h1>";
		echo $sekce[1];
		echo "</h1></td></tr>\n";
		
		$q= "SELECT * FROM cenik WHERE Sect=".$sekce[0];
		$r = mysql_query($q) or die ("Nepovedlo se vykonat dotaz: $q");
		
		while ($item=mysql_fetch_row($r)) {
			echo "<tr><td class=\"levy\" name=\"descr_".$item[0]."\">";
			echo $item[1];
			echo "</td><td class=\"pravy\" name=\"price_".$item[0]."\"><b>";
			echo $item[3];
			echo "</b></td></tr>\n";
		}
		echo "<tr><td><br><p name=\"info_$i\">";
		echo $sekce[2];
		echo "</p></td></tr>\n";
		echo "</table>\n\n";
		$i++;
	}
	
	mysql_free_result($r);

?>
BetaCam
Profil
papoušek
No, dotaz je takový dost neurčitý a hodně obecný. Obecně platí, že pokud se do něčeho pouštíš, měl by sis to prvně nastudovat sám a ptát se na konkrétní problémy.

Na druhou stranu účtovat si za to 400....


Asi sem taky divnej, ale většinou si za práci něco účtuju a dělám to tak v podstatě celej život. Prostě mě nějak nebaví chodit po louce a živit se kořínkama. Navíc 400 Kč je v podstatě nic ve srovnání co za ceny je uvedeno v sql dumpu. :)

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