Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]sprawdzenie, czy dany wiersz istnieje
beatZB
post 14.03.2015, 13:43:46
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 10.12.2014

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


Witam, mam coś w rodzaju "dodaj do ulubionych" działa, ale chciałam dodatkowo zrobic funkcję, która sprawdza, czy dany użytkownik już polubił wpis, jesli tak- to niech nie dodaje do bazy wiersza, a jeśli nie- to żeby dodał odpowiednie dane do bazy, Jednak nie wiem, jak to zrobic to jak próbuję- nie działa.
Może Ktoś z was będzie wiedział, co robię źle?

  1. <?php
  2. include'połączenie.php';
  3.  
  4. if($_SERVER['REQUEST_METHOD'] == 'POST'&& isset($_POST))
  5. {
  6. $id= $_POST['id'];
  7. $nazwa= $_POST['nazwa'];
  8. $nick= $_SESSION['login'];
  9.  
  10. $stmt = $pdo -> prepare("SELECT * FROM ulubione WHERE login= '$login' and id_wpisu='$id_wpisu'");
  11. if($stmt->fetch(PDO::FETCH_NUM) > 0){
  12. echo 'juz lubisz'; die();}
  13. else{
  14.  
  15. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  16. $stmt = $pdo -> prepare('INSERT INTO `ulubione` (`login`,`id_wpisu`,`nazwa`) VALUES(
  17. :login,
  18. :id,
  19. :nazwa)');
  20.  
  21. $stmt -> bindValue(':login', $login, PDO::PARAM_STR);
  22. $stmt -> bindValue(':id', $_POST['id'], PDO::PARAM_STR);
  23. $stmt -> bindValue(':nazwa', $_POST['nazwa'], PDO::PARAM_STR);
  24. $stmt->execute();
  25. echo '<input name="id" type="hidden" value="'.$id.'">';
  26. }}
  27. ?>


Chciałam, żeby zapytanie sprawdzało czy to "polubienie" już było, na podstawie nicku użytkownika i id wpisu.
Będę wdzięczna za wszelką pomoc i sugestie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
mmmmmmm
post 14.03.2015, 14:50:36
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Popatrz na 7 i 11 linijkę kodu. W którejś z nich jest błąd.
Go to the top of the page
+Quote Post
ctom
post 14.03.2015, 17:06:43
Post #3





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


Cytat(beatZB @ 14.03.2015, 13:43:46 ) *
ale chciałam dodatkowo zrobic funkcję, która sprawdza, czy dany użytkownik już polubił wpis, jesli tak- to niech nie dodaje do bazy wiersza, a jeśli nie- to żeby dodał odpowiednie dane do bazy,


zapytaj google o : mysql INSERT IGNORE INTO

wnioskuję, że dbasz o czystość języka ... ale bez przesady (linia 3) ;-)


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
beatZB
post 15.03.2015, 15:41:57
Post #4





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 10.12.2014

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


Dzięki! Wszystko było by pięknie, gdyby nie to, że nie działa... dodaje wszystko co mu powiem, jak by ignorował że w ogóle to 'ignore' tam jest...

  1. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  2. $stmt = $pdo -> prepare('INSERT IGNORE INTO `ulubione` (`nick`,`id_przepis`,`nazwa`) VALUES(
  3. :nick,
  4. :id,
  5. :nazwa)');
  6.  
  7. $stmt -> bindValue(':nick', $_POST['nick'], PDO::PARAM_STR);
  8. $stmt -> bindValue(':nick', $nick, PDO::PARAM_STR);
  9. $stmt -> bindValue(':id', $_POST['id'], PDO::PARAM_STR);
  10. $stmt -> bindValue(':nazwa', $_POST['nazwa'], PDO::PARAM_STR);
  11. $stmt->execute();
  12.  


Dlaczego to jest źle?
Go to the top of the page
+Quote Post
Pyton_000
post 15.03.2015, 16:05:47
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


a masz założony klucz unique na pola "nick, id_przepis" ?
Go to the top of the page
+Quote Post
beatZB
post 15.03.2015, 16:40:09
Post #6





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 10.12.2014

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


Dziękuję, teraz już wszystko działa, tak- jak chciałam.
Pozdrawiam!
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 Wersja Lo-Fi Aktualny czas: 31.07.2025 - 08:33