Poslao: 16 Maj 2013 14:29
|
offline
- Pridružio: 07 Maj 2013
- Poruke: 33
|
Imam selectbox multiple, znaci moguce je vise stavki izabrati i zapamtiti u bazu, zanima me kako mogu da dobijem nazad podatke pa da kad otvorim to u browseru da su opcije sve naznacene koje su u bazu upisane? Sve je izcitano sa foreach...
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
|
Poslao: 18 Maj 2013 16:14
|
offline
- FoxVanis
- Ugledni građanin
- Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
- Pridružio: 13 Jun 2010
- Poruke: 307
- Gde živiš: Subotica
|
Ehhhhh težak zadatak. E sad ovako:
Daću ti jedno rešenje. Imam tabelu sa korisnicima - 'users' u njoj se nalazi kolona gde se upisuju selektovane kategorije i to izgleda ovako (2, 18, 25, 72, 146). Ovi brojevi su 'ID' vrednosti za sve selektovane kategorije.
U tabeli 'category' su mi upisane sve kategorije sajta. Kada korisnk pravi svoj profil on selektuje kategorije u kojim želi da se pronađe. To sa "foreach" snimam u bazu korisnika kao jedan niz u brojevima, kao što sam ti pokazao malopre (2, 18, 25, 72, 146).
E sad imao sam i ja isti problem kao ti i pronašao sam ovo rešenje koje radi perfektno:
<?php
// $_GET['id'] - u ovom nizu ima svrhu da se pronađe korisnik po ID broju
// naprimer: (index.php?users=true&id=23)
$array_user_category=mysql_query("SELECT `category` FROM `users` WHERE `id`='".$_GET['id']."'");
$array1=array();
while ($user_category = mysql_fetch_assoc($array_user_category))
{
$array1 = array_merge($array1, array_map('trim', explode(",", $user_category['category'])));
}
$category_query=mysql_query("SELECT * FROM `category` ORDER BY `category`.`id` ASC");
if(mysql_num_rows($category_query)>=1)
{
$array_user_category = array($user_edit['category']);
$category='';
$k=1;
while($category_name=mysql_fetch_array($category_query))
{
$category.='<input type="checkbox" value="'.$category_name['id'].'" title="'.$category_name['name'].'" id="category'.$k.'" class="category" name="category[]"';
foreach($array1 as $a=>$x)
{
$category.=($array1[$a]==$category_name['id'])?' checked="checked" ':NULL;
}
$category.='><label for="category'.$k.'">'.$category_name['name'].'</label><br />';$k++;
}
}
?>
<div style="padding:10px; display:block; height:200px; width:265px; overflow:auto;">
<?php echo $category; ?>
</div>
Počeću objašnjenje od iznutra ka napolje.
Znači ovde se izlistavaju sve kategorije koje ti se nalaze u bazi podataka, automatski kreiraš checkbox dugmad i pored njih naziv kategorija.
U tabeli korisnika (users) izlistavaš kolonu u koju si upisao selektovane kategorije (2, 18, 25, 72, 146) i onda njih izlistavaš.
Posle toga proveravaš gde se nalaze isti ID brojevi u kategorijama i njih obeležavaš kao checked="checked".
Nije ni lako a nije ni jednostavno.
Ovo radi perfektno a ako ti treba i kod za snimanje u bazu - reci.
Mislim da će ti ovo pomoći.
|
|
|
|
Poslao: 18 Maj 2013 21:49
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
XZbitova skola
Moze to i mnogo jednostavnije... recimo da su ti ID-evi svih kategorija vec u nizu $categories, a selektovane u $selected:
foreach ($categories as $category)
{
$isSelected = in_array($category['id'], $selected) ? 'checked="checked"' : '';
echo '<label><input type="checkbox" value="'.$category['id'].'" ' . $isSelected . '/>' . $category['name'] . '</label>';
}
Nikad, ali nikad, apsolutno nikad, ni pod kojim okolnostima, ni da ti zivot zavisi od toga, nemoj da napises ovo:
$array_user_category=mysql_query("SELECT `category` FROM `users` WHERE `id`='".$_GET['id']."'");
Objasnjenje uz mali (glupi) primer je na ovom linku.
|
|
|
|
Poslao: 19 Maj 2013 17:31
|
offline
- FoxVanis
- Ugledni građanin
- Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
- Pridružio: 13 Jun 2010
- Poruke: 307
- Gde živiš: Subotica
|
Rastafarii ::XZbitova skola
Moze to i mnogo jednostavnije... recimo da su ti ID-evi svih kategorija vec u nizu $categories, a selektovane u $selected:
foreach ($categories as $category)
{
$isSelected = in_array($category['id'], $selected) ? 'checked="checked"' : '';
echo '<label><input type="checkbox" value="'.$category['id'].'" ' . $isSelected . '/>' . $category['name'] . '</label>';
}
Nikad, ali nikad, apsolutno nikad, ni pod kojim okolnostima, ni da ti zivot zavisi od toga, nemoj da napises ovo:
$array_user_category=mysql_query("SELECT `category` FROM `users` WHERE `id`='".$_GET['id']."'");
Objasnjenje uz mali (glupi) primer je na ovom linku.
Volim tvoje kodove... Upravu si! Super je rešenje. Ovo je primer, kod mene ide sa proverom, dečku sam dao samo ugrubo objašnjenje, nadam se da će shvatiti i razumeti. Kod mene su svi ID kodovi u linku profiltrirani. Mogu napisati i taj kod ako treba. Samo se dozvoljava broj da prođe i ništa više, a to mi je upravo pomogla baš tvoj jedan kod od ranije pa sam pojednostavio funkciju koju koristim.
|
|
|
|