Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] problem z pętlą zapytania?!
Forum PHP.pl > Forum > Przedszkole
help_mee
Witam.
Mam taki kod. Miałem zamiar aby każdy wpis w tabeli a ustawiał wartoś c o 1 większą niż poprzedni... lecz wszystkie ustawiają się na ostania ?! snitch.gif
  1. <?php
  2. polaczenie
  3. $wynik = mysql_query ("SELECT * FROM a ORDER BY b DESC;");
  4. $pozycja="1";
  5. while ($wynik && $rekord = mysql_fetch_assoc ($wynik)) {
  6. $wykonaj = mysql_query ("UPDATE b SET c=".$pozycja.";");
  7. $pozycja++;
  8. }
  9. ?>

Brak mi dziś nerów i weny więc proszę o pomoc sad.gif
Nie wiem też jak nazwać teamt więc z góry przepraszam ekipę Mod.
nospor
przeciez wykonujesz UPDATE bez zadnego warunku, wiec za kazdym razem w petli wykona ci sie dla wszystkich rekordow
php ani mysql nie dzialają na zasadzie czytania ci w myslach winksmiley.jpg
help_mee
no właśnie wiem... więc chodzi mi o to jak to załatwić snitch.gif
nospor
do tego co chcesz zrobic wystarcza proste dwa zapytania:
  1. SET @zm:=0;
  2. UPDATE a SET c=(@zm:=@zm+1) ORDER BY b DESC;
help_mee
NIe działa... zmienia WSZYSTKIE na 1 ;x
nospor
a mi dziala.
Pokaz kod jak to zrobiles

ps: oczywiscie te zapytania co ci dalem mają nie byc w petli. petla jest tu zbedna
help_mee
  1. <?
  2. polaczenie
  3. $pozycja="0";
  4. $nez = mysql_query ("UPDATE a set c=".$pozycja+'1'." ORDER BY b DESC;");
  5. echo 'Wykonano';
  6. ?>
dr_bonzo
@help_mee: kurde, koles jestes jakis dziwny, nie umiesz SKOPIOWAC kodu ktory ci daja? wystarczy zrobic copy paste, bo ty przepisales to po swojemu, zupelnie inaczej i sie dziwisz ze nie dziala.

To co dal ci nospor, to wszystko to kod SQL, tam nie ma ani grama php.
help_mee
ale ja chce to za pomocą php ponieważ mam plan dokleić inne funkcje ;x
bmL
$nez = mysql_query ("UPDATE a set c=".$pozycja+'1'." ORDER BY b DESC;");
a co to jest jak nie zapytanie sql?

@nospor mój błąd smile.gif
nospor
Cytat
ale ja chce to za pomocą php ponieważ mam plan dokleić inne funkcje
blinksmiley.gif
To na przyszlosc mow od razu, ze masz w czterech literach kod ktory ci ludzie godzinami piszą. I jak ci nie dziala to nie pisz ze ci nie dziala, tylko napisz od razu ze kod napisales po swojemu i ze to on ci nie dziala. W takim przypadku od razu podaj swoj kod. czy naprawde za kazdym razem trzeba tę podstawową sprawe kazdemu tlumaczyc z osobna?

Cytat
mam plan dokleić inne funkcje
Jakie funkcje? Moze tez mozna w mysql to zalatwic

Robienie tego z poziomu php jest bez sensu, bo przy większej liczbie rekordow zajedziesz baze na smierc wykonujac x zapytan (x - liczba rekordow)
Ale oczywiscie mozna:
podam ci algorytm bo kod znowu zmienisz i napiszesz ze nie dziala.... :
1) ustawiasz wszystkim rekordom wartosc pola c na 0;
2) wykonujesz tyle razy update, ile masz rekordow. Ten update to:
  1. UPDATE a SET c=$pozycja WHERE c = 0 ORDER BY b DESC LIMIT 1 ;

Gdzie $pozycja to liczba zwiekszana o 1 w petli.

@bmL czytamy ze zrozumieniem smile.gif
help_mee
ok mam ten kod sql ale jak go wywołać?! snitch.gif
nospor
to sa normalne zapytania i masz je wywolac jak normalne zapytania:
  1. <?php
  2. mysql_query('set @zm:=0');
  3. mysql_query('update a set c=(@zm:=@zm+1) order by b desc');
  4. ?>
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.