Checkbox - vrednost
5 naročnikov
5 naročnikov
Pozdrav,
Izdelujem skripto in sem naletel na težavo, namreč imam poljubno število checkboxov (koliko je zapisov v tebeli v bazi), in sicer vsak checkbox ma svojo vrednost, ure v mojem primeru, in sedaj bi rad da bi ob potrditvi teh checboxov, seštelo vse vrednosti, toraj v mojem primeru ure in primerjalo z drugim zapisom v bazi max in min število ur, če bi bile ure v rangu bi spustlo naprej, če pa bi blo izven ranga pa bi preusmerlo npr. nazaj na index... se pravi min < št.izbranih.ur < max (< = znak za večje manjše)
LP Nejc
10 odgovorov
V glavnem, zanima ga kako sešteti vrednosti vseh checkboxov (poljubno število - odvisno koliko je zapisov v bazi). Nekako naj bi šlo z while zanko, ampak mi ni ratalo.
PS. sem njegov brat
V PHPju, Javascriptu, kje drugje? Kje se zatakne? Zakaj while zanka ne bi delovala?
Fantje, dajte vprasanja postavljat tako, da jih bo kdo razumel :)
Kako še ti naj razložim...
Gre za php obrazec. Preko post metode dobim podatke (števila) iz checkboxov, ki so odklukani. Primer:
prvi čekboks [ ]
drugi čekboks [ ]
tretji [/]
četrti [/]
peti [/]
v tem primeru so trije odklukani in vsak ma svojo vrednost, ki je zapisana v bazi (gre za številke). Zdaj pa ko pošljem to (klik na gumb). Bi se morale odklukane vrednosti seštet. Vse vredu in prav, če bi bilo vedno enako število checkboxov, ampak to se spreminja. V nasprotnem primeru bi šlo
$sestevek = $POST['prvi']+$POST['drugi']+$_POST['tretji'];
in bi bilo to to. Zdaj pa moram naret za več checkboxov, odvisno kolko je odklukanih oz. poslanih preko POST.
$dat = dbarray(dbquery("SELECT * FROM delavnice WHERE id='{$checked[$i]}'"));
$datk = dbquery("SELECT * FROM delavnice WHERE id='{$checked[$i]}'");
$sum = 0;
while($data == dbarray($datk)) {
$sum += $data['ure'];
}
Probal sem takole, ampak ne dela. Upam, da je dovolj jasno napisano.
Lep pozdrav, Jure
V bazi zanesljivo nimas shranjenih podatkov o tem, kaj je nekdo odkljukal v formi, torej ti iteracija po rezultatih iz baze ne bo kaj prida pomagala.
Poskusi checkboxe vse poimenovati z enakim imenom in vrednosti spraviti v array, kar bi storil nekako takole:
<input type="checkbox" name="vrednost[]" />
Potem lahko mirno iteriras po arrayu $_POST['vrednost'] in sestevas vrednosti.
Vini:
V bazi zanesljivo nimas shranjenih podatkov o tem, kaj je nekdo odkljukal v formi, torej ti iteracija po rezultatih iz baze ne bo kaj prida pomagala.Poskusi checkboxe vse poimenovati z enakim imenom in vrednosti spraviti v array, kar bi storil nekako takole:
<input type="checkbox" name="vrednost[]" />
Potem lahko mirno iteriras po arrayu $_POST['vrednost'] in sestevas vrednosti.
To že, ampak kako potem sešteti vrednosti?
Ah, ja... Zdi se mi, da sem ugotovil, kje imas problem :) V checkboxih prikazujes verjetno ID iz tabele delavnic, pripadajoce vrednosti (ure?) iz te tabele bi pa kasneje rad na podlagi submitanih IDjev sestel? Imam prav?
Takole bo slo:
<input type="checkbox" value="1" name="id[]" /> Vrednost 1<br />
<input type="checkbox" value="2" name="id[]" /> Vrednost 2<br />
<input type="checkbox" value="3" name="id[]" /> Vrednost 3<br />
V kodi, ki lovi podatke iz submitane forme, pa izvedes naslednji query:
SELECT SUM(ure) FROM delavnice WHERE id IN (<seznam_idjev>);
Zadevo bi v PHPju lahko izvedel nekako takole:
$result = mysql_query('SELECT SUM(ure) FROM delavnice WHERE id IN ('.implode(',', $_POST['id']).')');
$ureSum = mysql_result($result,0,0);
mysql_free_result($result);
Gornja koda je seveda mocno ranljiva za SQL injection, ampak to za ponazoritev ni najbolj pomembno, ta problem verjetno znas resiti?