![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 21.11.2016 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
zabrałem się za naukę języka PHP, ale słabo jeszcze rozumiem składnie i pewne mechanizmy w programowaniu. Próbowałem z bazy danych usunąć jeden z rekordów z poziomu PHP, ale wewnątrz przeglądarki wyskakuje mi taki błąd: Notice: Undefined variable: del in D:\ThinkPad\Xampp\htdocs\przychodnia\delete.php on line 13 Warning: mysqli_query() expects parameter 1 to be mysqli, string given in D:\ThinkPad\Xampp\htdocs\przychodnia\delete.php on line 13 i dotyczy tej konkretnej linijki CODE
gdzie wysyłam to za pomocą odnośnika: CODE <a href="delete.php?del=<?php echo $idlekarza; ?>" onclick ="return confirm('Jesteś pewny, że chcesz usunąć?');"> Delete </a> Jakiego drugiego parametru potrzebuje? Mam podać mu jakoś to 'del', czyli ID użytkownika, którego chcę z bazy usunąć? Być może biorę się za to od złej strony. Próbowałem już według różnych poradników angielskich to robić i na różne sposoby, ale nic. Tutaj cały kod dla plików PrzegladajLekarza.php i delete.php |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) ![]() ![]() |
Informuje Cię o tym że jeden z parametrów nie jeat prawidłowy. Spróbuj zamienić to:
Na:
Jak nie pomoże to udostepnij mi strukturę bazy danych. Może masz gdzieś literówkę. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 21.11.2016 Ostrzeżenie: (0%) ![]() ![]() |
Nic nie dało. Bazę danych póki co zrobiłem ręcznie w phpmyadmin. Mam też problem z uploadem danych, bo nie od dziś się z tym męczę. Tutaj plik sql: baza danych
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
GodOfPeople co Ty dajesz? o0 Naprawdę myślisz, że brak gravisów (nie wiem jak ten znaczek się po polsku nazywa) to przyczyna błędu? Te znaczki są opcjonalne tak poza tym, więc to żaden błąd.
lukasburza jeżeli chcesz wziąć wartość z URL, to nie możesz się do niej odnieść jak do zwykłej zmiennej. Zmienne te są w superglobalnej tablicy $_GET. Czyli w Twoim przypadku nie $del, tylko $_GET['del']. Nie radzę bawić się w tablice w cudzysłowach, lepiej ładnie to połącz kropką:
To początek Twojej nauki, więc jedynie napomknę, że tak nie powinno się tworzyć zapytań w PHP, bo są podatne na atak SQL Injection (wygooglaj, jeśli masz ochotę). |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) ![]() ![]() |
Poważnie ? Aż takie braki masz? Dlaczego szukasz po id skoro uzywasz idlekarza w pacjentach ? Nie masz tam identyfikatora dla pacjenta.
Teraz na bank działa @SmokAnalog a słyszałeś o sql injecton, czy jak się to pisze ? Dodanie samego $_GET w zapytaniu SQL jest raczej absurdalnym pomysłem. Może akurat ten kolega w tablicy ma odpowiednio przefiltrowane dane w co wierzę tak samo jak w świętego mikołaja. Brak gravisow w tym przypadku nie załatwiło sprawy, natomiast nie oznacza to że ich brak jest poprawny. Nazwij w bazie danych tabele 'end' i spróbuj wyciągnąć z niej dane bez ich uzywania. Jestem tego zdania że dobrych manier programowania najlepiej się uczyć już na samym początku bo jest większe prawdopodobieństwo że wejdzie to w nawyk. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) ![]() ![]() |
JavaScript zmieniający head z body w htmlu (IMG:style_emoticons/default/oneeyedsmiley02.png)
Ten post edytował GodOfPeople 22.11.2016, 02:16:21 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
W swoim skrypcie masz <a href="delete.php?del=<?php echo $idlekarza; ?> ale ta zmienna nie została nigdzie wcześniej utworzona.
$id = (int) $_GET['del']; Albo jeszcze lepiej http://php.net/manual/en/mysqli-stmt.bind-param.php Kodowanie powinno być ustawione za pomocą http://php.net/manual/en/mysqli.set-charset.php Ten post edytował viking 22.11.2016, 08:28:35 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 18 Dołączył: 5.02.2016 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
$del[idlekarza]
na $del['idlekarza'] Swoją drogą masz strasznie namieszane. Kolumna 'id' powinna być primary key i mieć AUTO_INCREMENT. Dopiero w kolejnej kolumnie przydzielasz dla tego wpisu lekarza. Wtedy w pytaniu dajesz WHERE `lekarz`='$idlekarza'; Ale wciąż nie wiem, skąd podchodzi $idlekarza, w jaki sposób je uzyskujesz. Ten post edytował Niree 22.11.2016, 15:59:38 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 21.11.2016 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję Kolegom, każdy komentarz to cenna uwaga, bo rzeczywiście kilka błędów było, ale jednak nie pomogło.
Cytat Swoją drogą masz strasznie namieszane. Kolumna 'id' powinna być primary key i mieć AUTO_INCREMENT. Dopiero w kolejnej kolumnie przydzielasz dla tego wpisu lekarza. Wtedy w pytaniu dajesz WHERE `lekarz`='$idlekarza'; Ale wciąż nie wiem, skąd podchodzi $idlekarza, w jaki sposób je uzyskujesz. idlekarza ma autoincrement i primary key i jest to dokładnie ID dla lekarza w mysqlu. Później dla odróżnienia wpisałem ID, w pliku delete.php - już to zmieniłem, wszędzie gdzie było id już jest idlekarza, czyli tak jak w bazie mysqla. Nie jestem pewny jak uzyskać to $idlekarza , więc wyprowadź mnie prosze z błędu jeżeli źle rozumuję - przesyłam del w tym odnośniku "a href..." jako zmienną globalną, która ma taką samą wartość w PrzegladajLekarza.php i delete.php . Następnie sprawdzam, czy $_GET['del'] jest aktywny, znaczy czy coś tam się znajduję, usuwam rekord o ID równym idlekarza. Pytanie dodatkowe - czy w delete.php muszę od nowa inicjować połączenie z bazą danych (mysqli_connect, etc.)? Czy może po drodze jest jakiś błąd. Cytat W swoim skrypcie masz <a href="delete.php?del=<?php echo $idlekarza; ?> ale ta zmienna nie została nigdzie wcześniej utworzona. $id = (int) $_GET['del']; Albo jeszcze lepiej http://php.net/manual/en/mysqli-stmt.bind-param.php Kodowanie powinno być ustawione za pomocą http://php.net/manual/en/mysqli.set-charset.php Rzeczywiście, nie robię tego klasami (mam na myśli mysqli = new mysqli('localhost', '', etc.), ale staram się podążać za jakimiś pomocami internetowymi i według nich mogę robić to tak jak robiłem. Dodałem teraz ale niestety nic z tego (IMG:style_emoticons/default/sad.gif) Wydaje mi się, że mimo że wyskakuje mi ta linijka 13 to jednak nie tutaj tkwi problem, tylko w przesyłaniu zmiennych / komunikacją. Może ktoś mógłby jeszcze sprawdzić czy dobrze komunikuję ze sobą pliki PrzegladajLekarzy.php i delete.php ? Tutaj dbconnect.php Ten post edytował lukasburza 23.11.2016, 01:35:55 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ma być idlekarza = (int) $_GET['del']
Gdzie idlekarza to kolumna w bazie. A co mają do tego klasy to nie wiem. Bind_param jest zarowno strukturalne jak i obiektowe. Ten post edytował viking 23.11.2016, 05:20:40 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 22:43 |