Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z systemem newsów
jasiek65
post
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
  1. ini_set('display_errors' , 'On');



dodaj html:

  1. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  2.  
  3. <title>Dodaj newsa</title>
  4. </head>
  5. <h2>Dodawanie newsa:</h2>
  6. <form action="dodaj.php" method=post>
  7. tytuł: <input type="text" name="tytul">
  8. <br/><br/>skrót: </br><textarea name="skrot" rows="7" cols="50"></textarea>
  9. <br/><br/>treść: </br><textarea name="tresc" rows="20" cols="50"></textarea>
  10. <br/><br/><input type="submit" value="Dodaj"></form>
  11. </body>
  12. </head>


Dodaj php:
  1. <?php
  2. mysql_connect('localhost', 'nazwa_uzytkownika' , 'haslo_uzytkownika');
  3. mysql_select_db("newsy");
  4. $query = mysql_query("insert into newsy values('', '$tytul', '$skrot', '$tresc', now() )");
  5. echo 'Dziękujemy za dodanie newsa';
  6. ?>

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

  1. <?php
  2. mysql_connect('localhost', 'nazwa_uzytkownika' , 'haslo_uzytkownika');
  3. mysql_select_db("newsy");
  4. $query = mysql_query("select * from newsy where id='$id'");
  5. $rekord = mysql_fetch_array($query);
  6. $tekst = '<b><h3>'.$rekord[1].'</h3></b>'.$rekord[3].'<br/><br/>'.$rekord[4];
  7. echo $tekst;
  8. ?>


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jasiek65
post
Post #2





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 25.05.2010

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


od tego jest przecież
  1. $tekst = '<b><h3>'.$rekord[1].'</h3></b>'.$rekord[3].'<br/><br/>'.$rekord[4];


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.

Go to the top of the page
+Quote Post

Posty w temacie
- jasiek65   Problem z systemem newsów   30.05.2010, 16:24:43
- - tehaha   a z czego wywnioskowałeś, że to problem z połączen...   30.05.2010, 16:32:39
- - jasiek65   w dodaj.php zmieniłęm to ale np w news.php [PHP]...   30.05.2010, 17:23:49
- - tehaha   a skąd się bierze $id? najlepiej zwracaj na t...   30.05.2010, 17:33:14
- - jasiek65   wszystkie musze opisywać?   30.05.2010, 17:48:31
- - tehaha   tak, na żadnym normalnym serwerze to nie będzie dz...   30.05.2010, 17:52:21
- - jasiek65   czyli id czemu ma się równać ? $id =   30.05.2010, 20:58:21
- - tehaha   to zależy skąd ona pochodzi jeżeli przesyłasz ją p...   31.05.2010, 11:13:41
- - jasiek65   wyciągam ją z bazy sql   31.05.2010, 12:57:51
- - tehaha   jak z bazy wyciągasz jak nie ma wcześniej żadnego ...   31.05.2010, 13:11:19
- - jasiek65   id int(11) myślałem ze przeczytałeś artykuł ...   31.05.2010, 13:34:22
- - tehaha   chodzi o to, że w tutaj: [PHP] pobierz, plaintext ...   31.05.2010, 13:38:11
- - jasiek65   to jak ją zdefiniować ?   31.05.2010, 13:42:08
- - tehaha   a w jaki sposób przesyłasz ją do skryptu? a to zap...   31.05.2010, 13:46:29
- - jasiek65   KodNotice: Undefined variable: id in ...   31.05.2010, 13:52:13
- - tehaha   to może inaczej: co Ty właściwie chcesz zrobić tym...   31.05.2010, 13:55:42
- - jasiek65   od tego jest przecież [PHP] pobierz, plaintext $te...   31.05.2010, 14:04:55
- - tehaha   ok teraz jak dałeś artykuł to widzę : "W link...   31.05.2010, 14:05:16
- - jasiek65   dalej jest napisane że zmienna id niezidentyfikowa...   31.05.2010, 14:16:12
- - tehaha   najlepiej tak: [PHP] pobierz, plaintext <?phpin...   31.05.2010, 14:20:25
- - jasiek65   Pusto   31.05.2010, 14:26:25
- - tehaha   eh, bo to jest podstrona newsa, i zadziała jeśli w...   31.05.2010, 14:30:05
- - jasiek65   w start.php tam gdzie mam [PHP] pobierz, plaintex...   31.05.2010, 14:38:54
- - tehaha   a tak? [PHP] pobierz, plaintext <?phpini_set...   31.05.2010, 14:47:40
- - jasiek65   pusto   31.05.2010, 14:51:10
- - tehaha   pusto bo pewnie się z bazą nie połączyć,mysql_conn...   31.05.2010, 15:01:30
- - jasiek65   nie działa pusto a jak jest zero rekordów do bazy ...   31.05.2010, 18:00:26
- - tehaha   tak jak nie ma rekordów w bazie to zapytanie nicze...   31.05.2010, 18:17:15
- - jasiek65   ale dodaje i nic w czym tkwi bład?   31.05.2010, 18:21:26
- - tehaha   używając funkcji mysql_num_rows(), dowiesz się czy...   31.05.2010, 18:25:59
- - jasiek65   czyli już wiemy w czym tkwi błąd ale to co jest zł...   31.05.2010, 18:33:51


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: 12.10.2025 - 08:43