Ocena wątku:
- 0 głosów - średnia: 0
- 1
- 2
- 3
- 4
- 5
Zmiana statusu pozycji w menu
|
Liczba postów: 21
Liczba wątków: 6
Dołączył: 21-04-2011
Reputacja:
0
Witam wszystkich serdecznie.
Piszę funkcję która umożliwia mi zmianę statusu pozycji w menu z aktywnej na nieaktywną i na odwrót. Problem polega na tym że ta funkcja działa tylko na ostatnio dodanej pozycji.
Poniżej przedstawiam kod
Kod PHP: <?php $wynik = mysql_query("SELECT * FROM menu") or die('Błąd zapytania');
if(mysql_num_rows($wynik) > 0) {
while($r = mysql_fetch_assoc($wynik)) { $stat = $r['status']; echo "".$r['tytul'].""; echo "<a href=\"index.php?go=menu&a=status&id={$r['id']}\">"; if ($stat == 1){ echo "<img src=images/stat1.gif > "; } else { echo "<img src=images/stat0.gif > "; } echo "</a>"; } } $a = trim($_REQUEST['a']); $id = trim($_GET['id']);
if($a == 'status' and !empty($id)) { if ($stat == 1) { mysql_query("UPDATE menu SET status=0 WHERE id='$id'") or die('Błąd zapytania'); header('Location: index.php?go=menu'); } else { mysql_query("UPDATE menu SET status=1 WHERE id='$id'")or die('Błąd zapytania'); header('Location: index.php?go=menu'); } } ?>
Tak jak pisałem, funkcja działa tylko do ostatnio dodanej pozycji. Proszę o wyjaśnienie dlaczego tak się dzieje oraz co powinienem poprawić
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
Nic takiego nie widzę problematycznego. URLe masz w porządku?
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Liczba postów: 21
Liczba wątków: 6
Dołączył: 21-04-2011
Reputacja:
0
26-01-2012, 21:07
(Ten post był ostatnio modyfikowany: 26-01-2012, 21:09 przez e-konrad.)
URLe są OK. Po wyświetleniu wszystkich pozycji menu (aktywne i nieaktywne) pozycje mogę zdezaktywować, ale już kolejne kliknięcie nie działa na zmianę statusu, jedynie tak jak pisałem tylko ostatnio dodana pozycja zachowuje się poprawnie.
Czy operacja zmiany statusu powinna znajdować się w innym pliku php niż w tym w którym jest ona wywołana? Powyższy kod przedstawia plik menu.php widziany w przeglądarce jako: Cytat:index.php?go=menu
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
26-01-2012, 21:14
(Ten post był ostatnio modyfikowany: 26-01-2012, 21:15 przez Pedro84.)
To jak ładujesz plik znaczenia nie ma.
Rozumiem, że nie używasz AJAXa? Następuje przeładowanie strony?
Spróbuj, po deaktywacji jakieś pozycji, wyświetlić sobie źródło strony i sprawdzić te URLe jeszcze raz. Na chwilę obecną, nic do głowy mi nie przychodzi innego.
---
Spróbuj w tym fragmencie,
Kod: if($a == 'status' and !empty($id)) {
if ($stat == 1) {
mysql_query("UPDATE menu SET status=0 WHERE id='$id'") or die('Błąd zapytania');
header('Location: index.php?go=menu');
}
else {
mysql_query("UPDATE menu SET status=1 WHERE id='$id'")or die('Błąd zapytania');
header('Location: index.php?go=menu');
}
}
przed if'em, dać sobie var_dump($stat);
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Liczba postów: 21
Liczba wątków: 6
Dołączył: 21-04-2011
Reputacja:
0
26-01-2012, 21:26
(Ten post był ostatnio modyfikowany: 26-01-2012, 22:13 przez e-konrad.)
Pod listą pozycji menu pojawiło się
Przeładowanie strony działa za każdym razem, ale ponowna zmiana statusu pierwszych pozycji nie działa
Po wyświetleniu var_dump($stat); widzę że wartość nie przechowuje jako int tylko nie wiem dlaczego.
Niestety, po zamianie fragmentu kodu
Kod: $stat = $r['status'];
na kod
Kod: $stat = (int)$r['status'];
polcenie var_dump($stat); wyrzuca mi:
ale wraz funkcja nie działa
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
Czyli ślepy jestem bo nic nie widzę.
Z drugiej strony, po zastanowieniu, lepiej byłoby gdybyś przekazywał w URL status, odeszły by Ci te if'y niepotrzebne, a to problem rozwiąże na pewno.
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Liczba postów: 21
Liczba wątków: 6
Dołączył: 21-04-2011
Reputacja:
0
27-01-2012, 14:23
(Ten post był ostatnio modyfikowany: 27-01-2012, 15:04 przez e-konrad.)
Gdybym status przekazywał w URL to czy muszę odnieść się do pliku który odpowiada za zmianę statusu, przykładowo: index.php?go=statusUp&id albo index.php?go=statusDown&id , gdzie pliki statusUp.php i statusDown.php zawierają funkcję atywacji/dezaktywacji statusu?
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
Nie. Po prostu w momencie wyświetlania pozycji, generujesz odpowiedni link, np:
Kod: $status = ($r['status'] == 0) ? 1 : 0;
reszta może zostać tak jak jest. Aczkolwiek, musisz sprawdzać czy masz parametry w GET.
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Liczba postów: 21
Liczba wątków: 6
Dołączył: 21-04-2011
Reputacja:
0
Zrobiłem tak jak opisałem po swojemu i na razie działa dobrze, tylko że musiałem utworzyć dwa pliki odpowiadające za zmianę statusu ale i tak na końcu dodałem header() wiec zmiana jest praktycznie natychmiastowa.
Z php jeszcze raczkuję ale będę próbować też Twoim sposobem. Dziękuję Ci za podrzucenie pomysłu o przekazywaniu statusu w URL.
Pozdrawiam
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
Widzisz, raczkujesz, ale strasznie podoba mi się Twoje podejście.
Chcesz się uczyć, poznawać, a takim osobom, aż chce się pomagać, uwierz. Podejście inne nić 99% początkujących
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
|
Podobne wątki… |
Wątek: |
Autor |
Odpowiedzi: |
Wyświetleń: |
Ostatni post |
|
[PROBLEM][PHP] Zmiana języku www! |
Korsakoff |
1 |
1,748 |
20-03-2012, 00:28
Ostatni post: Pedro84
|
|
Zmiana małych liter na duże - PHP |
SkuterPL |
2 |
2,927 |
17-02-2012, 21:50
Ostatni post: SkuterPL
|
|
Dynamiczna zmiana rozmiaru obrazka |
rev5 |
1 |
1,926 |
12-11-2011, 20:04
Ostatni post: toma5z
|
|
[PHP MySQL] nie działa dodawanie statusu |
treecom |
1 |
2,453 |
21-06-2011, 19:44
Ostatni post: Sosna
|
|
Zmiana rekordu mysql na podstawie roznic w 2 tablicach |
jaro74 |
0 |
1,931 |
30-01-2011, 20:49
Ostatni post: jaro74
|
Użytkownicy przeglądający ten wątek: 2 gości
|
|
Sponsorzy i przyjaciele
|
|
|