Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] problem z pętlą zapytania?!
help_mee
post 22.06.2008, 16:45:48
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 ?! 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.


--------------------
Amentis dolet!
Deus et patria!
» Pomogłem? Kliknij Pomógł.
Go to the top of the page
+Quote Post
nospor
post 22.06.2008, 17:10:37
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 winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
help_mee
post 22.06.2008, 17:15:30
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ć snitch.gif


--------------------
Amentis dolet!
Deus et patria!
» Pomogłem? Kliknij Pomógł.
Go to the top of the page
+Quote Post
nospor
post 22.06.2008, 18:47:51
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;


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
help_mee
post 22.06.2008, 18:57:37
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


--------------------
Amentis dolet!
Deus et patria!
» Pomogłem? Kliknij Pomógł.
Go to the top of the page
+Quote Post
nospor
post 22.06.2008, 20:14:36
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
help_mee
post 22.06.2008, 21:05:30
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. ?>


--------------------
Amentis dolet!
Deus et patria!
» Pomogłem? Kliknij Pomógł.
Go to the top of the page
+Quote Post
dr_bonzo
post 22.06.2008, 22:55:04
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


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
help_mee
post 22.06.2008, 23:06:39
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


--------------------
Amentis dolet!
Deus et patria!
» Pomogłem? Kliknij Pomógł.
Go to the top of the page
+Quote Post
bmL
post 23.06.2008, 05:49:40
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 smile.gif

Ten post edytował bmL 23.06.2008, 08:40:53


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
nospor
post 23.06.2008, 05:51:04
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
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
help_mee
post 23.06.2008, 12:58:33
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ć?! snitch.gif


--------------------
Amentis dolet!
Deus et patria!
» Pomogłem? Kliknij Pomógł.
Go to the top of the page
+Quote Post
nospor
post 23.06.2008, 13:49:16
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. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 00:06