Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]input check checked="checked"
Forum PHP.pl > Forum > Przedszkole
neo1986kk
No i wszystko proste, ale:

1. W bazie mam na przykład:

jedzenie:
jajko,
barszcz,
sałata,
kapusta

oddzielone przecinkami, a chce zrobić edycje tego poprzez wlasnie input check i domyslam sie ze exploduje przez przecinek ale co dalej?

Dokladnie chodzi o to ze jest w bazie zapisane jajko, barszcz, salata, kapusta i do tego napisać formularz do edycji, że na przyklad komuś się już nie podoba jajko i chcialby to odznaczyć to wydaje mi sie ze coś na tej zasadzie

jezeli eksplodowany przez przecinek jajko = jajko to <input type="check" name="jedzenie[]" (no i jeśli tu label jest jajko ) to cheked="checked"

problem w tym ze nie wiem jak to przełożyc na php, dokladnie to np na fotce jest cos takiego do edycji hobby,zainteresowan itd...

marcio
Pobierasz dane z bazy potem robisz explode() na pobrany rekord, po czym robisz petle for/foreach i generujesz html.
Jesli dane pole jest w bazie dopisujesz checked do danego elementu.

W czym tkwi problem?Nie znasz php i dlatego pytasz czy co...?
neo1986kk
nie no pytam o samą strukturę, php znam tak sobie, jak sie bede z tym męczył to rezultaty postaram sie na bierząco pokazywać i mam nadzieje ze sobie jakoś poradzę, ale to juz jutro...

no i dobra i mam coś takiego:

  1. $jedzonko=explode(",", $zapytanie_do_bazy);


teraz w pętli powinienem sprawdzić ile jest wyodrębnionych wyrazów i utworzyć dla nich tablicę.

  1.  
  2. foreach ($jedzonko as $skladniki)
  3. {
  4. echo '<input type="checkbox" name="jedzenie[]" value="jajko" id="id_jajko"/><label for="id_jajko">jajko</label><br>
  5. <input type="checkbox" name="jedzenie[]" value="barszcz" id="id_barszcz"/><label for="id_barszcz">barszcz</label><br>
  6. <input type="checkbox" name="jedzenie[]" value="salata" id="id_salata"/><label for="id_salata">salata</label><br>
  7. <input type="checkbox" name="jedzenie[]" value="kapusta" id="id_kapusta"/><label for="id_kapusta">kapusta</label><br>';
  8. }
  9.  


i teraz w to wstawić coś takiego, że jak jeśli w bazie jest jajko, to żeby checked=checked;

  1.  
  2. foreach ($jedzonko as $skladniki)
  3. {
  4. echo '<input type="checkbox" name="jedzenie[]" value="jajko" id="id_jajko" <?if($skladniki=jajko) {?>checked="checked"<?}?>/><label for="id_jajko">jajko</label><br>.....
  5. }
  6.  


troche zmieniłem to wszystko:
  1. foreach ($jedzonko as $skladniki=>$skladnik)
  2. {
  3. echo 'key: '.$skladniki.' a value to: '.$skladnik.'<br>';
  4. }
  5.  
  6. // uzyskuje
  7. 1 jajko
  8. 2 salata
  9. ?>
  10. <input type="checkbox" name="jedzenie[]" value="jajko" id="id_jajko"
  11. <? if(($skladnik)=='jajko') echo 'checked="checked"';?>
  12. /><label for="id_jajko">jajko</label><br>
  13. <input type="checkbox" name="jedzenie[]" value="barszcz" id="id_barszcz"/><label for="id_barszcz">barszcz</label><br>
  14. <input type="checkbox" name="jedzenie[]" value="salata" id="id_salata"/><label for="id_salata">salata</label><br>
  15. <input type="checkbox" name="jedzenie[]" value="kapusta" id="id_kapusta"/><label for="id_kapusta">kapusta</label><br>';


no i to nie dziala ale jak jest if(($skladnik)='jajko') czyli z jednym znakiem to dziala ale dla obojętnie jakiego słowa, pomóżcie, proszę.
cros
Cytat(neo1986kk @ 27.04.2010, 09:00:44 ) *
no i to nie dziala ale jak jest if(($skladnik)='jajko') czyli z jednym znakiem to dziala ale dla obojętnie jakiego słowa, pomóżcie, proszę.

Bo takim zapisem "if($cos="ddd")" przypisujesz zmiennej $cos wartosc "ddd", a nie sprawdzasz czy ja ma...PODSTAWY.

neo1986kk
no to wlasnie dobrze, że podstawy, bo dopiero się uczę php. więc jak tą zmienną najpierw przypisać, żebym tu mógł sprawdzić?
Wydaje mi się, że zrobiłem to dobrze, ale jednak nie działa, kiedy ręcznie przypisałem zmienną wszystko było ok.
nospor
cros chcial ci powiedziec ze
= przypisanie
== porownanie
A to są podstawy wlasnie ktore powinienes juz znac zanim bierzesz sie za dalszy kod.

czyli nie if (cos = cosinnego)
a: if (cos == cosinnego)
neo1986kk
no to rozumiem już dlaczego z przypisaniem mi działało - dlatego, to nie ma żadnego wpływu na mojego ifa.
Domyślam się też, że skoro nie działa na if=='' to znaczy, że gdzieś wyżej nie jest to przypisane lub nie wiem jak to wydobyć, dlatego zwracam się z prośbą o pomoc

p.s. czyli wyglada na to że zmienna $skladnik jest bez wartości, chociaż echo $skladnik wyświetla na monitorze: salata.

Dziwi mnie to, że jeśli napiszę ręczniem $skladnik='salata' to wtedy pętla if $skladnik=='salata' zwraca true.


dobra już do tego doszedłem, powinno być (if $skladnik==' salata') ze spacją, ale teraz ma jeszcze inny problem:
  1.  
  2.  
  3. $i=0;
  4. $jedzonko_e= explode(",", $jedzenie);
  5. foreach ($jedzonko as $skladniki=>$skladnik)
  6. {
  7. $skladnika[$i]=$skladnik;
  8. echo $skladnika[$i];
  9. $i=$i+1;
  10. }?>


no i jest wszystko fajnie przypisane ale na tym muszę zakończyć pętlę, a teraz chciałbym to wstawić w checkboxa:

  1. <input type="checkbox" name="jedzenie[]" value="jajko" id="id_jajko"
  2. <? if(($skladnika)=='jajko') echo 'checked="checked"';?>// wydaje mi się, że tu powinienem napisać if ($skladnika[$i] =='jajko') echo 'checked="checked"'
  3. // czyli muszę zrobić pętle for dla rosnącego i. dla jednego takiego checkboxa to jeszcze ujdzie ale dla kilkunastu to bede to pisał pół roku.
  4. /><label for="id_jajko">jajko</label><br>


Odnosząc sie do mojej adnotacji, czy jest możliwość jakiegoś przeskoczenia tego, poprostu odpowiedź powinna być na pytanie: Jeśli istnieje taka zmienna $skladnik[] w której znajduje się słowo 'jajko'... a nie Jeśli, w którymś z $składnik[$i] znajduje sie słowo jajko to checked=checked..

bo tera pzostaje utworzyc petle

  1. for (i=0; i<$liczba_elementow_tablicy; i++)
  2. {
  3. if(($skladnika[$i])=='jajko') echo 'checked="checked"';
  4. }
  5.  


No to teraz muszę napisać dla każdego checkboxa... bez sensu troche...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.