Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Blokada na dodawanie rekordów
kosior11
post
Post #1





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
Ruch Radzionków
post
Post #2





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

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


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. }


Ten post edytował Ruch Radzionków 21.07.2012, 14:40:51


--------------------
Pomogłem daj pomógł
Go to the top of the page
+Quote Post
kosior11
post
Post #3





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----


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. ?>
Go to the top of the page
+Quote Post
d3ut3r
post
Post #4





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


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`);





--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
kosior11
post
Post #5





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----


nie wybiera po user_id tylko po nazwie użytkownika
Go to the top of the page
+Quote Post
d3ut3r
post
Post #6





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


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.


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
Ruch Radzionków
post
Post #7





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

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


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

Ten post edytował Ruch Radzionków 21.07.2012, 15:31:58


--------------------
Pomogłem daj pomógł
Go to the top of the page
+Quote Post
kosior11
post
Post #8





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----


rozwiazane!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 02:33