Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Uaktualnianie bazy
rafal_
post 7.04.2010, 13:31:44
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 9.12.2009

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


Witam

  1. for ($k=$aa; $k<=$bb; $k++) {
  2. $j=$k+1;
  3. $e="UPDATE wybor SET numer=$j WHERE numer=$k AND jezyk='$jezyk';";
  4. @mysqli_query ($dbc,$e);
  5. }



Co tu jest nie tak?
Uaktualnia mi rekordy, ale ostatnią pozycją, tj. jeżeli $aa=2, $bb=5 to uaktualni mi rekordy, gdzie numery są od 2 do 5, ale uaktualni mi wszystkie na 6.

Chciałem zrobić to trochę inaczej żeby zobaczyć co się po kolei dzieje, ale nie rozumiem w czym jest problem. worriedsmiley.gif
  1. for ($k=$aa; $k<=$bb; $k++) {
  2. $j=$k+1;
  3. $e[] = "UPDATE wybor SET numer=$j WHERE numer=$k AND jezyk='$jezyk';";
  4. }
  5. echo '<pre>';
  6. print_r($e);
  7. echo '</pre><br />';

W tym miejscu wyswietla mi:
  1. UPDATE wybor SET numer=3 WHERE numer=2 AND jezyk='PL';
  2. UPDATE wybor SET numer=4 WHERE numer=3 AND jezyk='PL';
  3. UPDATE wybor SET numer=5 WHERE numer=4 AND jezyk='PL';
  4. UPDATE wybor SET numer=6 WHERE numer=5 AND jezyk='PL';

  1. foreach ($e as $klucz => $wartosc){
  2. @mysqli_query ($dbc,$wartosc);
  3. }

Uaktualniona tabela wygląda tak:
Numer
1
6
6
6
6

Ten post edytował rafal_ 7.04.2010, 13:37:13
Go to the top of the page
+Quote Post
nospor
post 7.04.2010, 13:34:08
Post #2





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




$e[] = ...
nie wiem wiec czemu ty potem twardo korzystasz z $t smile.gif

ps:
Zastosuj się proszę do podanych tu porad:
Temat: Jak poprawnie zada pytanie


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

"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
VGT
post 7.04.2010, 13:36:42
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 9
Dołączył: 19.11.2004
Skąd: Iława

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


Moj typ:

w pierwszej iteracji 2 zmieniasz na 3, w drugiej interacji, gdy 3 chcesz zmienic na 4, to juz masz dwie trojki do zwiekszenia.
Problem sie naklada i w efekcie w kolejnych iteracjach wszystkie liczby zwiekszyles do najwiekszej planowanej

Rozwiazanie:

- przy UPDATE rekordy powinienes identyfikowac po czyms co jest unikalne i niezmienne (jakis id)

- opcjonalnie da sie zostac przy aktualnym sposobie: jesli wiesz ze zawsze bedziesz je powiekszal, powinienes zaczac od najwiekszej.
w sensie 5 na 6, potem 4 na 5 itd.

Ten post edytował VGT 7.04.2010, 13:40:35
Go to the top of the page
+Quote Post
rafal_
post 7.04.2010, 13:49:50
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 9.12.2009

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


Cytat(nospor @ 7.04.2010, 14:34:08 ) *
$e[] = ...
nie wiem wiec czemu ty potem twardo korzystasz z $t smile.gif

ps:
Zastosuj się proszę do podanych tu porad:
Temat: Jak poprawnie zada pytanie


Już zmieniłem wszędzie na $e.

Zastosowałem się do porad, nic nie zwraca błędów.

  1. foreach ($e as $klucz => $wartosc){
  2. $wartosc //dodałem jeszcze to i do tego momentu wszystko jest OK
  3. @mysqli_query ($dbc,$wartosc);
  4. }
Go to the top of the page
+Quote Post
nospor
post 7.04.2010, 20:54:09
Post #5





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




Kod
Zastosowałem się do porad, nic nie zwraca błędów.
a strasznie zes sie zastosowal. Bylo tam napisane bys malp @ nie uzywal a ty nadal uzywasz. Pewnie innych rzeczy też nie wcieliłes w zycie.

VGT napisał bardzo ciekawe wyjasnienie. Sprawdziłeś je?


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

"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: 18.06.2025 - 13:05