Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Blokada na dodawanie rekordów
Forum PHP.pl > Forum > Przedszkole
kosior11
Mam u siebie na stronie możliwość dodania wybranej treści do ulubionych. Z tym, że użytkownik może dodać dwa razy to samo do ulubionych, a ja chciałbym,żeby przy próbie dodania kolejny raz treści która już się znajduje w ulubionych użytkownika wyskoczył komunikat że nie można dodać bo ta pozycja się już tam znajduje.

Do polubionych rekordów stworzyłem osobną tabelę "ulubione", gdzie dodawane są polubione przez użytkowników artykuły, później filtruje je wg użytkownika i ids które jest odpowiednikiem id w tabeli do której dodawane są wszystkie treści.

  1. <?php
  2. include("connect.php");
  3.  
  4. if($_SERVER['REQUEST_METHOD'] == 'POST')
  5. {
  6. $query = mysql_query("insert into ulubione values('','".$_POST['tytul']."',now(),'".$_POST['autor']."','".$_POST['tresc']."','".$_POST['ids']."')");
  7. header ("Location: index.php");
  8. }
  9. ?>


Jak musze zmodyfikować ten kod aby powstało coś takiego:

jeśli w tabeli ulubione znajduje się już rekord w którym pola autor i ids są takie same jak wartości pól dodawanego rekordu to wyświetl błąd : Podana treść już znajduje się wśród twoich ulubionych.
Ruch Radzionków
użyj mysql_num_rows do zliczania ilości zapytań w bazie
  1. $pobie = mysql_query("SELECT * FROM ulubione WHERE cos tam");
  2. $pobie = mysql_num_rows("$pobie");
  3. $liczba = '2';
  4. if($pobie > $liczba)
  5. {
  6. echo'ok';
  7. }
  8. else
  9. {
  10. echo'zle';
  11. }
kosior11
tak by mniej wiecej wygladalo?

  1. <?php
  2. include("connect.php");
  3.  
  4. if($_SERVER['REQUEST_METHOD'] == 'POST')
  5. {
  6. $query = mysql_query("insert into ulubione values('','".$_POST['tytul']."',now(),'".$_POST['autor']."','".$_POST['tresc']."','".$_POST['ids']."')");
  7.  
  8. $pobie = mysql_query("SELECT * FROM ulubione WHERE cos tam");
  9. $pobie = mysql_num_rows("$pobie");
  10. $liczba = '2';
  11. if($pobie > $liczba)
  12. {
  13. echo'ok';
  14. }
  15. else
  16. {
  17. echo'zle';
  18. }
  19.  
  20. header ("Location: index.php");
  21. }
  22. ?>
d3ut3r
Jeżeli pole user_id i ids (czyli id użytkownika i id strony) ma być unikalne to mysql umożliwia założenie klucza unique na dwie kolumny. Wówczas próba dodania rekordu gdzie te 2 kolumny już istnieją w bazie nie powiedzie się.

Klucz możesz dodać (wstawiając odpowiednie nazwy) tak:

  1. ALTER TABLE `nazwa_tabeli` ADD UNIQUE( `kolumna1`, `kolumna2`);



kosior11
nie wybiera po user_id tylko po nazwie użytkownika
d3ut3r
Zasada ta sama smile.gif chodzi o założenie klucza UNIQUE na obie kolumny które nie mogą się powtarzać.

Offtopując, patrząc na twoje zapytanie, to można manipulować zmienną $_POST['autor'] i dodać artykuł do czyjejś listy ulubionych takie rzeczy lepiej pobierać z sesji zalogowanego usera niż przekazywać formularzem.
Ruch Radzionków
Cytat(kosior11 @ 21.07.2012, 15:49:36 ) *
tak by mniej wiecej wygladalo?

  1. <?php
  2. include("connect.php");
  3.  
  4. if($_SERVER['REQUEST_METHOD'] == 'POST')
  5. {
  6.  
  7. $pobie = mysql_query("SELECT * FROM ulubione WHERE cos tam");
  8. $pobie = mysql_num_rows("$pobie");
  9. $liczba = '2';
  10. if($pobie <= $liczba)
  11. {
  12. echo'ok';
  13. $query = mysql_query("insert into ulubione values('','".$_POST['tytul']."',now(),'".$_POST['autor']."','".$_POST['tresc']."','".$_POST['ids']."')");
  14. }
  15. else
  16. {
  17. echo'zle';
  18. }
  19.  
  20. header ("Location: index.php");
  21. }
  22. ?>

żle to masz. poprawilem ci to
kosior11
rozwiazane!
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.