Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt ulubionych w MySQL
Forum PHP.pl > Forum > PHP
mith
Witam
Chce zrobić coś w rodzaju ulubionych.

Wygląd bazy danych:
login: | haslo: | ulubione: |

login1 | haslo1 | 001,004,008,159 |
login2 | haslo2 | 251,244,238 |
login3 | haslo4 | 051,034 |
login4 | haslo4 | |
login5 | haslo5 | 201,057,035,137,204,465 |

Skrypt do otwierania tych ulubionych już mam.
A chce teraz zrobić coś aby była możliwość dodawania i usuwania danych z kolumny ulubione. Każda trzy cyfrowa nazwa np.: 004 oznacza 1 dział, działy są oddzielone , (przecinkiem)

Dzięki z góry.
erix
(dla wybranego rekordu)
  1. <?php
  2. //usuwanie
  3. $ulubione = explode(',', $rekord['ulubione']);
  4. unset($ulubione, array_search($do_wywalenia, $ulubione); 
  5.  
  6. if(isset($dodaj)){
  7. $ulubione[] = $dodaj;
  8. }
  9.  
  10. $do_zapisu = implode(',', $ulubione);
  11. ?>
mith
Wielkie dzięki erix mogę dodawać ale jest problem z usuwaniem bo w linijce:

unset($ulubione, array_search($do_wywalenia, $ulubione);

wyświetla mi się taki błąd:
Fatal error: Can't use function return value in write context in F:\WebServ\httpd\ulubione.php on line 14
erix
LUDZIE, ALE GAFA, SORY!
  1. <?php
  2. unset($ulubione[array_search($do_wywalenia, $ulubione)]);
  3. ?>


zgubilem sie w nawiasach biggrin.gif
mith
Jeszcze raz wielkie dzięki erix ale mam jeszcze jedno pytanie. Mianowicie gdy ktoś już doda coś do tych ulubionych np.: 004 i potem doda jeszcze raz 004 to w bazie danych zostaje dodany podwójnie te same cyferki np.: 003,019,109,004,004 a jak można zrobić jakiś skrypt aby sprawdzał czy te cyferki się nie powtarzają?
em1X
zmodyfikuj ten kawałek kodu

  1. <?php
  2. if(isset($dodaj)){
  3. $ulubione[] = $dodaj;
  4. }
  5. ?>


na ten

  1. <?php
  2. if (isset($dodaj) && !strpos(implode(" ", $ulubione)))
  3.  $ulubione[] = $dodaj;
  4. ?>
mith
Zmodyfikowałem to, ale wyświetla mi się taki błąd:
Warning: Wrong parameter count for strpos() in F:\WebServ\httpd\ulubione.php on line 37
erix
  1. <?php
  2. if (isset($dodaj) && !strpos(implode(' ', $ulubione))){
  3.  $ulubione[] = $dodaj;
  4. }
  5. ?>

em1X zjadl jeden parametr biggrin.gif
(swoja droga, glodni dzisiaj jestesmy smile.gif)

poprawnie:
  1. <?php
  2. if (isset($dodaj) && strpos(implode(' ', $ulubione), $dodaj)!==false){
  3.  $ulubione[] = $dodaj;
  4. }
  5. ?>

(zmienilem drugi warunek, patrz manual: strpos" title="Zobacz w manualu php" target="_manual)
mith
Ale to też jakoś nie działa bo dodaje mi dalej takie same. Skrypt wygląda tak:
Zapisywanie:

  1. <?php
  2. $konto = mysql_query("SELECT * FROM konta WHERE login = '".$_SESSION['login']."' AND haslo = '".$_SESSION['haslo']."' LIMIT 1");
  3.  
  4. if ($row1 = mysql_fetch_array($konto)) { $db_kolumna=$row1["ulubione"]; }
  5.  
  6. if($db_kolumna) {
  7.  
  8. $db_dzielenie = explode(',', $db_kolumna);
  9.  
  10. if (isset($dodaj) && strpos(implode(' ', $db_dzielenie), $dodaj)!==false){
  11. $db_dzielenie[] = $dodaj;
  12. }
  13.  
  14. $zapisz = implode(',', $db_dzielenie);
  15.  
  16. } else { $zapisz = $dodaj; }
  17.  
  18. mysql_query("UPDATE konta SET `ulubione` = '".$zapisz."' WHERE login = '".$_SESSION["login"]."' AND haslo = '".$_SESSION['haslo']."' LIMIT 1");
  19. ?>
erix
ale gafa biggrin.gif
  1. <?php
  2. if (isset($dodaj) && strpos(implode(',', $db_dzielenie), $dodaj)==false){
  3. $db_dzielenie[] = $dodaj;
  4. }
  5. ?>


mozna jeszcze za pomoca array_search" title="Zobacz w manualu php" target="_manual
mith
No teraz to elegancko działa dzięki erix. Ale jest jeszcze jeden problem tym razem z usuwaniem z ulubionych. A problem polega na tym że jak np kliknę aby usunęło mi np.: 004 i np odświeżę stronę lub podam taką cyfrę której nie ma w bazie to usuwa mi pierwsze 3 cyferki czyli jak mam w bazie: 000,001,005,127 i uruchomi się plik ulubione.php?do_wywalenia=004 którego nie ma w bazie to wychodzi coś takiego 001,005,127 Jak można temu zaradzić?
erix
  1. <?php
  2. if(array_search($id_do_skasowania, $tablica)){
  3. instrukcja_do_kasowania();
  4. }
  5. ?>
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.