Autor Zpráva
Karel Urban
Profil
Zdravim, prosím o pomoc se svým e-shopem. www.alukola-cb.cz
Stránky se týkají alu disků na osobní automobily. Disky je zatím možné vyhledávát pouze podle názvu automobilu pomocí jednoho selectu (sekce nové nebo použité disky). Chtěl bych pod tento select přidat ještě druhý, který by výběr filtroval tím způsobem, že by si zákazník mohl vybrat ještě velikost disku (14", 15", 16",.... ). Předem díky za jakoukoliv pomoc. Ukázka kodu:

SELECT:

<div id="select">
<form action="........." method="post">
<tr><td><select name="roztec[]"  bgcolor=black>
<option value='0' selected>_________________________Vyberte si Váše auto____________________________
<option value='1'>Alfa-Romeo 145 (1994-2000) 4/98/58,1
<option value='2'>Alfa-Romeo 146 (1994-2000) 4/98/58,1
<option value='3'>Alfa-Romeo 147 (2001-    ) 5/98/58,1
.
.
.
</select>
</td>
</tr>

<input type="submit" name="ok" value="Potvrdit">
</form>


PŘÍKAZ DO DATABÁZE

<?php
$ok = $_POST["ok"];
$roztec = $_POST["roztec"];
$hodnota = $_POST["hodnota"];
$spojeni = $_POST["spojeni"];
$result = $_POST["result"];
$row = $_POST["row"];

if($ok){
if(!$ok)
     exit ("Vyberte rozteč");

foreach ($roztec as $hodnota)
  switch($hodnota){
    case "1":
      echo "<font class='text' color=#72c7e7 size=+1>Alfa-Romeo 145 (1994-2000) 4/98/58,1</font>";
        echo  
          $spojeni = mysql_connect("localhost", ".........", "......") or die ("<font color=white>Nepodařilo se připojit k databázi</font>");
          mysql_select_db("db-alukola") or die("<font color=white>Nepodařilo se najít databázi</font>");
          $result = mysql_query("select * from alu_rafky where roztec between '4/98/58' and '4/98/99' and et between '35' and '45' order by cena") or die("<font color=white>Žádné výsledky</font>");
          while($row = mysql_fetch_array($result)){
          echo  "<div id='bunky'>"
                ."<img class='floatleft' src =\"" . $row['obrazek']."\">"
                ."<font color=#c60303>".$row['vyrobce']. " ".$row['model']."</font>"."<br />"
                ."<font color=white >Barva: ".$row['specifikace']."<br />"
                ."Rozměr: ".$row['rozmer']."<br />"
                ."ET: ".$row['et']."</font>"."<br />"
                ."<font color=#72c7e7> Cena za sadu 4ks: ".$row['cena']."Kč"."</font>"."<br />"
                ."<br>"."<font color=white>Číslo sady: ".$row['ID']."</font>"." "
                ."<a href='objednavka.php' title='Poznamenejte si číslo sady'><img src='obrazy/tlacitko.png' border='0'></a>"."<br />"
                ."</div>";
                         
                        };
          
                break;
pEeLL
Profil
a co chces prsne po nas ?
jediny mysql dotaz vidim tenhle
$result = mysql_query("select * from alu_rafky where roztec between '4/98/58' and '4/98/99' and et between '35' and '45' order by cena")

a ten VZDY najde to same.

pises Disky je zatím možné vyhledávát pouze podle názvu automobilu
ale na to bude asi slouzit teda jiny dotaz ne?
Karel Urban
Profil
Dal jsem tam jenom část kodu. Byla to ukázka jenom pro jedno auto. Oddělený je to pomocí "case".

foreach ($roztec as $hodnota)
switch($hodnota){ 
case "1":
echo "<font class='text' color=#72c7e7 size=+1>Alfa-Romeo 145 (1994-2000) 4/98/58,1</font>";
echo
$spojeni = mysql_connect("localhost", ".........", "........") or die ("<font color=white>Nepodařilo se připojit k databázi</font>");
mysql_select_db("db-alukola") or die("<font color=white>Nepodařilo se najít databázi</font>");
$result = mysql_query("select * from alu_rafky where roztec between '4/98/58' and '4/98/99' and et between '35' and '45' order by cena") or die("<font color=white>Žádné výsledky</font>");
while($row = mysql_fetch_array($result)){
echo "<div id='bunky'>"
."<img class='floatleft' src =\"" . $row['obrazek']."\">"
."<font color=#c60303>".$row['vyrobce']. " ".$row['model']."</font>"."<br />"
."<font color=white >Barva: ".$row['specifikace']."<br />"
."Rozměr: ".$row['rozmer']."<br />"
."ET: ".$row['et']."</font>"."<br />"
."<font color=#72c7e7> Cena za sadu 4ks: ".$row['cena']."Kč"."</font>"."<br />"
."<br>"."<font color=white>Číslo sady: ".$row['ID']."</font>"." "
."<a href='objednavka.php' title='Poznamenejte si číslo sady'><img src='obrazy/tlacitko.png' border='0'></a>"."<br />"
."</div>";

};

break;

.
.
.
case "25"
        echo "<font class='text' color=#72c7e7 size=+1>Audi 80/90 (1991-1996) 5/112/57,1</font>";
        echo  
          $spojeni = mysql_connect("localhost", ".........", ".......") or die ("<font color=white>Nepodařilo se připojit k databázi</font>");
          mysql_select_db("db-alukola") or die("<font color=white>Nepodařilo se najít databázi</font>");
          $result = mysql_query("select * from alu_rafky where roztec between '5/112/57' and '5/112/99' and et between '35' and '45' order by cena") or die(mysql_error());
          while($row = mysql_fetch_array($result)){
          echo  "<div id='bunky'>"
                ."<img class='floatleft' src =\"" . $row['obrazek']."\">"
                ."<font color=#c60303>".$row['vyrobce']. " ".$row['model']."</font>"."<br />"
                ."<font color=white >Barva: ".$row['specifikace']."<br />"
                ."Rozměr: ".$row['rozmer']."<br />"
                ."ET: ".$row['et']."</font>"."<br />"
                ."<font color=#72c7e7> Cena za sadu 4ks: ".$row['cena']."Kč"."</font>"."<br />"
                ."<br>"."<font color=white>Číslo sady: ".$row['ID']."</font>"." "
                ."<a href='objednavka.php' title='Poznamenejte si číslo sady'><img src='obrazy/tlacitko.png' border='0'></a>"."<br />"
                ."</div>";
                         
                        };
          
                break;


Systém normálně funguje. V sekci nový disky si vyhledáš auto a pro tohle auto ti z dazabáze "vylítnou" disky. Konkrétně pro kod , kterej jsem sem dal pro ukázku, ti vyjedou disky between '4/98/58' and '4/98/99' and et between '35' and '45' order by cena. Samozřejmě neni problém do tohohle dotazu přidat ještě filtraci na velikost disku. Mě jde ale o to, že bych už na začátku v sekci nový disky chtěl mít 2 selecty pod sebou (asi na bázi javascriptu). Nevim ale, jak pak zadat dotaz na databázi. Šlo by to vyřešit i jednim selectem, kde by každej model byl x krát. Např.:

Alfa Romeo 156 15"
Alfa Romeo 156 16"
Alfa Romeo 156 17"

Ten seznam aut v selectu už je ale teď pro uživatele dost dlouhej a tohle by ho ještě prodloužilo.

Tohle je příklad, jak bych si to asi představoval, ale místo 7 selectů by mi stačily 2.

http://www.autokola.cz/alukola_hledej.php
pEeLL
Profil
na ja premyslel kcemu je tam ten switch. proboha. je to navrzene opravdu hrozne. kdyz vynecham cele prepsani tak bych postupoval nejak takhle.

pod prvni celect bych pridal druhy tak jak chcete pro tu velikost disku kde velikost by byla jako value v option
<select name="velikostDisku"> 
<option value='15'>disky 15
<option value='16'>disky 16
<option value='17'>disky 17
.</select> 


po odeslani formulare normalne velikost vyzvednu a upravim pro pridani do dotazu databaze
$velikostDisku = (int)$_POST["velikostDisku"];
$velikostDisku = ($velikostDisku != 0) ?  ' AND vd='.$velikostDisku : '';    //vd je nazev sloupce v mysql ve kterem jsou ulozeny velikosti disku


a pridal bych to do kazdeho dotazu

mysql_query("select * from alu_rafky where roztec between '5/112/57' and '5/112/99' and et between '35' and '45'".$velikostDisku." order by cena")



psal jsem to jen z hlavy takze...stejne je to cele zrale na prepsani
Karel Urban
Profil
Jestli to dobře chápu, tak ten druhý select bude závislý na tom prvním? Koukám ale, že to už asi bude nad moje síly.
Ještě k vysvětlení, proč je to navrženo tak hrozně. Zruba v prosinci jsem rozhodl začít podnikat s alu disky. Bylo mi řečeno, že e-shop bude stát nekřesťanské peníze, které jsem neměl. Takže v situaci, kdy jsem nevěděl ani v jakém programu se stránky píšou, jsem vytvořil asi za 3 měsíce tyto stránky www.alukola-cb.cz Stránky fungují, objednávky chodí, ale... Minimálně bych tam chtěl přidat tuhle filtraci. (pokud byste to za rozumnou cenu vytvořil, byl bych rád :) nicméně je mi jasný, že byste to asi dělal úplně odznova jinak). Samozřejmě by se mi líbil klasický profesionálně udělaný e-shop se vším všudy (košík, široká filtrace zboží, automatické odesílání objednávky apod.). Jinak pokud by měl někdo jiný chuť upravit tento web za nějaký rozumný peníz, byl bych rád. :)

Moderátor Mistr: Zadej svou poptávku do zdejší specializované kategorie. Třeba někdo Tvé přání splní. Zde, hluboce schovanou v běžícím tématu, ji asi neobjeví.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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