Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] problem z pętlą zapytania?!
help_mee
post
Post #1





Grupa: Zarejestrowani
Postów: 244
Pomógł: 21
Dołączył: 10.02.2008
Skąd: Załęcze Wielkie

Ostrzeżenie: (0%)
-----


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 ?! (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Nie wiem też jak nazwać teamt więc z góry przepraszam ekipę Mod.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
help_mee
post
Post #3





Grupa: Zarejestrowani
Postów: 244
Pomógł: 21
Dołączył: 10.02.2008
Skąd: Załęcze Wielkie

Ostrzeżenie: (0%)
-----


no właśnie wiem... więc chodzi mi o to jak to załatwić (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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;
Go to the top of the page
+Quote Post
help_mee
post
Post #5





Grupa: Zarejestrowani
Postów: 244
Pomógł: 21
Dołączył: 10.02.2008
Skąd: Załęcze Wielkie

Ostrzeżenie: (0%)
-----


NIe działa... zmienia WSZYSTKIE na 1 ;x
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




a mi dziala.
Pokaz kod jak to zrobiles

ps: oczywiscie te zapytania co ci dalem mają nie byc w petli. petla jest tu zbedna
Go to the top of the page
+Quote Post
help_mee
post
Post #7





Grupa: Zarejestrowani
Postów: 244
Pomógł: 21
Dołączył: 10.02.2008
Skąd: Załęcze Wielkie

Ostrzeżenie: (0%)
-----


  1. <?
  2. polaczenie
  3. $pozycja="0";
  4. $nez = mysql_query ("UPDATE a set c=".$pozycja+'1'." ORDER BY b DESC;");
  5. echo 'Wykonano';
  6. ?>
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


@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.

Ten post edytował dr_bonzo 22.06.2008, 22:57:55
Go to the top of the page
+Quote Post
help_mee
post
Post #9





Grupa: Zarejestrowani
Postów: 244
Pomógł: 21
Dołączył: 10.02.2008
Skąd: Załęcze Wielkie

Ostrzeżenie: (0%)
-----


ale ja chce to za pomocą php ponieważ mam plan dokleić inne funkcje ;x
Go to the top of the page
+Quote Post
bmL
post
Post #10





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


$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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował bmL 23.06.2008, 08:40:53
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
ale ja chce to za pomocą php ponieważ mam plan dokleić inne funkcje
(IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
help_mee
post
Post #12





Grupa: Zarejestrowani
Postów: 244
Pomógł: 21
Dołączył: 10.02.2008
Skąd: Załęcze Wielkie

Ostrzeżenie: (0%)
-----


ok mam ten kod sql ale jak go wywołać?! (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 04:23