Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] unexpected T_IF
AuronDiel
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


Witam! W moim kodzie wkradł się błąd, którego nie potrafie znaleźć. Prosze o pomoc i z góry dziekuję.
  1. echo '<table border="1">';
  2. while ($wiersz = mysql_fetch_row($idzapytania))
  3. {
  4. echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td>'. $wiersz[3] .'</td><td><input type="submit" name="ok" value="" id="zaloguj">' .
  5. if(isset($_POST['ok']))
  6. {
  7. $zapytanie2 = "DELETE FROM `tabela1` WHERE `id`='$id' `rzecz`=`$wiersz[2]`";
  8. if(mysql_query($zapytanie2)) echo 'Osoba została usunięta z czarnej listy!';
  9. } .'</td></tr>';
  10. }
  11. echo '<table>';


Wypluło coś takiego.
Parse error: syntax error, unexpected T_IF in public_html/dodaj.php on line 5
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
-Andrzej.W.-
post
Post #2





Goście







  1. echo '<table border="1">';
  2. while ($wiersz = mysql_fetch_row($idzapytania))
  3. {
  4. echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td>'. $wiersz[3] .'</td><td><input type="submit" name="ok" value="" id="zaloguj">';
  5. if(isset($_POST['ok']))
  6. {
  7. $zapytanie2 = "DELETE FROM `tabela1` WHERE `id`='$id' `rzecz`=`$wiersz[2]`";
  8. if(mysql_query($zapytanie2)) echo 'Osoba została usunięta z czarnej listy!';
  9. }
  10. echo '</td></tr>';
  11. }
  12. echo '<table>';


Sposób w jaki wstawiłeś funkcję jest nieprawidłowy '.funkcja.' wg. mnie. Tak wstawia się zmienną przy funkcji wywala błąd.
Pozdrawiam.
Andrzej.

Ten post edytował Andrzej.W. 13.05.2013, 22:02:41
Go to the top of the page
+Quote Post
AuronDiel
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


Panie Andrzeju skypt działa, dziękuje bardzo lecz mam inny problem. Zrobiłem w skrypcie specjalny przycisk do usuwaniu calego wiersza z bazy danych
a wiersz mial znaleźć po id i rzeczy. Niestety skrypt nie usuwa mi z bazy danego wiersza po kliknięciu klawisza.

  1. echo '<table border="1">';
  2. while ($wiersz = mysql_fetch_row($idzapytania))
  3. {
  4. echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td>'. $wiersz[3] .'</td><td><form action="zalogowany.php" method="POST"><input type="submit" name="okk" value="" id="zaloguj"></form>';
  5. if(isset($_POST['okk']))
  6. {
  7. $zapytanie2 = "DELETE FROM `tabela1` WHERE `id`='$id' `rzecz`='$wiersz[2]'";
  8. if(mysql_query($zapytanie2)) echo 'Osoba została usunięta z czarnej listy!';
  9. }
  10. echo '</td></tr>';
  11. }
  12. echo '<table>';


Ten post edytował AuronDiel 13.05.2013, 22:06:07
Go to the top of the page
+Quote Post
-Andrzej.W.-
post
Post #4





Goście







Nie widzę tutaj zdefiniowania wartości $id, jeśli dobrze rozumiem to któryś z wiersz[] posiada tę wartość.

Ten post edytował Andrzej.W. 13.05.2013, 22:07:07
Go to the top of the page
+Quote Post
AuronDiel
post
Post #5





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


Jest zdefiniowana, var_dump($id) wypisał ,,string(1) "1" NULL" co się zgadza id ma wartość 1. Wiersz nie podsiada id, pobrałem ją z sesji.

  1. $id = $_SESSION['id'];
  2. $zapytanie = "SELECT `imie`,`mail`,`rzecz`,`data` FROM `tablica1` WHERE id='$id'";
  3. $idzapytania = mysql_query($zapytanie);
  4.  
  5. var_dump($id);
  6. var_dump($rzecz);
  7. echo '<table border="1">';
  8. while ($wiersz = mysql_fetch_row($idzapytania))
  9. {
  10. echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td>'. $wiersz[3] .'</td><td><form action="zalogowany.php" method="POST"><input type="submit" name="okk" value="" id="zaloguj"></form>';
  11. if(isset($_POST['okk']))
  12. {
  13. $zapytanie2 = "DELETE FROM `tabela1` WHERE `id`='$id' `rzecz`='$wiersz[2]'";
  14. if(mysql_query($zapytanie2)) echo 'Osobnik została usunięta z czarnej listy!';
  15. }
  16. echo '</td></tr>';
  17. }
  18. echo '<table>';


Użytkownik ma te samo id i pierw w bazie szuka po id a pozniej ma znaleźć wiersz który zawiera daną rzecz (każdy wiersz ma inną rzecz) i na jej podstawie usunąć cały rekord

Ten post edytował AuronDiel 13.05.2013, 22:18:56
Go to the top of the page
+Quote Post
-Andrzej.W.-
post
Post #6





Goście







Chyba nie zatrybiłem, zarówno id jak i rzecz to element tego samego rekordu? I czy oba sa unikalne dla każdego rekordu w tej tabeli?

Ten post edytował Andrzej.W. 13.05.2013, 22:30:45
Go to the top of the page
+Quote Post
AuronDiel
post
Post #7





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


Tabela ,,tabela1" w bazie wygląda tak:
| id |mail | rzecz | data | imię |

Po zarejestrowaniu użytkownik dostaje przez A_I numerek.
Kiedy dodaje rekord do tabeli ,,tabela1" wypisuje tylko mail, rzecz, data, imie a id dopisuje mi sie same i to właśnie działa.
Chciałem zrobic jeszcze opcje wyświetlania rekordów (rekordy wyswietlaja sie tylko te ktore id ich zgadza sie z id uzytkownika) oraz usunięcia poszczegolnego z bazy za pomocą submit. Wyświetlić mi się udało ale usunąc się nie chce. Chce usunąć też poszczególny rekord nie wszystkie.
W bazie może być wiele rekordów dlatego są id by każdemu użytkownikowi były przepisane jego rzeczy. Więc pytanie miało wyglądać tak ,,Znajdz mi w tablicy ,,tabela1" wszystkie wiersze zawierajace id uzytkownika pozniej znajdz mi rzecz a nastepnie usun caly wiersz z bazy". Czemu szukam jeszcze rzeczy bo uzytkownik moze miec pare wierszy z tym samym id a rzecz jest unikalna. Mam nadzieje, że teraz jest wszystko zrozumiałe.

NP.
| id |mail | rzecz | data | imię |

| 1 | ---- | kapsel | ---- | ----|
| 1 | ---- | guma | ---- | ----|
| 2 | ---- | kalosze |---- | ---|

To sa przykladowe wiersze w bazie rozchodzilo mi sie o to ze po nacisnieciu klawisza usunie mi dany wiersz a znajdzie go pierw po id a pozniej po rzeczy.

Odkryłem, że po id umie to znaleźć wiersze ale odpowiedni wiersz po rzeczy to już nie.
  1. $zapytanie2 = "DELETE FROM `tabela1` WHERE `id`='$id' and `rzecz`='$wiersz[2]'";

Może inaczej trzeba sformułować pytanie?

Ten post edytował AuronDiel 13.05.2013, 22:42:38
Go to the top of the page
+Quote Post
-Andrzej.W.-
post
Post #8





Goście







No to kolego sam już sobie odpowiedziałeś na pytanie, to powinno działać. Ja w sumie zawsze indeksuje tabele, więc każdy rekord ma unikalny id. zawsze też indeks nazywam id_nazwa_tabeli. (IMG:style_emoticons/default/wink.gif)
Pozdrawiam.

Ten post edytował Andrzej.W. 14.05.2013, 06:06:42
Go to the top of the page
+Quote Post
AuronDiel
post
Post #9





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


Mam po prostu inaczej sformułować pytanie?
Go to the top of the page
+Quote Post
-Andrzej.W.-
post
Post #10





Goście







Wg. mnie tak, w pierwszej wersji zabrakło operatora AND sprawdziłem sobie na testowej tabeli, czy po dodaniu do Twojej konstrukcji zapytania AND prawidłowo skasuje rekord i skasowało.
Miałem 2 takie same id, a różne wartości drugiej kolumny, zatem tylko tyle. (IMG:style_emoticons/default/smile.gif)
Często wyolbrzymia się problem, a diabeł tkwi w detalu. (IMG:style_emoticons/default/wink.gif)

Ja wczoraj popełniłem mistrzostwo świata, godzinę szukałem gdzie jest problem w kodzie, że się nie wykonuje, a sprawdzając czy działa patrzyłem na inną tabelę, gdzie żadne zmiany się nie dokonywały heheh. A kod działał jak należy.(IMG:style_emoticons/default/smile.gif)

Ten post edytował Andrzej.W. 14.05.2013, 07:30:35
Go to the top of the page
+Quote Post
AuronDiel
post
Post #11





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


Wpisałem AND i niestety nie działa, myślę, że to może być przez pętle, ale nie jestem pewien. Zerknij jeśli możesz.
  1. $id = $_SESSION['id'];
  2. $zapytanie = "SELECT `imie`,`mail`,`rzecz`,`data` FROM `tabela1` WHERE id='$id'";
  3. $idzapytania = mysql_query($zapytanie);
  4.  
  5. echo '<table border="1">';
  6. while ($wiersz = mysql_fetch_row($idzapytania))
  7. {
  8. echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td>'. $wiersz[3] .'</td><td><form action="zalogowany.php" method="POST"><input type="submit" name="okk" value="" id="zaloguj"></form>';
  9. if(isset($_POST['okk']))
  10. {
  11. $zapytanie2 = "DELETE FROM `tabela1` WHERE `id`='$id' AND `rzecz`='$wiersz[2]'";
  12. if(mysql_query($zapytanie2)) echo 'Dłużnik została usunięta z czarnej listy!';
  13. }
  14. echo '</td></tr>';
  15. }
  16. echo '<table>';


Albo może on wpisuje obydwie rzeczy do zapytania.
Go to the top of the page
+Quote Post
-Andrzej.W.-
post
Post #12





Goście







Ahhh
Jeśli się nie mylę, to z tego wynika, że zmiennej $wiersz[2] nigdzie nie wysyłasz, nie analizowałem pod tym kątem tego kodu, a skupiłem się tylko na poprawności zapytania.

  1. <form action="zalogowany.php" method="POST">
  2. <input type="submit" name="okk" value="" id="zaloguj"></form>

Jeżeli się nie mylę, to value powinno mieć jeśli już wartość $wiersz[2]
Tylko masz tu wszystko pomieszane, albo za mało kodu widzę.

Po 1.
warunkujesz wykonanie zapytania do bazy istnieniem $_POST['okk'], a chcesz obsłużyć ten formularz zewnętrznym plikiem zalogowany.php

Więc , czy warunek if(isset($_POST['okk']; to część tego samego pliku, co tabela z wynikiem selecta. Czy innego pliku?

Jeśli tabela z wynikiem selecta jest w tym samym pliku co zapyatnie DELETE z warunkiem $_POST['okk'], to wówczas :

a. w deklaracji formularza nie dajesz action="nazwa_pliku.php", w ogóle pomijasz action i dajesz tylko method="post"

@edit pomyliłem się
2. Jeżeli jest obsługiwane przez plik zalogowany.php to :

a. Przekaż do wartości (value="") inputa submit, wartość $wiersz[2], w ten sposób przekażesz ją do zapytania.
b. w zapytaniu powinno być wówczas nie $wiersz[2], a $_POST['okk'].

Jeśli zaś masz tu pokazany kod z dwóch plików, to porozdzielaj to na dwa cytaty.

To tak z grubsza.(IMG:style_emoticons/default/smile.gif)

Ten post edytował Andrzej.W. 14.05.2013, 22:18:52
Go to the top of the page
+Quote Post
AuronDiel
post
Post #13





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


JESTEŚ GENIALNY UDAŁO SIĘ(IMG:style_emoticons/default/exclamation.gif) ! NIE MASZ POJĘCIA JAK BARDZO CI DZIĘKUJE! WYŚLE CI PIWO!
Go to the top of the page
+Quote Post
-Andrzej.W.-
post
Post #14





Goście







Oj tam, cieszę się że mogłem pomóc, takie próby mnie rozwijają. Ja dopiero raczkuje w php.(IMG:style_emoticons/default/wink.gif)
Pkt pomógł w zupełności wystarczą.
Dobrej nocy. (IMG:style_emoticons/default/wink.gif)

@Edit
Jest jeszcze jedna rzecz, mianowicie, to trochę bez sensu będzie wyglądać, że każdy guzik będzie mieć nazwę wiersz[2], nie wiadomo wówczas do czego on służy. Zatem polecam rozwiązanie jakie stosuję u siebie. Implementujesz do poniższego zestawu Input typu checkbox i zniego odbierasz dane do zapytania np w Twoim wypadku:

  1. echo '<form action="zalogowany.php" method="POST">
  2. <input type="checkbox" name="delete" value="'.$wiersz[2].'">
  3. <input type="submit" name="okk" value="Usuń" id="zaloguj"></form>';


Wtedy warunek byłby mniej więcej taki:

  1. if(isset($_POST['delete']) AND !empty($_POST['delete']))
  2. {
  3. $zapytanie2 = "DELETE FROM `tabela1` WHERE `id`='$id' AND `rzecz`='$_POST['delete']'";
  4. if(mysql_query($zapytanie2)) echo 'Dłużnik została usunięta z czarnej listy!';
  5. }


Wówczas w tabeli nazwa przycisku usuń byłaby jednoznaczna i kliknięcie checkboksa intuicyjne.

"PS pisane z palca więc mogą być błędy.
Pozdrawiam.(IMG:style_emoticons/default/smile.gif)

Ten post edytował Andrzej.W. 15.05.2013, 07:04:50
Go to the top of the page
+Quote Post

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: 22.08.2025 - 23:20