Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Newsy oparte na bazie danych
Forum PHP.pl > Forum > Przedszkole
Mefiuu
Witam. Niedawno próbowałem stworzyć sobie skrypt newsów oparty na plikach tekstowych ale doszedłem do wniosku że "pomęczę się" z bazami danych. Poczytałem trochę i zrobiłem coś takiego:


dodaj.html

Kod
<html>
<head>
<title>Dodawanie danych</title>
</head>

<body>
<h2>Dodawanie newsów</h2>

<form action="polaczenie.php" method="post">
Treść:<br>
<input type=text name="tresc" size=300><br>
Autor:<br>
<input type=text name="autor" size=15><br>
Data dodania <b>rrrr-mm-dd</b>:<br>
<input type=text name="data" size=30><br><br>
<input type=submit value="dodaj dane"><br>
</form>

</body>

</html>




a następnie
polaczenie.php

Kod
<html>
<head>
<title> Baza danych </title>
</head>

<body>

<?


$baza = "db859***";

$tabela = "newsy";

$polaczenie = mysql_connect("mysql2.yoyo.pl", "db859***", "********");

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

$wstaw = "INSERT INTO $tabela VALUES (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>";
}



?>

</body>
</html>




I po wpisaniu jakichś danych pokazuje mi komunikat że dodano do bazy, jednak wyświetla:

Treść:
Autor:
Data:

I nie pokazuje co takiego wstawiło, po czym w bazie także nic nie ma. Jak to zmienić?
Z góry dziękuje i pozdrawiam.
slawny
Masz złe zapytanie do bazy. Bez $ przy zmiennych, pododawaj i powinny byc ok. No i idbierz najpierw te zmienne z formularza
melkorm
o_O.

@slawny, zapytanie jest złe, ale nie z powodu tego iż nazwa tabeli jest pod postacią zmiennej z `$`, ale zapewne dlatego że jest tam ustawiony klucz i nie zgadzają się parametry.

zastosuj może konstrukcję w postaci :
  1. INSERT INTO $tabela SET `nazwa_kolumny` = 'wartość' , `nazwa_kolumny2` = 'wartość2', ... ;


lub daj jako 1 parametr NULL'a, a jeżeli to nie pomoże dorzuć raportowanie błędów mysql'a i pokaż jakim komunikate mrzucił winksmiley.jpg

edit:
oczywiście zgadzam się co do odbioru danych z formularza, najlepiej to polecam jakikolwiek kurs php+mysql ... których na forum (linków) jest multum a że mam dzisiaj lenia to będziesz musiał sam sobie ich poszukać :]

... a zapewniam Ciebei że tam znajdziesz wszelkie nurtujące Ciebie pytanka smile.gif
Mefiuu
Wstawiłem coś takiego :

$wstaw = "INSERT INTO $tabela SET `tresc` = '$tresc' , `autor` = '$autor', `data` = '$data' ";

ale też jednak nie działa nadal. Cóż, będę musiał poszukać jakiegoś kursu, bo coś nie idzie za dobrze ... :/ nie bardzo nawet rozumiem o czym mówicie...
mszm
Spróbuj:

  1. INSERT INTO $tabela (`tresc`,`autor`,`data`)
  2. VALUES ($tresc,$autor,$data);


Mieszasz insert i update.
Wicepsik
  1. <title>Dodawanie danych</title>
  2. </head>
  3.  
  4. <h2>Dodawanie newsów</h2>
  5.  
  6. <form action="polaczenie.php" method="post">
  7. Treść:<br>
  8. <input type=text name="tresc" size=300><br>
  9. Autor:<br>
  10. <input type=text name="autor" size=15><br>
  11. <input type=submit value="dodaj dane"><br>
  12. </form>
  13.  
  14. </body>
  15.  
  16. </html>


  1. <html>
  2. <head>
  3. <title> Baza danych </title>
  4. </head>
  5.  
  6. <body>
  7.  
  8. <?
  9.  
  10. $tresc = $_POST['tresc'];
  11. $autor = $_POST['autor'];
  12. $data = date('Y-m-d');
  13.  
  14.  
  15. $baza = "db859***";
  16.  
  17. $polaczenie = mysql_connect("mysql2.yoyo.pl", "db859***", "********");
  18.  
  19. $wybierz = mysql_select_db($baza, $polaczenie);
  20.  
  21. $wstaw = 'INSERT INTO `newsy` VALUES ("'.$tresc.'", "'.$autor.'", "'.$data.'")';
  22.  
  23. $rezultat = mysql_query($wstaw);
  24.  
  25. if ($rezultat) {
  26. echo '<h2>Do tabeli zostały dodane następujące dane:</h2><br>
  27. <b>Treść:</b> <i>'.$tresc.'</i><br>
  28. <b>Autor:</b> <i>'.$autor.'</i><br>
  29. <b>Data dodania:</b> <i>'.$data.'</i><br>';
  30. }
  31. else {
  32. echo "<h2>Do tabeli nie dodano danych</h2>";
  33. }
  34.  
  35.  
  36.  
  37. ?>
  38.  
  39. </body>
  40. </html>

poczytaj http://pl2.php.net/manual/pl/function.date.php


Wszyscy gadacie o tym problemie a on nawet nie dodał do zmiennej danych z formularza
Mefiuu
@Wicepsik : rzeczywiście, pokazuje że dodało dane.

Teraz chciałbym na stronie index.php wczytać te dane. Przeczytałem coś z kursu i posklejałem ale znów nie wyszło... Proszę o wyrozumiałość:

Kod
<html>
<head>
<title> Główna </title>
</head>

<body>

<?

$baza = "db85****";

$tabela = "newsy";

$polaczenie = mysql_connect("mysql2.yoyo.pl", "db85****", "********");

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

$pobierz = "SELECT `tresc`,`autor`,`data` FROM `news` ";

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

if ($rezultat) {
echo "<h2>Najnowszy news:</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>Brak newsów</h2>";
}

?>



</body>
</html>



W sumie to tylko pozmieniałem dane i jest źle. A gdzie jest to tak dobrze wytłumaczone ?
tharos
  1. <?php
  2. $rezultat = mysql_query($pobierz);
  3.  
  4. if ($rezultat) {
  5. $rw = mysql_fetch_assoc($rezultat);
  6. echo "<h2>Najnowszy news:</h2><br>
  7. <b>Treść:</b>&nbsp;<i>$rw['tresc']</i><br>
  8. <b>Autor:</b>&nbsp;<i>$rw['autor']</i><br>
  9. <b>Data dodania:</b>&nbsp;<i>$rw['data']</i><br>";
  10. }
  11. else {
  12. echo "<h2>Brak newsów</h2>";
  13. }
  14. ?>
Mefiuu
Dziękuje wszytkim, już wiem jak to zrobić. teraz tylko pomodeluję i będzie smile.gif
Wicepsik
Gdzie znalazłeś że w mysql_query dodaje się połączenie z bazą?
Maxik
@Wicepsik:
mysql_query" title="Zobacz w manualu PHP" target="_manual drugi parametr jest opcjonalny
Mefiuu
Wszystko działa perfekcyjnie, dziękuję wszystkim za pomoc. Mam tylko pytanie. Jak ustalić hierarchię? Tzn. Aby najnowszy news był na początku ?
phpion
Poczytaj o ORDER BY w MySQL.
Mefiuu
Jesteś genialny, dziękuję smile.gif

Przepraszam za post pod postem ale chciałbym jeszcze prosić Was forumowicze o pomoc. Mam ten skrypcik, całkiem dobrze działa. Zrobiłem tak, aby newsy pokazywały się w tabelce. Dodałem kod:

Kod
<html>
<head>
<title> Główna </title>
</head>

<body>

<?

$baza = "db859223";

$tabela = "newsy";

$polaczenie = mysql_connect("mysql2.yoyo.pl", "db859223", "2qu0m93i");

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


$zapytanie = "SELECT `tresc`,`autor`,`data` FROM `newsy` ORDER BY `data` DESC";
$idzapytania = mysql_query($zapytanie);


echo '<table border="1">';
while ($wiersz = mysql_fetch_row($idzapytania))
{
  echo '<tr><td>';
  echo '<center>';
  echo  $wiersz[0];
  echo '</center>';
  echo '</td></tr>';
  echo '<tr><td>';
  echo '<p align="left">';
  echo 'Dodał : &nbsp;&nbsp;&nbsp;';
  echo  $wiersz[1];
  echo '</p>';
  echo '</td>';
  echo '<td>';
  echo '<p align="right">';
  echo 'Data : &nbsp;&nbsp;&nbsp;';
  echo $wiersz[2];
  echo '</p>';
  echo '</td></tr>';
}
echo '<table>';
  echo '<br />';
  echo '<br />';



?>



</body>
</html>


Wszystko jest tak jak chciałem poza tym, aby jeden news miał swoją tabelkę, bylo np. 20px przerwy i kolejny żeby miał swoją.
mszm
Kod
while ($wiersz = mysql_fetch_row($idzapytania))
     {
     echo '<table border="1">';
      echo '<tr><td>';
      echo '<center>';
      echo  $wiersz[0];
      echo '</center>';
      echo '</td></tr>';
      echo '<tr><td>';
      echo '<p align="left">';
      echo 'Dodał : &nbsp;&nbsp;&nbsp;';
      echo  $wiersz[1];
      echo '</p>';
      echo '</td>';
      echo '<td>';
      echo '<p align="right">';
      echo 'Data : &nbsp;&nbsp;&nbsp;';
      echo $wiersz[2];
      echo '</p>';
      echo '</td></tr>';
      echo '<table>';
      echo '<br />'
     }
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-2024 Invision Power Services, Inc.