![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Otóż chciałem zrobić jak najprostszy system newsów i znalazłem ten artykuł
Więc zrobiłem wszystko jak tam jest napisane utworzyłęm tabele i reszte. sprawdzam skrypt a tu nie działa sprawdzałem po kolei pliki za pomocą tej funkcji dodaj html: Dodaj php:
taki błąd Kod Notice: Undefined variable: tytul in D:\WebServ\wwwroot\htdocs\dodaj.php on line 5 Notice: Undefined variable: skrot in D:\WebServ\wwwroot\htdocs\dodaj.php on line 5 Notice: Undefined variable: tresc in D:\WebServ\wwwroot\htdocs\dodaj.php on line 5 news.php
Kod Notice: Undefined variable: id in D:\WebServ\wwwroot\htdocs\news.php on line 5 z tego co wywnioskowałem to błąd połączenia z bazą jak mam to naprawić? prosze o pomoc aha wypełniłem dane sql jak się dowiem jak naprawić skrypt to zrobie plik config.php i tam dam dane bazy Ten post edytował jasiek65 30.05.2010, 16:29:05 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
a z czego wywnioskowałeś, że to problem z połączeniem? undefined variable, to po tłumaczeniu znaczy: niezdefiniowana zmienna, mogłeś to sobie nawet w Google wpisać, używasz zmiennych $tytul, $skrot i $tresc, a skad je bierzesz? przecież skrypt nie wie skąd są te zmienne, a jeżeli Ci to działa to tylko dlatego, że masz włączone global registers, jeżeli przesyłasz dane postem, to musisz się do nich odwołać:
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
w dodaj.php zmieniłęm to ale np w
news.php
co zrobić? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
a skąd się bierze $id? najlepiej zwracaj na to uwagę bo potem wrzucisz stronę na prawdziwy serwer i się nagle okaże, że nic nie działa, bo na praktycznie wszystkich serwerach global registers jest na off
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
wszystkie musze opisywać?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
tak, na żadnym normalnym serwerze to nie będzie działać i lepiej rób to od razu, bo potem będzie trudniej poprawiać cały skrypt
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
czyli id czemu ma się równać ?
$id = |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
to zależy skąd ona pochodzi jeżeli przesyłasz ją przy pomocy url czyli np. index.php?id=4 to odwołasz się do niej:
, jeżeli przesyłasz ją przy pomocy formularza to w zależności od ustawionej metody przesyłania odwołujesz się tablicą $_POST lub $_GET |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
wyciągam ją z bazy sql
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
jak z bazy wyciągasz jak nie ma wcześniej żadnego zapytania
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
id int(11)
myślałem ze przeczytałeś artykuł ja jestem zielony z mysql
Ten post edytował jasiek65 31.05.2010, 13:36:21 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
chodzi o to, że w tutaj:
w zapytaniu sql w warunku WHERE użyłeś zmiennej $id, a nie masz jej wcześniej zdefiniowanej dlatego dostajesz notice |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
to jak ją zdefiniować ?
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
a w jaki sposób przesyłasz ją do skryptu? a to zapytanie pobiera Ci cokolwiek? zrób:
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Kod Notice: Undefined variable: id in \news.php on line 10 Resource id #3 zmienna nadal nie zdefiniowana a newsów też mi nie pobiera z bazy |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
to może inaczej: co Ty właściwie chcesz zrobić tym zapytaniem? napisałeś zapytanie: "Wybierz rekordy z wszystkich kolumn tabeli newsy, gdzie id = $id", no to skoro chcesz pobrać newsy przypisane do konkretnego numeru ID, to to ID musi skądś pochodzić. A jeżeli chcesz tym zapytaniem pobrać wszystkie newsy to robisz:
a potem pętlą while odbierasz wyniki |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
od tego jest przecież
ja chcę zrobić jak najprostszy system newsów oparty o sql Kod Wymagania Newsy będą opierały się na bazie MySQL, więc musisz posiadać serwer z dostępem do takowej. Oprócz tego nic specjalnego nam nie będzie potrzebne. Projekt Przed zabraniem się do pisania, powinniśmy stworzyć ogólny projekt skryptu, dzięki temu od początku będziemy wiedzieli jak wszystko ma wyglądać. No więc na stronie głównej będą wyświetlane początki trzech ostatnich newsów i link 'czytaj więcej' po którego kliknięciu użytkownik zostanie przeniesiony do pełnej treści newsa. News będzie składał się z tytułu, treści i daty utworzenia. Zaczynamy! Baza danych Zanim zaczniemy pisać kod, stworzymy bazę danych. Jak już wspomniałem będzie to baza MySQL. Otwieramy więc phpmyadmina i tworzymy bazę - nazwijmy ją 'newsy', następnie w tej bazie stwórzmy tabelę z pięcioma polami (w nawiasach podaję typ): id (int, opcja: auto_increment i indeks), tytul (tinytext), skrot (text), tresc (text) i data (datetime) - tabelę również nazywamy 'newsy'. Oki, tabela jest gotowa, ale żeby było widać efekty w czasie pisania musimy mieć już kilka gotowych newsów. Dodaj więc ręcznie kilka newsów. Tworzymy pliki Oki, baza już jest, teraz stwórz katalog, gdzie będą wszystki pliki skryptu i nadaj mu nazwę 'newsy'. W tym katalogu utwórz cztery pliki: include.php, news.php, dodaj.php, dodaj.htm. Gdy wszystko jest gotowe możemy przejść do tego, co programiści lubią najbardziej - kodzenia! Piszemy kod! Zaczniemy od wypełnienia pliku include.php. Ma on za zadanie wyświetlenie trzech ostatnich newsów. Otwórz więc ten plik i wpisz taki kod: <?php mysql_connect('localhost', 'nazwa_uzytkownika' , 'haslo_uzytkownika'); mysql_select_db("newsy"); $query = mysql_query("select * from newsy order by data desc limit 0,3"); while($rekord = mysql_fetch_array($query)) { $tekst .= '<b><h3>'.$rekord[1].'</h3></b>'.$rekord[2].'<br/><a href="news.php?id='.$rekord[0].'">czytaj wiecej...</A>'; } echo $tekst; ?> Odpal ten plik na swoim komputerze (musisz mieć PHP i MySQL) oczywiście zamień: nazwa_uzytkownika na twój nick do MYSQL (ten sam jest do phpmydmina), a haslo_uzytkownika na haslo do mysql(te samo jest do phpmyadmina). Powinny Ci się pojawić trzy najnowsze newsy i link czytaj więcej. Przeanalizujmy teraz ten kod: Na początku łączymy się z bazą i wybieramy bazę newsy oraz zaznaczamy 3 ostatnie rekordy w odwróconej kolejności układane według 'data' z tabeli newsy. Następnie je wyświetlamy(najpierw zapisuje wszystko do jednej zmiennej, a potem dopiero wyświetlam, powodem jest szybkość działania skryptu). W linku 'czytaj więcej' zmienna 'id' identyfikuje news. Zabierzmy się teraz za plik news.php. Odpowiada on za wyświetlenie treści całego newsa i otwiera się po kliknięciu linka 'czytaj więcej'. Otwórz wieć plik i wklep taki kod: <?php mysql_connect('localhost', 'nazwa_uzytkownika' , 'haslo_uzytkownika'); mysql_select_db("newsy"); $query = mysql_query("select * from newsy where id='$id'"); $rekord = mysql_fetch_array($query); $tekst = '<b><h3>'.$rekord[1].'</h3></b>'.$rekord[3].'<br/><br/>'.$rekord[4]; echo $tekst; ?> Spróbuj teraz kliknąć link 'czytaj więcej' - powinien pojawić się cały news. Tak jak ostatnio przeanalizujemy kod. Na początku tak samo łączymy się z bazą i wybieramy bazę danych. Następnie zaznaczamy rekord, którego 'id' jest takie samo jak tego newsa, którego link 'czytaj więcej' kliknęliśmy. Następnie zapisujemy tekst do zmiennej i wyświetlamy ją. Teraz otwórzmy plik dodaj.htm. Stworzymy w nim formularz, dzięki któremu będziemy mogli w łatwy sposób dodawać newsy. Wpisz więc w nim taki kod: <html> <head> <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2"> <title>Dodaj newsa</title> </head> <body> <h2>Dodawanie newsa:</h2> <form action="dodaj.php" method=post> tytuł: <input type="text" name="tytul"> <br/><br/>skrót: </br><textarea name="skrot" rows="7" cols="50"></textarea> <br/><br/>treść: </br><textarea name="tresc" rows="20" cols="50"></textarea> <br/><br/><input type="submit" value="Dodaj"></form> </body> </head> Jest to zwykły formularz w HTML'u i nie będę go wyjaśniał. Ważne jest tylko to, że właściwość 'name' w polach formularza to jest też nazwa zmiennej, która przechowuje wartość pola. W formularzu nie ma pól 'id' i 'data' ponieważ będą one uzupełniane automatycznie. Czas teraz na ostatni plik. Jest to skrypt obsługujący formularz dodaj.htm. Otwórz plik dodaj.php i wpisz kod: <?php mysql_connect('localhost', 'nazwa_uzytkownika' , 'haslo_uzytkownika'); mysql_select_db("newsy"); $query = mysql_query("insert into newsy values('', '$tytul', '$skrot', '$tresc', now() )"); echo 'Dziękujemy za dodanie newsa'; ?> Prosty skrypt. Na początku jak zawsze łączymy się z bazą i wybieramy odpowiednią bazę. W następnej linijce za pomocą polecenia 'insert' dodajemy do tabeli newsy odpowiednie wartości: pierwsze pole (id) zostawiamy puste, ponieważ tworząc bazę zaznaczyliśmy opcje auto_uzupełniania, w następnym polu wpisujemy wartość zmiennej 'tytul' z formularza, w następnym wartość 'skrot', a w następnym 'tresc', na samym końcu do ostatniego pola (data) wpisujemy wartość funkcji now() - czyli aktualny czas. Na końcu skryptu wyświetlamy tekst. GOTOWE;) Jak widzisz prosty system newsów jest wręcz banalny do napisania. Jak widzisz system jest naprawdę bardzo prosty i zachęcam Cię żebyś go trochę rozbudował, będzie to dobra lekcja PHP. |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
ok teraz jak dałeś artykuł to widzę : "W linku 'czytaj więcej' zmienna 'id' identyfikuje news."
czyli w tym kodzie na samej górze musisz dać : ponieważ tablicy $_GET używa się do odbierania zmiennych przesyłanych za pomocą url Ten post edytował tehaha 31.05.2010, 14:07:57 |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
dalej jest napisane że zmienna id niezidentyfikowana
czyli jak to całe ma być poprawnie? Ten post edytował jasiek65 31.05.2010, 14:17:12 |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
najlepiej tak:
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 09:19 |