Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Nie mogę drukować przesyłanych z formularza zmiennych
Testosteron
post
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 2
Dołączył: 15.09.2011

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


  1. <?php
  2.  
  3.  
  4. $ISBN = $_POST['ISBN'];
  5. $autor =$_POST['autor'];
  6. $tytul = $_POST['tytul'];
  7. $cena = $_POST['cena'];
  8.  
  9.  
  10. If (!$ISBN || !$autor || !$tytul || !$cena)
  11. {
  12. echo 'Wprowadz poprawne dane';
  13. }
  14.  
  15. $db = mysql_connect('localhost', 'root', 'krasnal', 'ksiazki')
  16. If (!$db)
  17. {
  18. echo 'Nie mozna polaczyc z baza danych';
  19. }
  20. else
  21. {
  22. $zapytanie = "INSERT into ksiazki values ('" . $ISBN . ", '" . $autor . ", '" . $tytul . ", '" . $cena . ")";
  23. echo $zapytanie;
  24. }
  25. ?>

No właśnie. W zapisie w zmiennej $zapytanie łatwo się pomylić, więc postanowiłem wydrukować zawartość. Niestety, nie jest drukowana. Żeby tego było mało, jeżeli zaraz pod deklaracją zmiennych wpiszę echo $autor, czy coś w tym stylu to zmienna także nie jest drukowana. Jeżeli natomiast usunę cały kod znajdujący się pod tymi deklaracjami do zmienne drukowane są normalnie.

Dlaczego tak się dzieje?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
gorden
post
Post #2





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


po pierwsze, nie !$db, tylko die
po drugie, zapomniałeś chyba o mysql_query
Go to the top of the page
+Quote Post
Testosteron
post
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 2
Dołączył: 15.09.2011

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


Nie zapomniałem, tylko (tak jak pisałem w poście) chcę sobie najpierw wydrukować całe zapytanie, żeby wykryć ewentualne błędy. A dlaczego ten zapisc !$db jest zły?

Ten post edytował Testosteron 24.11.2011, 19:15:18
Go to the top of the page
+Quote Post
aachi
post
Post #4





Grupa: Zarejestrowani
Postów: 54
Pomógł: 12
Dołączył: 4.08.2007

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


Hejka.
Prawidłowo powinieneś chyba użyć słowa "wyświetlać", nie "drukować"...

Jeśli chodzi o twój problem, to skrypt wywala się w połowie, a ty nie włączyłeś wyświetlania błędów. Dlatego skrypt nie dochodzi do echo $zapytanie. Na końcu linii 16 zapomniałeś dodać średnika. Popraw i sprawdź ponownie.

Wyświetlanie wszystkich błędów włącza się wpisując na początku:

  1. ini_set('display_errors', 1);


pozdrawiam

[EDIT] Zapomniałem dodać, że w zapytaniu nie zamykasz apostrofów po zmiennych w zapytaniu, ale jak już je wyświetlisz to pewnie sam się zorientujesz.

Ten post edytował aachi 24.11.2011, 20:54:07
Go to the top of the page
+Quote Post
Testosteron
post
Post #5





Grupa: Zarejestrowani
Postów: 113
Pomógł: 2
Dołączył: 15.09.2011

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


OK. Obsługą błędów zrobię na samym końcu. Na początek sam skrypt dodawania do bazy (bo z tego co widzę najwięcej problemów jest z obsługą błędów). Może wrzucę to co wymodziłem do tej pory:
  1. <?php
  2.  
  3.  
  4. $ISBN = htmlentities($_POST['ISBN']);
  5. $autor = htmlentities($_POST['autor']);
  6. $tytul = htmlentities(;$_POST['tytul']);
  7. $cena = htmlentities($_POST['cena']);
  8.  
  9. If (!$ISBN || !$autor || !$tytul || !$cena)
  10. {
  11. echo 'Wprowadz poprawne dane';
  12. }
  13.  
  14. mysql_connect('localhost', 'root', 'krasnal', 'ksiazki');
  15.  
  16. $zapytanie = "INSERT into ksiazki values ('" . $ISBN . "', '" . $autor . "', '" . $tytul . "', '" . $cena . "')";
  17. $nowe_zapytanie = mysql_query($zapytanie);
  18. $sprawdz = mysql_affected_rows($zapytanie);
  19. If ($sprawdz)
  20. {
  21. echo 'Dodano do bazy';
  22. }
  23.  
  24.  
  25. ?>

Dalej nie działa (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Obsługą błędów zrobię na samym końcu
(IMG:style_emoticons/default/blink.gif)
WYŚWIETLANIE błędów to nie żadna OBSŁUGA a WYŚWIETLANIE.

Wyświetlanie to pierwsza rzecz jaką musisz zrobić przed rozpoczęciem pisania. Nie widząc jakie masz błędy to sobie możesz conajwyżej gwiazdy nocą pooglądać a nie programować.

Dostajesz PARSE ERRORY przez to nic ci się nie wyświetla. Więc marsz do pliku php.ini i włącz tam wyświetlanie wszystkich błędów. I masz to zrobić w php.ini gdyż PARSE ERRORY będą widoczne tylko wtedy, gdy właśnie tam to ustawisz.
Go to the top of the page
+Quote Post
Testosteron
post
Post #7





Grupa: Zarejestrowani
Postów: 113
Pomógł: 2
Dołączył: 15.09.2011

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


Zrobiłem tak jak pisałeś. Jeden błąd był przy deklaracjach (literówka), dalej był problem z jakim ś argumentem w mysql_affected_rows. Wywaliłem to, ale skrypt dalej nie działa a żaden błąd nie jest wyświetlany pomimo modyfikacji php.ini.
  1. <?php
  2.  
  3.  
  4. $ISBN = htmlentities($_POST['ISBN']);
  5. $autor = htmlentities($_POST['autor']);
  6. $tytul = htmlentities($_POST['tytul']);
  7. $cena = htmlentities($_POST['cena']);
  8.  
  9. If (!$ISBN || !$autor || !$tytul || !$cena)
  10. {
  11. echo 'Wprowadz poprawne dane';
  12. }
  13.  
  14. mysql_connect('localhost', 'root', 'krasnal', 'ksiazki');
  15.  
  16. $zapytanie = "INSERT into ksiazki values ('" . $ISBN . "', '" . $autor . "', '" . $tytul . "', '" . $cena . "')";
  17. $nowe_zapytanie = mysql_query($zapytanie);
  18.  
  19. If (!$nowe_zapytanie)
  20. {
  21. echo 'Nie mozna dodac produktu do bazy';
  22. }
  23. else
  24. {
  25. echo 'Produkt zostal dodany do bazy';
  26. }
  27.  
  28.  
  29. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Wywaliłem to, ale skrypt dalej nie działa
Kurcze.... a czymże teraz objawia sie to nie działanie? No napisz a nie trzeba cię ciągąć za słówka.

Cytat
@nospor, masz 20k postów - mieszkasz na forum? <-:
A ty widzę prosisz się o 10% za bezsensowen nabijanie postów. Masz do mnie sprawę to pisz na PW albo w temacie OFFTOPIC a nie śmiecisz w normalnym wątku na forum (IMG:style_emoticons/default/tongue.gif)

Cytat
dalej był problem z jakim ś argumentem w mysql_affected_rows. Wywaliłem to
Się nie wywala a sie poprawia. Błąd ten oznaczał, że masz błąd zapytania. Jak wyświetlać pełne błędy zapytania masz napisane tu:
Temat: Jak poprawnie zada pytanie
Masz tam też masę innych cennych wskazówek. Z racji, że jesteś bardzo początkujący to się z nimi zapoznaj
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post
Testosteron
post
Post #9





Grupa: Zarejestrowani
Postów: 113
Pomógł: 2
Dołączył: 15.09.2011

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


Mówiąc w skrócie objawia się tym, że wpis nie jest dodawany do bazy danych. Dodałem na początku skryptu:
  1. ini_set('display_errors','1');

Żadne błędy mi nie wyskakują. Dodałem instrukcję warunkową, którą widać na poniższym przykładzie i pojawia się napis, że produkt nie mógł zostać dodany do bazy.
  1. <?php
  2. ini_set('display_errors','1');
  3.  
  4. $ISBN = htmlentities($_POST['ISBN']);
  5. $autor = htmlentities($_POST['autor']);
  6. $tytul = htmlentities($_POST['tytul']);
  7. $cena = htmlentities($_POST['cena']);
  8.  
  9. If (!$ISBN || !$autor || !$tytul || !$cena)
  10. {
  11. echo 'Wprowadz poprawne dane';
  12. }
  13.  
  14. mysql_connect('localhost', 'root', 'krasnal', 'ksiazki');
  15.  
  16. $zapytanie = "INSERT into ksiazki values ('" . $ISBN . "', '" . $autor . "', '" . $tytul . "', '" . $cena . "')";
  17. $nowe_zapytanie = mysql_query($zapytanie);
  18.  
  19. If (!$nowe_zapytanie)
  20. {
  21. echo 'Nie mozna dodac produktu do bazy';
  22. }
  23. else
  24. {
  25. echo 'Produkt zostal dodany do bazy';
  26. }
  27.  
  28.  
  29. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zgodnie z tematem, do którego cię odesłałem, miałeś dodać mysql_error()! czemu skupiłeś się tylko na początku tematu? Temat to całość a nie pierwszy punkt.
Go to the top of the page
+Quote Post
Testosteron
post
Post #11





Grupa: Zarejestrowani
Postów: 113
Pomógł: 2
Dołączył: 15.09.2011

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


OK. Problem rozwiązany. Okazało się, że baza nie została wybrana. W książce widziałem taki zapis, jaki zastosowałem w przykładzie. Teraz trochę to zmieniłem:
  1. mysql_pconnect('localhost', 'root', 'krasnal');
  2. mysql_select_db('ksiazki');

I wszystko działa bez zarzutu. Dlaczego więc był problem z poprzednim zapisem?

PS. Dzięki za pomoc.

Ten post edytował Testosteron 25.11.2011, 12:55:36
Go to the top of the page
+Quote Post
aachi
post
Post #12





Grupa: Zarejestrowani
Postów: 54
Pomógł: 12
Dołączył: 4.08.2007

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


Poprzednio problem był taki, że mysql_connect nie pobiera nazwy bazy jako czwarty parametr. Wystarczyło zerknąć do manulala php. http://www.php.net/manual/pl/function.mysql-connect.php
takie parametry co ty podałeś pobiera mysqli_connect (taka nowsza wersja biblioteki do obsługi mysql w php).

Obecnie raczej nie masz potrzeby korzystać z mysql_pconnect (chodzi o tą literkę "p" w nazwie funkcji).

Tak sobie myślę, że powinieneś zmienić książkę i kursy z których się uczysz na coś bardziej aktualnego.
Go to the top of the page
+Quote Post
Testosteron
post
Post #13





Grupa: Zarejestrowani
Postów: 113
Pomógł: 2
Dołączył: 15.09.2011

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


Akurat to pconnect wziąłem z video kursu a nie z książki. Jeżeli chodzi o książkę do korzystam z PHP i MySQL Vademecum Profesjonalisty. Książka jest dobra, ale z kolei obiektowość została bardzo źle przedstawiona. Niby są przykłady tworzenia obiektów, klas, itp. Zaraz jest przykład tworzenia całej strony, tylko efekt nie jest wyświetlany. W jakiej książce programowanie obiektowe zostało dobrze wyjaśnione?
Go to the top of the page
+Quote Post
aachi
post
Post #14





Grupa: Zarejestrowani
Postów: 54
Pomógł: 12
Dołączył: 4.08.2007

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


Jakiekolwiek materiały w których używana jest biblioteka mysql (a nie PDO, lub mysqli) są przestarzałe. I dobrze Ci radzę poszukaj nowszych.
Go to the top of the page
+Quote Post
Testosteron
post
Post #15





Grupa: Zarejestrowani
Postów: 113
Pomógł: 2
Dołączył: 15.09.2011

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


W moim Cademevum jest używane MySQL, ale mnie chodzi o programowanie obiektowe. W tej mojej ten aspekt jest beznadziejnie wytłumaczony
Go to the top of the page
+Quote Post

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: 23.08.2025 - 18:08