Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Warunek if
GoodStuff
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Cześć, mógłby mi ktoś wytłumaczyć gdzie popełniam błąd przy tym warunku, czy wgl tak można robić?

  1. if ($sprawdzanie['id_dodajacego'] == $user['id'] AND $sprawdzanie['id_dodanego'] == $profile['id'] )
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 21)
Forti
post
Post #2





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


  1. if (($sprawdzanie['id_dodajacego'] == $user['id']) && ($sprawdzanie['id_dodanego'] == $profile['id'])) {
  2.  
  3. }
Go to the top of the page
+Quote Post
GoodStuff
post
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Dalej niestety wywala mi błąd
  1. Parse error: syntax error, unexpected T_IF


Ten post edytował GoodStuff 21.02.2015, 10:15:47
Go to the top of the page
+Quote Post
Forti
post
Post #4





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Pokaż cały kod. Przed if masz prawdopodobnie brak ; przy jakieś zmiennej czy coś.
Go to the top of the page
+Quote Post
GoodStuff
post
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


  1. <?
  2. $sprawdzanie = $db->query("SELECT * FROM reputacja")
  3.  
  4. if (($sprawdzanie['id_dodajacego'] == $user['id']) && ($sprawdzanie['id_dodanego'] == $profile['id']))
  5. {
  6. echo"Już dałeś mu punkt reputacji !"
  7.  
  8. }
  9. else{
  10.  
  11. if($_POST['send'] == 2){
  12. $dodajrep = $profile['reputacja'] +1;
  13.  
  14. $result = $db->query("UPDATE `users` SET reputacja=$dodajrep WHERE `id` = $profile[id]")
  15. $result = $db->query("INSERT INTO reputacja (id_dodajacego, id_dodanego) VALUES ('".$user['id']."', '".$profile['id']."')")
  16.  
  17.  
  18. $result = $db->query("SELECT * FROM users WHERE id=$profile[id]")
  19.  
  20. // get the first (and hopefully only) entry from the result
  21. $row = mysql_fetch_array( $result );
  22. echo 'Dałeś punkt reputacji użytkownikowi '.$profile['login'].'';
  23.  
  24. }
  25.  
  26.  
  27. if($_POST['send'] == 3){
  28. $zabierzrep = $profile['reputacja'] -1;
  29.  
  30.  
  31. $result = $db->query("UPDATE `users` SET reputacja=$zabierzrep WHERE `id` = $profile[id]")
  32.  
  33.  
  34.  
  35. $result = $db->query("SELECT * FROM users WHERE id=$profile[id]")
  36.  
  37. // get the first (and hopefully only) entry from the result
  38. $row = mysql_fetch_array( $result );
  39. echo 'Zabrałeś punkt reputacji użytkownikowi '.$profile['login'].'';
  40.  
  41. }
  42. }
  43. ?>
Go to the top of the page
+Quote Post
Boshi
post
Post #6





Grupa: Zarejestrowani
Postów: 342
Pomógł: 15
Dołączył: 30.08.2011

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


  1. $sprawdzanie = $db->query("SELECT * FROM reputacja")
brak średnika
Go to the top of the page
+Quote Post
GoodStuff
post
Post #7





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Rzeczywiście, dzięki teraz kolejny problem. Gdy już to poprawiłem . Strona mi się zaczęła rozjeżdżać co za tym idzie przestał działać insert i update.
\
  1. <?
  2. $sprawdzanie = $db->query("SELECT * FROM reputacja");
  3.  
  4. if (($sprawdzanie['id_dodajacego'] == $user['id']) && ($sprawdzanie['id_dodanego'] == $profile['id']))
  5. {
  6. echo"Już dałeś mu punkt reputacji !";
  7.  
  8. }
  9. else{
  10.  
  11. if($_POST['send'] == 2){
  12. $dodajrep = $profile['reputacja'] +1;
  13.  
  14. $result = $db->query("UPDATE `users` SET reputacja=$dodajrep WHERE `id` = $profile[id]")
  15. $result = $db->query("INSERT INTO reputacja (id_dodajacego, id_dodanego) VALUES ('".$user['id']."', '".$profile['id']."')")
  16.  
  17.  
  18. $result = $db->query("SELECT * FROM users WHERE id=$profile[id]")
  19.  
  20.  
  21. $row = mysql_fetch_array( $result );
  22. echo 'Dałeś punkt reputacji użytkownikowi '.$profile['login'].'';
  23.  
  24. }
  25.  
  26.  
  27. if($_POST['send'] == 3){
  28. $zabierzrep = $profile['reputacja'] -1;
  29.  
  30.  
  31. $result = $db->query("UPDATE `users` SET reputacja=$zabierzrep WHERE `id` = $profile[id]")
  32.  
  33.  
  34.  
  35. $result = $db->query("SELECT * FROM users WHERE id=$profile[id]")
  36.  
  37. // get the first (and hopefully only) entry from the result
  38. $row = mysql_fetch_array( $result );
  39. echo 'Zabrałeś punkt reputacji użytkownikowi '.$profile['login'].'';
  40.  
  41. }
  42. }
  43. ?>


Ten post edytował GoodStuff 21.02.2015, 10:45:00
Go to the top of the page
+Quote Post
Forti
post
Post #8





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


po co te or die pod insert, update itp?

Wyżej napisałem Ci o średniku, trzeba Tobie palcem pokazać linijke i kolumnę abyś sam zaczął szukać? ;>


Rozwiązanie:

Kod
mysql_query($sql);
if (mysql_error()) die('Error, insert query failed with:' . mysql_error());


Pierwszy link z google.

Ten post edytował Forti 21.02.2015, 10:45:24
Go to the top of the page
+Quote Post
GoodStuff
post
Post #9





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Pewnie, że nie średniki uzupełniłem
Go to the top of the page
+Quote Post
Forti
post
Post #10





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


or die

zamień na to co Ci wyżej podałem. Musisz miec warunek sprawdzający czy jest błąd i ewentualnie rzucić wyjątkiem/błędęm/informacją.
Go to the top of the page
+Quote Post
GoodStuff
post
Post #11





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Chyba nie łapię co chciałeś mi przez to przekazać
Go to the top of the page
+Quote Post
Forti
post
Post #12





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Nie chyba tylko na pewno

  1.  
  2. $result = $db->query("UPDATE `users` SET reputacja=$dodajrep WHERE `id` = $profile[id]")


zmień na

  1.  
  2. $result = $db->query("UPDATE `users` SET reputacja=$dodajrep WHERE `id` = $profile[id]")
  3. mysql_error() ? die(mysql_error()) : null;


albo użyj try - catch bloku.
Go to the top of the page
+Quote Post
GoodStuff
post
Post #13





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Tutaj jest wszystko dobrze, wydaje mi się że if coś psuje ;/?

Bez warunku if wszystko działa jak należy. Jeżeli chodzi o update czy insert

gdy dodaję ten warunek , przestaje ładować dalszy kod strony. Dlaczego?

Ten post edytował GoodStuff 21.02.2015, 11:22:38
Go to the top of the page
+Quote Post
Forti
post
Post #14





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Serio?

  1. if (coś) {
  2. a
  3. } else {
  4. b
  5. }



pytasz dlaczebo nie wykonuje się b? Serio?
Go to the top of the page
+Quote Post
GoodStuff
post
Post #15





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Niestety to wiem całkiem o coś innego chodziło . Ale dzięki za naprowadzenie mnie i czas poświęcony (IMG:style_emoticons/default/smile.gif) ! Można zamknąć

Myślałem już, że sobie z tym poradziłem ale napotkałem dziwny błąd mianowicie u jednego użytkownika ten warunek if działa a u drugiego nie. Jaka może być przyczyna?

Mniej więcej przy
  1. profile.php?id=10
działa warunek a już przy
  1. profile.php?id=11
nie.

  1. $a = $db->query("SELECT * FROM reputacja");
  2. $a = $a->fetch_array();
  3.  
  4. if (($a['id_dodajacego'] == $user['id']) && ($a['id_dodanego'] == $profile['id'])) {
  5. echo"Gracz już otrzymał od ciebie punkt reputacji! !";
  6.  
  7. }
  8. else{
  9. if($user['id'] == $id){
  10. echo 'Nie możesz przyznać sam sobie punktów reputacji!';
  11. }
  12. else{
  13. echo '<br /><form method="post" action="" enctype="multipart/form-data">
  14. <input type="hidden" name="send" value="2" />
  15. <input type="submit" class="dajpkt" value="" />
  16. </form>';
  17. echo '<form method="post" action="" enctype="multipart/form-data">
  18. <input type="hidden" name="send" value="3" />
  19. <input type="submit" class="zabierzpkt" value="" />
  20. </form><br />';
  21. }
  22. }
  23. if($user['id'] == $id){
  24. echo '<br /><br /><a href="?id='.$id.'&edit=1">Edytuj profil</a>';
  25. echo '<br /><a href="index.php">Powrót</a>';
  26. }
  27. }
  28. }
  29.  
  30. }
  31. else
  32. {
  33. echo "Aby w pełni korzystać z przywilejów tej strony zaloguj się !";
  34.  
  35. }
  36.  
  37. if($_POST['send'] == 2){
  38. $dodajrep = $profile['reputacja'] +1;
  39.  
  40. $result = $db->query("UPDATE `users` SET reputacja=$dodajrep WHERE `id` = $profile[id]")
  41. $result = $db->query("INSERT INTO reputacja (id_dodajacego, id_dodanego) VALUES ('".$user['id']."', '".$profile['id']."')")
  42.  
  43.  
  44. $result = $db->query("SELECT * FROM users WHERE id=$profile[id]")
  45.  
  46.  
  47. $row = mysql_fetch_array( $result );
  48. echo 'Dałeś punkt reputacji użytkownikowi '.$profile['login'].'';
  49.  
  50. }
  51.  
  52.  
  53. if($_POST['send'] == 3){
  54. $zabierzrep = $profile['reputacja'] -1;
  55.  
  56.  
  57. $result = $db->query("UPDATE `users` SET reputacja=$zabierzrep WHERE `id` = $profile[id]")
  58. $result = $db->query("INSERT INTO reputacja (id_dodajacego, id_dodanego) VALUES ('".$user['id']."', '".$profile['id']."')")
  59.  
  60.  
  61.  
  62. $result = $db->query("SELECT * FROM users WHERE id=$profile[id]")
  63.  
  64.  
  65. $row = mysql_fetch_array( $result );
  66. echo 'Zabrałeś punkt reputacji użytkownikowi '.$profile['login'].'';
  67.  
  68. }
Go to the top of the page
+Quote Post
Boshi
post
Post #16





Grupa: Zarejestrowani
Postów: 342
Pomógł: 15
Dołączył: 30.08.2011

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


Nie ma takiego ID widocznie, całość jest false, bo poszczególna część warunku jest false a 1 AND 0 = 0
Go to the top of the page
+Quote Post
GoodStuff
post
Post #17





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Ale dlaczego na jednym działa a na drugim nie chociaż rekordy są takie same
Go to the top of the page
+Quote Post
Rochu
post
Post #18





Grupa: Zarejestrowani
Postów: 64
Pomógł: 14
Dołączył: 25.09.2010

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


Najprościej sprawdź sobie jak warunek w rzeczywistości wygląda, przed instrukcją warunkową wklej sobie to:

  1. echo "if ((".$a['id_dodajacego']." == ".$user['id'].") && (".$a['id_dodanego']." == ".$profile['id']."))";


i wtedy na własne oczy zobaczysz jakie wartości są porównywane i bez problemu powinieneś dojść czemu tak się dzieje.
Go to the top of the page
+Quote Post
GoodStuff
post
Post #19





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Dzięki Rochu rzeczywiście przy id_dodanego zwraca mi zawsze 10 czyli pierwszy rekord dlaczego?

  1. $a = $db->query("SELECT * FROM reputacja");
  2. $a = $a->fetch_array();
  3. echo "if ((".$a['id_dodajacego']." == ".$user['id'].") && (".$a['id_dodanego']." == ".$profile['id']."))";
Go to the top of the page
+Quote Post
Forti
post
Post #20





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Wyświetl sobie

  1. echo $a;


i zobacz jaką ma strukture, co to jest itp.
Go to the top of the page
+Quote Post
GoodStuff
post
Post #21





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Dzięki wszystkim za pomoc , człowiek ciągle się uczy.

Poradziłem sobie w ten sposób
  1. $a = mysqli_fetch_array($db->query("SELECT * FROM reputacja Where id_dodajacego=".$user['id']." and id_dodanego=".$profile['id'].""));
Go to the top of the page
+Quote Post
Boshi
post
Post #22





Grupa: Zarejestrowani
Postów: 342
Pomógł: 15
Dołączył: 30.08.2011

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


Skoro $a jest tablicą to wyświetl ją przez print_r($a) i zobacz co tam siedzi. Ewentualnie var_dump($a)
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 23.08.2025 - 14:08