Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql] Dodawanie rekordów
bemol
post
Post #1





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


Mam taki pliczek:

add_ciekawostki.php
  1. <?php
  2. include('connection.php');
  3.  
  4. $autor = $_POST['autor'];
  5. $tresc = $_POST['tresc'];
  6.  
  7. $sql_conn = mysql_connect(SERWER, ADMIN, PASS)
  8. or die('Brak połšczenia z serwerem MySQL.');
  9. @mysql_select_db(DATEBASE) 
  10. or die('Błšd wyboru bazy danych.');
  11.  
  12. $add = "INSERT INTO `ciekawostki` (`id`, `data`, `autor`, `tresc`) VALUES ('', 'Now()', '$autor', '$tresc')";
  13. $query = mysql_query($add);
  14.  
  15. echo '
  16. <FORM action="show.php" method="POST">
  17. <TABLE>
  18. <TR>
  19. <TD>Autor:</TD>
  20. <TD><INPUT name="autor" maxlenght="30"></TD>
  21. </TR>
  22. <TR>
  23. <TD>Treść:</TD>
  24. <TD><TEXTAREA cols="30" rows="8" name="tresc"></TEXTAREA></TD>
  25. </TR>
  26. <TR>
  27. <TD>&nbsp;</TD>
  28. <TD><INPUT type="submit" value="Dodaj"></TD>
  29. </TR>
  30. </TABLE>
  31. </FORM>
  32. ';
  33.  
  34. ?>


Niestety, gdy sprawdzę baze danych wygląda to tak:
id-----data--------autor--------tresc---------ocena
4---0000-00-00----------------------------------0

Wiem że zrobiłem coś źle tylko nie wiem co :/


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
kresh
post
Post #2





Grupa: Zarejestrowani
Postów: 99
Pomógł: 2
Dołączył: 8.11.2005
Skąd: Kraków

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


napisałeś:
Mam taki pliczek: add_ciekawostki.php

a w formularzu dałeś:
  1. <FORM action="show.php" method="POST">


Więc nie ma prawa działać, bo dodawanie rekordu realizujesz w pliku add_ciekawostki.php
  1. <?php
  2. include('connection.php');
  3.  
  4. $autor = $_POST['autor'];
  5. $tresc = $_POST['tresc'];
  6.  
  7. $sql_conn = mysql_connect(SERWER, ADMIN, PASS)
  8. or die('Brak połšczenia z serwerem MySQL.');
  9. @mysql_select_db(DATEBASE) 
  10. or die('Błšd wyboru bazy danych.');
  11.  
  12. $add = "INSERT INTO `ciekawostki` (`id`, `data`, `autor`, `tresc`) VALUES ('', 'Now()', '$autor', '$tresc')";
  13. $query = mysql_query($add);
  14. ?>


A formularz wysyłasz do pliku show.php, więc albo zmień action w formularzu na add_ciekawostki.php albo przenieś realizację dodawania nowego rekordu do show.php.

I jeszcze jedna uwaga odnośnie zapytania do bazy.

  1. INSERT INTO `ciekawostki` (`id`, `data`, `autor`, `tresc`) VALUES ('', 'Now()', '$autor', '$tresc')


W tej postaci do bazy nie zapisze Ci się data. Usuń apostrofy które obejmują Now() i wszystko powinno chulać.

  1. INSERT INTO `ciekawostki` (`id`, `data`, `autor`, `tresc`) VALUES ('', Now(), '$autor', '$tresc')


--------------------
Programuj pod kątem interfejsu, nie implementacji
Gang of Four

michalbarys.pl
Go to the top of the page
+Quote Post
bemol
post
Post #3





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


Dzieki wszystko ok, a teraz mam taki problem. Jak zrobić oceny dla ciekawostek?

Mam taki plik:

show.php
  1. <?php
  2. $losowy = rand(1, 60);
  3.  
  4. $plik = file_get_contents("TXT/$losowy.txt");
  5.  
  6. echo $plik;
  7. echo "<br /><br /><br />";
  8. echo "<center>";
  9. echo "<table>";
  10. echo "<tr>";
  11. echo "<td align=center>Oceń ciekawostkę:</td>";
  12. echo "</tr>";
  13. echo "<tr>";
  14. echo "<td align=center> 1 | 2 | 3 | 4 | 5 </td>";
  15. echo "</tr>";
  16. echo "</table>";
  17. echo "</center>";
  18. ?>


W bazie danych mam stworzone pole `ocena`.

Jak to powiązać i jak zrobić, żeby ocena była średnią wszystkich ocen?
Czy muszę zrobić nową tabele w bazie danych, osobną dla ocen?


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
Sokal
post
Post #4





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


Możesz zrobić tak:
* pole suma ocen
* pole ilosc ocen

A później dzielić sume przez ilość i masz średnią arytmetyczną winksmiley.jpg

Albo zrobic inną tabelę i tam robić AVG()


--------------------
Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
Go to the top of the page
+Quote Post
bemol
post
Post #5





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


Teraz mój plik wygląda tak:

show.php
  1. <?php
  2. echo '<style type="text/css" media="all">@import "add_style.css";</style>';
  3.  
  4. $losowy = rand(1, 60);
  5.  
  6. $plik = file_get_contents("TXT/$losowy.txt");
  7.  
  8. echo $plik;
  9. echo "<br /><br /><br />";
  10. echo "<center>";
  11. echo "<table>";
  12. echo "<tr>";
  13. echo "<td align=center>Oceń ciekawostkę:</td>";
  14. echo "</tr>";
  15. echo "<tr>";
  16. echo "<td align=center><FORM action=show.php method=POST><button name=ocena type=submit>1</button><button name=ocena type=submit>2</button><button name=ocena type=submit>3</button><button name=ocena type=submit>4</button><button name=ocena type=submit>5</button></FORM></td>";
  17. echo "</tr>";
  18. echo "</table>";
  19. echo "</center>";
  20.  
  21. $ocena = $_POST['ocena'];
  22. echo $ocena;
  23. ?>


Jednak nie wyświetla mi nic ze zmiennej $ocena. Wiem, że jest coś źle w tym "formularzu". Prosze o pomoc.


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
=kokos=
post
Post #6





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 6.08.2006

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


zamiast
  1. <button name=ocena type=submit>1</button>
spróbuj może
  1. <input type="submit" name="ocena" value="1">
  2. <input type="submit" name="ocena" value="2">


--------------------
Początkujący
Go to the top of the page
+Quote Post
bemol
post
Post #7





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


Dzięki wielkie. Teraz kolejny kłopot: polskie znaki w bazie danych :/ Nie ma żadnych, jak to zmienić?


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
=kokos=
post
Post #8





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 6.08.2006

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


Tzn. w bazie nie masz polskich znaków? Czy jak wyświetlasz dane na stronie?


--------------------
Początkujący
Go to the top of the page
+Quote Post
bemol
post
Post #9





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


W bazie danych. Jest ustawione utf8_polish_ci jako metoda porównywania napisów, jeśli to ma jakieś znaczenie. Poza tym: System kodowania znaków dla MySQL: UTF-8 Unicode (utf8).


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
kresh
post
Post #10





Grupa: Zarejestrowani
Postów: 99
Pomógł: 2
Dołączył: 8.11.2005
Skąd: Kraków

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


  1. SET CHARACTER SET latin2;
  2. SET collation_connection = latin2_general_ci;


w samym headerze strony oczywiscie charset = iso-8859-2


--------------------
Programuj pod kątem interfejsu, nie implementacji
Gang of Four

michalbarys.pl
Go to the top of the page
+Quote Post
bemol
post
Post #11





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


Niestety nic to nie daje.


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
kresh
post
Post #12





Grupa: Zarejestrowani
Postów: 99
Pomógł: 2
Dołączył: 8.11.2005
Skąd: Kraków

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


Zapomniałem dodać, żebyś wywołał te zapytania w skrypcie zaraz po nawiązaniu połączenia z bazą danych.


--------------------
Programuj pod kątem interfejsu, nie implementacji
Gang of Four

michalbarys.pl
Go to the top of the page
+Quote Post
bemol
post
Post #13





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


Tak właśnie zrobiłem.
A oto część pliku, która nie obejmuje formularza:

add_ciekawostki.php
  1. <?php
  2. echo '<style type="text/css" media="all">@import "add_style.css";</style>';
  3. include('connection.php');
  4.  
  5. $autor = $_POST['autor'];
  6. $tresc = $_POST['tresc'];
  7.  
  8. if($autor and $tresc) {
  9. $sql_conn = mysql_connect(SERWER, ADMIN, PASS)
  10. or die('Brak połączenia z serwerem MySQL.');
  11. @mysql_select_db(DATEBASE) 
  12. or die('Błąd wyboru bazy danych.');
  13.  
  14. $add = "INSERT INTO `ciekawostki` (`id`, `data`, `autor`, `tresc`) VALUES ('', Now(), '$autor', '$tresc')";
  15. $query = mysql_query($add);
  16. $query = "SET CHARACTER SET latin2";
  17. mysql_query($query) or die(mysql_error());
  18. $query = "SET collation_connection = latin2_general_ci";
  19. mysql_query($query) or die(mysql_error());
  20.  
  21. if($add) echo "Ciekawostka została dodana.<br /><br />";
  22. else echo "Błąd, nie udało się dodać ciekawostki.<br />";
  23. ?>


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
kresh
post
Post #14





Grupa: Zarejestrowani
Postów: 99
Pomógł: 2
Dołączył: 8.11.2005
Skąd: Kraków

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


1. Zmień system porównań dla bazy i tabel na latin2_general_ci

Alternatywnie
1. Usuń te dwa zapytania SQL które podałem
2. Ustaw charset strony na utf-8

Ten post edytował kresh 24.04.2007, 17:59:04


--------------------
Programuj pod kątem interfejsu, nie implementacji
Gang of Four

michalbarys.pl
Go to the top of the page
+Quote Post
bemol
post
Post #15





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


Zrobiłem i to i to i nic :/ Trudno...


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
kresh
post
Post #16





Grupa: Zarejestrowani
Postów: 99
Pomógł: 2
Dołączył: 8.11.2005
Skąd: Kraków

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


1. W phpMyAdmin ustaw:
Metoda porównywania napisów dla bazy: utf8_general_ci
Metoda porównywania napisów dla tabeli: utf8_general_ci

2. W <head> strony daj:
  1. <meta http-equiv="content-type" content="text/html;charset=utf-8" />


3. Wreszcie w skrypcie:
  1. <?php
  2. mysql_connect( ... );
  3. mysql_select_db( ... );
  4. mysql_query('SET CHARSET utf8');
  5. ?>


Tym razem przetestowałem sam i musi działać winksmiley.jpg


--------------------
Programuj pod kątem interfejsu, nie implementacji
Gang of Four

michalbarys.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 10:38