Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Jak mam dopisać do bazy nie usuwając pozostałych?
GoldeNx3
post
Post #1





Grupa: Zarejestrowani
Postów: 228
Pomógł: 1
Dołączył: 24.12.2010

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


Witam. W bazie danych mam pole "access" i są tam literki. Jak mogę zrobić coś takiego:

Skrypt sprawdza, czy jest literka a oraz czy jest literka b. Jeżeli obu nie ma, to do istniejących literek w bazie dopisuje te dwie, a jeżeli np a jest już w bazie, ale nie ma b, to dopisuje do istniejących tylko literkę b. Literki a i b mogą być w ciągu znaków, na początku, na końcu, w środku.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
GoldeNx3
post
Post #2





Grupa: Zarejestrowani
Postów: 228
Pomógł: 1
Dołączył: 24.12.2010

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


  1. $zap = mysql_query("SELECT access FROM tabela WHERE nickname = '$nick'") OR die(mysql_error());
  2. $ils = mysql_fetch_array($zap);
  3. $ileflag = $ils['access'];
  4. $b = 'b'; $s = 's'; $z = 'z';
  5.  
  6. $posb = strpos($ileflag, $b);
  7. $poss = strpos($ileflag, $s);
  8. $posz = strpos($ileflag, $z);
  9.  
  10. IF($posb == true) $ileflag .= 'b';
  11. IF($poss == true) $ileflag .= 's';
  12. IF($posz == true) $ileflag .= 'z';
  13.  
  14. $result = mysql_query("UPDATE tabela SET access = '$ileflag' WHERE nickname='$nick'") OR die(mysql_error());
  15.  
  16. echo "
  17. <div class=\"right_side\">
  18. <br><div><center><table class=\"error\">
  19. <tr><td>
  20. <center><b><font color=\"red\">Stworzono!</font></b></center>
  21. </td></tr>
  22. </table><br></center></div>
  23. </div>";



Gdy nie ma jakiejś literki, to zamienia pole na wartość 0 ; /
Go to the top of the page
+Quote Post
askone
post
Post #3





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


Cytat(GoldeNx3 @ 18.04.2011, 12:35:12 ) *
  1. $zap = mysql_query("SELECT access FROM tabela WHERE nickname = '$nick'") OR die(mysql_error());
  2. $ils = mysql_fetch_array($zap);
  3. $ileflag = $ils['access'];
  4. $b = 'b'; $s = 's'; $z = 'z';
  5.  
  6. $posb = strpos($ileflag, $b);
  7. $poss = strpos($ileflag, $s);
  8. $posz = strpos($ileflag, $z);
  9.  
  10. IF($posb == true) $ileflag .= 'b';
  11. IF($poss == true) $ileflag .= 's';
  12. IF($posz == true) $ileflag .= 'z';
  13.  
  14. $result = mysql_query("UPDATE tabela SET access = '$ileflag' WHERE nickname='$nick'") OR die(mysql_error());
  15.  
  16. echo "
  17. <div class=\"right_side\">
  18. <br><div><center><table class=\"error\">
  19. <tr><td>
  20. <center><b><font color=\"red\">Stworzono!</font></b></center>
  21. </td></tr>
  22. </table><br></center></div>
  23. </div>";



Gdy nie ma jakiejś literki, to zamienia pole na wartość 0 ; /


Odnośnie Twego kodu mam kilka uwag:
  • zgodnie z Twoimi informacjami do pobranej wartości litera miałaby byc dopisywana tylko wtedy gdy jej nie ma. Dlaczego więc dopisujesz ją gdy już w pobranym ciągu znakowym jest? strpos zwraca FALSE gdy znak nie zostaje znaleziony, tak więc zmień warunek
  • osobiście zmieniłbym statyczne przypisanie liter i ich osobne testowanie na testowanie z wykorzystaniem pętli. Jak? Może coś w ten deseń:

  1. $ileflag = $ils['access'];
  2. $litery = array('a', 'b', 's');
  3.  
  4. foreach($litery as $litera)
  5. {
  6. if (! strpos($ileflag, $litera))
  7. {
  8. $ileflag .= $litera;
  9. }
  10. }
  11.  
  12. $result = mysql_query("UPDATE tabela SET access = '$ileflag' WHERE nickname='$nick'") or die(mysql_error());


Kod pisany z palca, nie testowany, ale powinien działać (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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: 7.10.2025 - 20:57