Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2018-04-03, 17:32


MG303







Wiek: 30
Na forum: 6418 dni
Posty: 654

Piwa: 2990

Respekt: 231,6
Respekt: 231,6Respekt: 231,6

Chcia?bym zmieni? jak?? warto?? w danej tabeli, ale nie wiem w kt?rej kolumnie ona si? znajduje tj:
1) Trzeba znale?? w kt?rej kolumnie ta warto?? si? znajduje.
2) Zmieni? t? warto??.

np.
Kod:

Kolumna 1 | Kolumna 2 | Kolumna 3 | Kolumna 4 | Kolumna 5 | Kolumna 6 | Kolumna 7
Warto?? 1 | Warto?? 2 | Warto?? 3 | Warto?? 4 | Warto?? 5 | Warto?? 6 | Warto?? 7


Chc? zmieni? Warto?? 2 na Warto?? 300, czyli najpierw szukam, w kt?rej kolumnie ona si? znajduje, a nast?pnie zmieniam. Jak to zapisa??

Ostatnio zmieniony przez MG303 2018-04-03, 18:34, w całości zmieniany 5 razy  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-04-03, 17:54


Zamek







Wiek: 26
Na forum: 3788 dni
Posty: 168
Nick w MP: Zamek

Piwa: 276

Respekt: 295,8
Respekt: 295,8Respekt: 295,8Respekt: 295,8

Pawn
SELECT FROM `tabelaWHERE `Wartosc` = '2'
- wyszuka Ci wszystkie rekordy w kt?rych Wartosc = 2

Pawn
UPDATE `tabelaSET `Wartosc`  = '300' WHERE `Wartosc` = '2'
- Zaaktualizuje kolumne Wartosc na 300 gdy jest rowna 2

Nie wiem czy o to chodzilo ;/

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-04-03, 18:36


MG303







Wiek: 30
Na forum: 6418 dni
Posty: 654

Piwa: 2990

Respekt: 231,6
Respekt: 231,6Respekt: 231,6

Niee, to by?oby zbyt proste. Musz? odszuka? ze wszystkich kolumn t? warto?? i j? dopiero zmieni?.

Przyk?ad: totalnie nieoptymalny kod:

Pawn
stock SetPlayerNameInFirma(FirmaIDoldname[], newname[])
{
    new Query1[128];
    new Query2[128];
    new Query3[128];
    new Query4[128];
    new Query5[128];
    new Query6[128];
    new Query7[128];
    format(Query1sizeof(Query1), "UPDATE `Tabela` SET `Lider` = '%s' WHERE `Lider` = '%s' AND `uID` = '%d'"newnameoldnameFirmaID);
    format(Query2sizeof(Query2), "UPDATE `Tabela` SET `ViceLider` = '%s' WHERE `ViceLider` = '%s' AND `uID` = '%d'"newnameoldnameFirmaID);
    format(Query3sizeof(Query3), "UPDATE `Tabela` SET `Pracownik1` = '%s' WHERE `Pracownik1` = '%s' AND `uID` = '%d'"newnameoldnameFirmaID);
    format(Query4sizeof(Query4), "UPDATE `Tabela` SET `Pracownik2` = '%s' WHERE `Pracownik2` = '%s' AND `uID` = '%d'"newnameoldnameFirmaID);
    format(Query5sizeof(Query5), "UPDATE `Tabela` SET `Pracownik3` = '%s' WHERE `Pracownik3` = '%s' AND `uID` = '%d'"newnameoldnameFirmaID);
    format(Query6sizeof(Query6), "UPDATE `Tabela` SET `Pracownik4` = '%s' WHERE `Pracownik4` = '%s' AND `uID` = '%d'"newnameoldnameFirmaID);
    format(Query7sizeof(Query7), "UPDATE `Tabela` SET `Pracownik5` = '%s' WHERE `Pracownik5` = '%s' AND `uID` = '%d'"newnameoldnameFirmaID);
    mysql_query(Query1);
    mysql_query(Query2);
    mysql_query(Query3);
    mysql_query(Query4);
    mysql_query(Query5);
    mysql_query(Query6);
    mysql_query(Query7);
    return 1;
}


Zmieniaj?c nick, serwer musi odnale??, na kt?rej pozycji znajduje si? nick gracza. Czy jest to Lider, ViceLider, Pracownik1, Pracownik2, Pracownik3, 4, 5...

Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-04-03, 20:07


Combacior







Wiek: 29
Na forum: 5796 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
Je?li tak musisz robi? to zalecam przepisanie ca?ego tego systemu od nowa, bo jak widzisz robisz sobie tylko pod g?rk?. Chc?c zwi?kszy? liczb? pracownik?w musisz za ka?dym razem doda? now? kolumn? do tabeli. Nie lepiej by?oby zrobi? dwie kolumny:

1. Nick pracownika (albo nawet lepiej, uID)
2. ID firmy

Nie wiem jak ca?o?? wygl?da, ewentualnie mo?na doda? ID slotu, kt?ry pracownik zajmuje. Najlepiej b?dzie jak ogarniesz ten temat -> http://gtao.pl.com/showthread.php?t=420363

Je?li jednak nie chcesz zmienia? tego "systemu", to jest proste rozwi?zanie w p?tli.

Pawn
for(new lSlotIDlString[200]; lSlotID max_pracownikowlSlotID += 1)
{
    format(lStringsizeof lString"UPDATE `Tabela` SET `Pracownik%d` = '%s' WHERE `Pracownik%d` = '%s' AND `uID` = '%d'"lSlotIDnowynicklSlotIDstarynickidfirmy);
    mysql_query(lString);

    if(mysql_affected_rows())
    {
        break;
    }
}


1. Nigdy nie korzysta?em z funkcji mysql_affected_rows, ale powinna zwraca? ilo?? zmienionych rekord?w. Je?li funkcja nie zwr?ci 0, to znaczy, ?e nick gracza zosta? zmieniony, tak mi si? wydaje.
2. Co do lidera i vice lidera, musia?by? to zrobi? osobno, albo ewentualnie w tablicy.

Nie rozumiem po co tam nick gracza? U?yj czego?, czego gracz nigdy nie zmieni - jego uID. Ja u siebie nick gracza trzymam tylko w jednej tabeli. Jak potrzebuj? nick gracza, to pobieram zapisane uID i robi? zapytanie JOIN.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
MG303
Tagi: update :: mysql
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku