Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zamiana danych
Forum PHP.pl > Forum > Przedszkole
Upachi
Witam! Mam pewien problem i nie wiem jak sobie z nim poradzić. Otóż sprawa wygląda tak.

Mam forum PHPBB by Przemo, i jest na nim zarejestrowanych 560 użytkowników i chciałem wszystkim tym, którzy nie mają ustawionego żadnego avatara ustawić swój domyślny, nie wiem czy są do tego jakieś gotowe addony czy inne hacki (I szczerze nie chce mi się tego szukać), więc postanowiłem zrobić to ręcznie. I tak: Zrobiłem sobie backup tablicy z danymi użytkowników.

Wyglada to mniej wiecej tak:

  1. <?php
  2.  
  3. ...
  4.  
  5. INSERT INTO `phpbb_users` VALUES (2, 1, 'Upachi', '2f14dfbe621f187ce0021936124f32f4', 1140191880, 0, 1140171276, 1138012805, 1, 147, 1.00, 1, 'polish', 'Y-m-d, H:i', 0, 0, 1140125863, NULL, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 'link_do_avatara', 2, 'mail', '', '', 'Poland', '..:: Made BY [color=blue:5fefec3379][b:5fefec3379]Upachi[/b:5fefec3379][/color:5fefec3379] ::..', '5fefec3379', '', 1, 1, '', '', '', '', '', '', '', '15', '25', '30', 999999, 0, '', NULL, 0, '', 1, 1, 999999, 0, 0, NULL, NULL, 1, 1, 1, 1, 0, 1, 2, 2, 1, 1, 0, 1, 0, 0, 0, 98, 150, NULL, 1, '53053b20');
  6.  
  7. ... 
  8.  
  9. ?>


Wiem, że link do avatara znajduje się na 32 pozycji. Nie znam dobrze, php więc próbowałem zrobić to za pomocą tych funkcji, które znam.

Zrobiłem jedną ogromną tablicę z danymi wszystkich użytkowników i rozwaliłęm ją na kawałeczki (po przecinkach) i zliczyłem ilośc komórek (Jest tego ponad 47000). Następnie zrobiłem whila od 32 do tych 47000 a w środku zrobiłęm skok co 85. Działa to tyle że tylko do 39 użytkownika. Bo 40 użytkownik nie ma już linka do avatara na 32 pozycji tylko na 33 (Potem ta pozycja zmienia się jeszcze kilkakrotnie). Ale zauważyłem, że jeśli usunę pierwszych 39 użytkowników. To znowu kilku jest poprawnych a reszta się psuje. Po usunięciu tych kilku użytkowników znowu do pewnego momentu jest Ok a reszta zmaszczona.

I teraz moje pytanie, czy można zrobić to innym sposobem, czy raczej muszę pobawić się w tworzenie warunków dla każdego przesunięcia.

A oto kod:

  1. <?php
  2.  
  3. $default_avatar = "'link_do_domyślnego_avatara'";
  4. $non = "''";
  5. $plik = users.lst
  6.     
  7. $tablica= "INSERT INTO `phpbb_users` VALUES (2, 1, 'Upachi', '2f14dfbe621f187ce0021936124f32f4', 1140191880, 0, 1140171276, 1138012805, 1, 147, 1.00, 1, 'polish', 'Y-m-d, H:i', 0, 0, 1140125863, NULL, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 'link_do_avatara', 2, 'mail', '', '', 'Poland', '..:: Made BY [color=blue:5fefec3379][b:5fefec3379]Upachi[/b:5fefec3379][/color:5fefec3379] ::..', '5fefec3379', '', 1, 1, '', '', '', '', '', '', '', '15', '25', '30', 999999, 0, '', NULL, 0, '', 1, 1, 999999, 0, 0, NULL, NULL, 1, 1, 1, 1, 0, 1, 2, 2, 1, 1, 0, 1, 0, 0, 0, 9
    8, 150, NULL, 1, '53053b20');"
     // Tutaj są wszytkie rekordy ale wkleiłem tylko jeden po by miejsca zabrakło.
  8.  
  9. $tablica = explode(",",$tablica);
  10. $i=count($tablica);
  11.  
  12. do {
  13. if($tablica[$x]==$non)
  14. {
  15. echo "NO AVATAR";
  16. $tablica[$x]="$default_avatar";
  17. }
  18.  
  19. else
  20. {
  21. echo "<img src=".$tablica[$x].">";
  22. }
  23.  
  24. $x = $x+85;
  25. }
  26. while($x <= $i);
  27.  
  28. $tablica = implode(",",$tablica);
  29.  
  30. $fp = fopen($plik, "w");
  31. fputs($fp, $tablica);
  32. fclose($fp);
  33. ?>
crash
A teraz moja wersja:
  1. <?php
  2. mysql_query( 'UPDATE phpbb_users SET user_avatar = "http://adres.pl/avatar.gif", user_avatar_type = 2 WHERE user_avatar IS NULL' );
  3. ?>
Upachi
Faktycznie wygląda prościej, jednak niestety nigdy nie miałem doczynienia z MySQL'em i nie bardzo wiem co z tym zrobić.

Próbowałem wkleić ten kod phpMyAdmin'ie ale wywala błąd:

Kod
There seems to be an error in your SQL query. The MySQL server error output below, if there is any, may also help you in diagnosing the problem
ERROR: Unknown Punctuation String @ 1
STR: <?
SQL: <?php
mysql_query( 'UPDATE phpbb_users SET user_avatar = "http://adres.pl/avatar.gif", user_avatar_type = 2 WHERE user_avatar IS NULL' );


Jeśli można jakąś podpowiedź, będe wdzieczny.
Levabul
Bo w phpmyadmin wklejasz samego sqla

Kod
UPDATE phpbb_users SET user_avatar = "http://adres.pl/avatar.gif", user_avatar_type = 2 WHERE user_avatar IS NULL
Upachi
Teraz działa wielkie dzięki smile.gif
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.