Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP] Newsy oparte na bazie
Forum PHP.pl > Forum > Przedszkole
Mefiuu
Witam. Chciałbym Was dzisiaj prosić o krótkie "naprowadzenie" na właściwy trop, nie o gotowca. Ewentualnie o "łopatologiczne" wytłumaczenie kwestii winksmiley.jpg
Chcę zrobić na swoją stronę skrypt newsów oparty na bazie danych. Musiałbym to zrobić wg. schematu, który sobie "umyślałem". Jeśli coś źle rozumuję to proszę poprawcie mnie.

1. Plik login.php gdzie logujemy się na konto admina.
2. Tam tylko proste menu, do wyboru Dodaj news | Edytuj news | Usuń news
3. Po kliknięciu na Dodaj news pojawia się pole tekstowe, miejsce na tytuł, treść, autora i datę.
4. Następnie te dane przesyłam metodą POST do pliku np. wyslij.php gdzie jest kod odpowiedzialny za wstawienie tego do bazy danych.
5. Includuję na index.php newsy z bazy danych.

Tę kwestię dość rozumiem. Gorzej jest z edycją. Jak to ma wyglądać?

1. Klikam Edytuj news i pojawiają mi się pola tekstowe, miejsce na tytuł, treść, datę i autora. Jak w to "wstawić" dane z MySQL? Czy do tego kodu w pole values muszę wstawić jakiś kod pobierający z bazy danych ? :
Kod
<input type="text" name="nazwa" [b]value="teskt"[/b] />

2. Następnie po wczytaniu, zredagowaniu klikam na "Edytuj" i za pomocą tego kodu (tylko zmodyfikowanego na moje potrzeby) edytować?:
Kod
UPDATE nazwa_tabeli SET nazwa_pola1=wartosc_pola1, nazwa_pola2=wartosc_pola2 [WHERE warunek]


Prosiłbym bardzo o pomoc, ewentualnie przydatne linki, do dobrych kursów PHP i MySQL, albo książek, które polecacie do nauki.Szukałem pomocy w różnych systemach newsów ale są one dla mnie zbyt "zawiłe" i niestety nie wiem jak rozgryźć tę edycję. Pozdrawiam.
kusiu
Twoja tabela z newsami wygląda miej więcej tak:

id_news | tytul | tresc | autor | data

Edytując poszczególnego newsa masz w url jego unikalny ID zapisany w bazie i zapisujesz go do hiddena.
I teraz klikajac na Edytuj wysylasz równiez ID edytowanego newsa metoda post.

zatem zapytanie sql wygladało by tak:

  1. mysql_query("update news set tytul='".$_POST['tytul']."', tresc='".$_POST['tresc']."', autor='".$_POST['autor']."' where id_news=".$_POST['id_news']);


Mefiuu
ale czy to co napisałeś, za pomocą update w mysql nie zapisze mi tego od razu w mysql? A jak te dane "wczytać" do pola input, aby poprawić np. jakąś literówkę ?
kusiu
Cytat(Mefiuu @ 2.01.2010, 19:23:28 ) *
ale czy to co napisałeś, za pomocą update w mysql nie zapisze mi tego od razu w mysql? A jak te dane "wczytać" do pola input, aby poprawić np. jakąś literówkę ?


Zapisze no ale o to chyba chodzi biggrin.gif

Wczytanie pól:

  1. $res = mysql_query("select tytul, tresc, autor from newsy where id_news=".$_GET['id_news']);
  2. $row = mysql_fetch_array($res);

  1. Tytuł: <input type="text" name="tytul" value="<?php echo $row['tytul']?>" />
  2. Treść: <textarea name="tresc"><?php echo $row['tresc']?></textarea>
  3. Autor: <input type="text" name="autor" value="<?php echo $row['autor']?>" />
Mefiuu
o jaaaa... teraz to wygląda o wiele jaśniej... Oczywiście pomógł. Mogę wiedzieć skąd się uczyłeś PHP i MySQL? możesz polecić coś ?

Wybacz jeszcze że zapytam, ale jak później to nadpisać? bo jeśli to wyślę "normalnie" to mi doda chyba kolejnego newsa prawda?
kusiu
Cytat(Mefiuu @ 2.01.2010, 19:39:05 ) *
o jaaaa... teraz to wygląda o wiele jaśniej... Oczywiście pomógł. Mogę wiedzieć skąd się uczyłeś PHP i MySQL? możesz polecić coś ?

Wybacz jeszcze że zapytam, ale jak później to nadpisać? bo jeśli to wyślę "normalnie" to mi doda chyba kolejnego newsa prawda?


Książka, www, staż winksmiley.jpg

Nie doda, bo update edytuje insert dodaje rekord. Przy edycji jest warunek WHERE id_news, tu wysylasz mu ID edytowanego newsa.
Mefiuu
Dziękuję serdecznie. Jeśli będę miał jakiś problem to napiszę jeszcze na pw do Pana jeśli można lub tutaj.

Hmmm... A jak zrobić listę rozwijaną, żeby wyświetliło mi te moje wszystkie newsy?
kusiu
Cytat(Mefiuu @ 2.01.2010, 19:49:07 ) *
Dziękuję serdecznie. Jeśli będę miał jakiś problem to napiszę jeszcze na pw do Pana jeśli można lub tutaj.

Hmmm... A jak zrobić listę rozwijaną, żeby wyświetliło mi te moje wszystkie newsy?


Nie jestem Pan smile.gif

To może wyświetlaj tytuły newsów na stronie, jako odnośnik

  1. $res = mysql_query("select id_news, tytul from news");
  2. while($row = mysql_fetch_array($res)){
  3. echo "<a href='?id_news=".$row['id_news']."'>".$row['tytul']."</a><br />";
  4. }
Mefiuu
Narazie próbuję odtworzyć sobie dodawanie newsów do bazy danych. Mam takie 2 pliki. dodaj.html i dodaj.php. Zapewne to jakaś literówka albo jakiś błąd ale nie mogę go znaleźć...

dodaj.html
Kod
<html>
<head>
<title> Dodaj newsa </title>
</head>
<body>
<form action="dodaj.php" method="post">


<p>Podaj tytuł newsa: <br />
<br />
<textarea name="tytul" cols="100" rows="1">Tu wpisz tytuł newsa</textarea>
</p>

<p>Podaj treść newsa: <br />
<br />
<textarea name="tresc" cols="100" rows="10">Tu wpisz treść swojego newsa, który pojawi się na stronie głównej</textarea>
</p>

<input type=submit value="Zatwierdź">
</form>
</body>
</html>


dodaj.php
Kod
<html>
<head>
<title> Zatwierdzenie </title>
</head>
<body>

<?

$tytul = $_POST['tytul'];
$tresc = $_POST['tresc'];
$autor = $_POST['autor'];
$data = date('Y-m-d');

$baza = "db******";

$tabela = "newsy";

$polaczenie = mysql_connect("mysql*.yoyo.pl", "db******", "mojetajnehaslo");

$wybierz = mysql_select_db($baza, $polaczenie);

$wstaw = "INSERT INTO $tabela VALUES(tytul, tresc, autor, data)";

$rezultat = mysql_query($wstaw, $polaczenie);

if ($rezultat) {
echo "<h2>Do tabeli zostały dodane następujące dane:</h2><br>
<b>Treść:</b>&nbsp;<i>$tresc</i><br>
<b>Autor:</b>&nbsp;<i>$autor</i><br>
<b>Data dodania:</b>&nbsp;<i>$data</i><br>";
}
else {
echo "<h2>Do tabeli nie dodano danych</h2>";
}

mysql_close($polaczenie);

?>

<a href="index.php">Zobacz newsa </a>

</body>
</html>


Proszę o pomoc winksmiley.jpg
melkorm
  1. $wstaw = "INSERT INTO $tabela VALUES(tytul, tresc, autor, data)";


To zapytanie jest błędne, jako wartości musisz dać zmienne otrzymane POST'em lub GET'em.

A na pewno to zapytanie generuje błąd smile.gif

P.S. Pamiętaj by zawsze opisać co NIE działa i czym się objawia owe nie działanie.

@kusiu,
... i nie dał gotowca winksmiley.jpg
kusiu
  1. $wstaw = "INSERT INTO $tabela VALUES('".$tytul."', '".$tresc."', '".$autor."', '".$data."')";


melkorm był szybszy biggrin.gif
Mefiuu
Hmmm... No tak, trzeba przecież brakuje tam zmiennych, fakt... Jednak po skopiowaniu Twojego kodu kusiu, dalej pokazuje komunikat: do tabeli nie dodano danych. Próbowałem pousuwać cudzysłowy, kropki i różne kombinacje ale nic nie pomogło... Chyba muszę się wziąć za jakiś kurs porządnie albo książkę kupić bo nic mi nie wychodzi...
melkorm
Zapraszam do przeczytania:
Lektura

Szczególnie dział o raportowaniu błędów, bo widzę ich parę winksmiley.jpg
kusiu
Cytat(Mefiuu @ 2.01.2010, 21:27:01 ) *
Hmmm... No tak, trzeba przecież brakuje tam zmiennych, fakt... Jednak po skopiowaniu Twojego kodu kusiu, dalej pokazuje komunikat: do tabeli nie dodano danych. Próbowałem pousuwać cudzysłowy, kropki i różne kombinacje ale nic nie pomogło... Chyba muszę się wziąć za jakiś kurs porządnie albo książkę kupić bo nic mi nie wychodzi...


zrób sobie echo ze zmiennej $wstaw i wyświetlone zapytanie wklej do phpmyadmina i uruchom. Zobacz tam jakie masz błędy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.