Autor Zpráva
TomasJ
Profil
Ahoj, takže mám takový problém. Vytahuji 1 řádek z databáze podle "product_id" a vytahuji s ním názvy sloupců a hodnoty v daných sloupcích.
$size = mysql_fetch_array(mysql_query("SELECT * FROM stock_vel WHERE product_id = '{$ok['id']}'"));
Pak je zapisuji do <select>u pomocí foreach. Pokud je hodnota v sloupci 1 nebo 2, vypíše se <option>, pokud je jiná, nenapíše se nic.
foreach($size as $sloupec => $hodnota){
  if(isset($hodnota) && $hodnota > 0 && $hodnota < 3 && is_numeric($sloupec)){ //Pokud je hodnota nastavena, v rozmezi 1 - 2 a dany sloupec je ciselny (zabranim vypsani sloupce "id" a "product_id"), muzeme pokracovat
    $sklad = $hodnota == 1 ? "skladem" : "do 2-3 dnů";
    if($sloupec <= 24) echo "<option value='$sloupec'>$sloupec\" ($sklad)</option>"; 
    elseif($sloupec > 24) echo "<option value='$sloupec'>$sloupec cm ($sklad)</option>";
  }
}
Takto vypadá tabulka:


var_dump vyhodí toto:
array(39) {
  [0]=>
  string(2) "10"
  ["product_id"]=>
  string(2) "10"
  [1]=>
  string(1) "2"
  [15]=>
  string(0) ""
  [2]=>
  string(1) "1"
  [16]=>
  string(0) ""
  [3]=>
  string(1) "2"
  [17]=>
  string(0) ""
  [4]=>
  string(1) "2"
  [18]=>
  string(0) ""
  [5]=>
  string(1) "3"
  [19]=>
  string(0) ""
  [6]=>
  string(1) "1"
  [20]=>
  string(0) ""
  [7]=>
  string(0) ""
  [21]=>
  string(0) ""
  [8]=>
  string(0) ""
  [22]=>
  string(0) ""
  [9]=>
  string(0) ""
  [23]=>
  string(0) ""
  [10]=>
  string(0) ""
  [34]=>
  string(0) ""
  [11]=>
  string(0) ""
  [40]=>
  string(0) ""
  [12]=>
  string(0) ""
  [44]=>
  string(0) ""
  [13]=>
  string(0) ""
  [46]=>
  string(0) ""
  [14]=>
  string(0) ""
  [48]=>
  string(0) ""
  [50]=>
  string(0) ""
  [52]=>
  string(0) ""
  [53]=>
  string(0) ""
  [54]=>
  string(0) ""
  [56]=>
  string(0) ""
  [58]=>
  string(0) ""
  [59]=>
  string(0) ""
  [60]=>
  string(0) ""
  [62]=>
  string(0) ""
}

Jde mi o to, že se do pole přidá automaticky i nějaké číslování... Pole "id" je již odstraněno, takže výsledek je již bez id...
Vybrán byl 1. řádek (product_id = 10). No a mělo by to být tak, že [15] => string(1) "2" ... ale ono to hodí [1] => string(1) "2" a [15] => string(0) ""
přitom to k sobě patří...
K čemu to celé je: Sloupce s názvy 15 a víc jsou jako velikosti, hodnota v daném sloupci na daném řádku určuje jestli je tato velikost skladem, dostupná do 2-3 dnů, nebo není dostupná.

Co bych chtěl po vás: Jestli mi dokážete poradit, jak docílit výše uvedeného (jestli mám někde chybu, nebo je na to jiný způsob). Jsem už bez nápadu, nevím jak to zvládnout. Děkuji moc za každou relevantní radu. :)
Tori
Profil
Koukněte na rozdíl mezi tím, co vrací funkce mysql_fetch_array a mysql_fetch_assoc. Odkážu vás i na Některé časteji řešené dotazy pro MySQL - FAQ, pojmenovávání sloupců čísly v téměř spojité řadě na mne působí jako chybný návrh DB.

Sloupce s názvy 15 a víc jsou jako velikosti hodnota v daném sloupci na daném řídku určuje jestli je tato velikost skladem
Přečetla jsem si tohle až teď, celkem jistě to je chybně navržená DB.
Možné řešení je např.:
tabulka zboží: id, název...
tabulka velikosti: id, název (= číslo nebo text)
tabulka naSkladě: id_zboží, id_velikosti, dámské/pánské/unisex (sloupec typu ENUM), počet na skladě.
Případně by velikosti, dámské/pánské, barva atd. mohly být řešené jako tabulka vlastností a jejich možných hodnot.
TomasJ
Profil
Týká se to velikostí jízdních kol. Ano, tabulku jsem já nenavrhoval. Kdyby ano, alespoň bych před velikosti dal nějaký textový prefix jako size_ČÍSLO a pak už PHPčkem rozpojoval.
Vyzkouším, zatím děkuji.

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: