Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Łączenie z bazą danych i wyświetlanie danych.
Forum PHP.pl > Forum > Przedszkole
rikoooo1234
Witam. Proszę was o pomoc. Otóż orzełkiem z przedmiotów informatycznych nie jestem, a chcę już do tej 4 klasy zdać i skończyć szkołę średnią do końca. Otrzymaliśmy zadanie, gdzie mamy stworzyć aplikację internetową Budżet domowy. Chodzi o to, że mają się tam znaleźć koszty rachunków(prąd, woda, jedzenie), statystyki domowników(ile kto wydaje pieniędzy) i statystyki ogólne, ile pieniędzy schodzi na to wszystko. W bazie w phpmyadmin wpisane w tabele wartości mają się po prostu wyświetlać w wybranych miejscach. Próbowałem oglądać poradniki w internecie, cokolwiek ale jak krew w piach. Skrypty na pewno nie są dla mnie i nie chce się tym zajmować. Ogarnąłem sobie to wszystko mniej więcej w html i cssie, bo to akurat dużym problemem nie jest. Jednak PHP i bazy danych to dla mnie zupełne science fiction. Prosiłbym o jakieś wskazówki lub gotowe skrypty, jeśli takie istnieją, bo szczerze mówiąc nawet nie wiem od czego zacząć w tej kwestii i w jakiej kolejności to robić. Tutaj podsyłam link z serwera z kodem w html i css. Z tego też kuleje, no ale grunt, że się staram:

http://37.8.214.76/~d14.meczynski.adam/rze...udzet%20domowy/
nospor
Pozwol, ze zapytam, bo nie ogarniam, ale co ty robiles na lekcjach informatyki, gdzie zapewne wszystko to bylo omawiane?

Generalnie prac domowych nie odrabiamy, ale ze cos tam zrobiles, i prosisz o pomoc a nie gotowca, to temat zostaje otwarty.
Jedyne co zrobie to przeniose do wlasciwego dzialu
rikoooo1234
Sorry, ale czego w szkole się nauczysz? Nie wiem, jak jest w innych szkołach, ale u nas wygląda to tak, że Pan coś niby tłumaczy, ale tak tłumaczy, że każdy gówno za przeproszeniem rozumie. Pisze skrypt sam, wyświetla na tablicy i pod koniec lekcji każdy po prostu przepisuje. W szkole mogę się założyć, że ciężko z nauczeniem się czegoś. Jak już to jakieś ewentualnie dodatkowe kursy, czy coś w tym stylu. U nas w klasie jest tylko 1 gościu, co ogarnia to wszysko, no ale widać że się tym fascynuje. To zupełnie nie moja broszka. Jeśli informatyka, to na pewno inna specjalizacja. Proszę was tylko o pomoc. Od czego zacząć, jak to w ogóle zrobić. Moim założeniem jest po prostu już dokończenie tej szkoły i tyle, no bo teraz nie opłaca mi się z tego wszystkiego rezygnować. Myślę, że to zrozumiecie.
leonpro778
Rozumieć to myślę, że każdy zrozumie. Nie napisałeś tylko na jakiej bazie danych operujecie. Ponieważ jest to szkoła to nie zakładam żebyście korzystali z PDO smile.gif Zakładam, że dalej korzystacie z MySQL:


  1. <?php
  2. $sql = mysql_connect('host', 'login', 'haslo');
  3. $query = mysql_query("SELECT woda, zywnosc, prad FROM liczniki WHERE id_rodzina='1'");
  4. $result = mysql_fetch_assoc($query);
  5. $woda = $result['woda'];
  6. $zywnosc = $result['zywnosc'];
  7. $prad = $result['prad'];
  8. ?>


Pisane z pamięci (po staremu) i z pewnymi założeniami bowiem nie znam struktury tabeli.
rikoooo1234
Aha i ten podany skrypt, to jest połączenie z bazą danych i wyciągnięcie z niej wartości? Pozniej po prostu wyświetlam sobie dane wpisując po prostu echo jakaś zmienna?
leonpro778
Dokładnie
rikoooo1234
Pojawia się coś takiego:

http://37.8.214.76/~d14.meczynski.adam/rze...mowy/order1.php

kod wygląda tak:
  1. <?php
  2. $sql = mysql_connect('localhost', 'd14_2f2732', 'stress123', 'd14_meczynski_adam');
  3. $query = mysql_query("SELECT woda FROM liczniki WHERE miesiac='styczen'");
  4. $result = mysql_fetch_assoc($query);
  5. $woda = $result['woda'];
  6. $zywnosc = $result['zywnosc'];
  7. $prad = $result['prad'];
  8. ?>
  9.  
  10. <?php
  11.  
  12. echo "<h1>$woda</h1>";
  13.  
  14. ?>
  15. </div>
  16.  


Co tu może być nie tak?



Dobra przemieniłem troche kod, który jest innym sposobem na łączenie i zadziałało, ale mam teraz kolejny problem, bo zmienna $woda nie wyświetla liczby, którą ma wyświetlać z tabeli, w której już ta liczba jest.
  1.  
  2. <?php
  3.  
  4. function lacz_db()
  5. {
  6. $wynik = @new mysqli('localhost', 'd14_2f2732', 'stress123', 'd14_meczynski_adam');
  7. }
  8. function SelectWoda()
  9. {
  10. $lacz = lacz_db();
  11. $d = '';
  12. $wynik = $lacz ->query('select woda from liczniki where miesiac="styczen"');
  13. $result = mysql_fetch_assoc($wynik);
  14.  
  15.  
  16. $woda = $result ['woda'];
  17. }
  18. ?>
  19. <?php
  20.  
  21. echo '<h1>$woda</h1>';
  22.  
  23. ?>
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  

Niree
Sprawdź:
  1. <?php
  2. $db = @new mysqli('localhost', 'd14_2f2732', 'stress123', 'd14_meczynski_adam');
  3.  
  4. function SelectWoda($miesiac)
  5. {
  6. global $db;
  7. $wynik = $db->query('select `woda`,`miesiac` from `liczniki` where `miesiac`="'.$miesiac.'"');
  8. $result = mysql_fetch_assoc($wynik);
  9.  
  10. return $woda = $result['woda'];
  11. }
  12.  
  13. echo '<h1>'.SelectWoda('styczen').'</h1>';
  14. ?>
rikoooo1234
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, object given in /home/d14.meczynski.adam/public_html/rzeczy/php/budzet/budzet domowy/order1.php on line 106
Styczeń .SelectWoda('styczen'). PLN
Luty PLN
Marzec PLN
Kwiecień PLN
Maj PLN


teraz to już w ogóle błąd wywala ;/ Ciągle jak jest błąd to coś z tym fetch_assoc ;/

  1. <?php
  2.  
  3. $db = @new mysqli('localhost', 'd14_2f2732', 'stress123', 'd14_meczynski_adam');
  4.  
  5. function SelectWoda($miesiac)
  6. {
  7. global $db;
  8. $wynik = $db->query('select `woda`,`miesiac` from `liczniki` where `miesiac`="'.$miesiac.'"');
  9. $result = mysql_fetch_assoc($wynik);
  10.  
  11. return $woda = $result['woda'];
  12. }
  13.  
  14. echo '<h1>'.SelectWoda('styczen').'</h1>';
  15. ?>
  16.  
  17. <?php
  18. echo '<table border="1" cellpadding="10" cellspacing="0">';
  19. echo"<tr>
  20. <td><b>Styczeń</b></td><td>.SelectWoda('styczen'). PLN</td>
  21. </tr>
  22. <tr>
  23. <td><b>Luty</b></td><td> PLN</td>
  24. </tr>
  25. <tr>
  26. <td><b>Marzec</b></td><td> PLN</td>
  27. </tr>
  28. <tr>
  29. <td><b>Kwiecień</b></td><td> PLN</td>
  30. </tr>
  31. <tr>
  32. <td><b>Maj</b></td><td> PLN</td>
  33. </tr>
  34. </table>";
  35. ?>





Notice: Undefined variable: woda in /home/d14.meczynski.adam/public_html/rzeczy/php/budzet/budzet domowy/order1.php on line 131
  1. <?php
  2.  
  3. $db = @new mysqli('localhost', 'd14_2f2732', 'stress123', 'd14_meczynski_adam');
  4.  
  5. function SelectWoda($miesiac)
  6. {
  7. global $db;
  8. $wynik = $db->query('select `woda`,`miesiac` from `liczniki` where `miesiac`="'.$miesiac.'"');
  9. $result = mysql_fetch_assoc($wynik);
  10.  
  11. return $woda = $result['woda'];
  12. }
  13.  
  14. echo '<h1>'.SelectWoda('styczen').'</h1>';
  15. ?>
  16.  
  17. <?php
  18. echo '<table border="1" cellpadding="10" cellspacing="0">';
  19. echo"<tr>
  20. <td><b>Styczeń</b></td><td> $woda PLN</td>
  21. </tr>
  22. <tr>
  23. <td><b>Luty</b></td><td> PLN</td>
  24. </tr>
  25. <tr>
  26. <td><b>Marzec</b></td><td> PLN</td>
  27. </tr>
  28. <tr>
  29. <td><b>Kwiecień</b></td><td> PLN</td>
  30. </tr>
  31. <tr>
  32. <td><b>Maj</b></td><td> PLN</td>
  33. </tr>
  34. </table>";
  35. ?>


patwoj98
Spróbuj zamienić linijkę 10 na:
  1. $result = mysqli_fetch_assoc($wynik);


lub jeśli nie pomoże to:

  1. $result = $wynik->fetch_assoc();
rikoooo1234
Fatal error
patwoj98
Cytat(rikoooo1234 @ 4.06.2017, 17:53:26 ) *
Fatal error


A można Cię prosić, abyś podał konkretnie co tam się znajduje? Bo Fatal Error ma to do siebie, że pokazuje co jest nie tak.
rikoooo1234
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /home/d14.meczynski.adam/public_html/rzeczy/php/budzet/budzet domowy/order1.php on line 106

Notice: Undefined variable: woda in /home/d14.meczynski.adam/public_html/rzeczy/php/budzet/budzet domowy/order1.php on line 130

Zmieniłem coś i już fatal erroru nie ma, ale jest coś takiego. Wyślę cały kod, może łatwiej wam będzie rozwiązać ten problem. bez styli
  1. <body>
  2.  
  3. <div id="head">
  4. <form action="zaloguj.php" method="post">
  5. <p> Aplikacja Budżet domowy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="kategorie.php" style="text-decoration: none; color:white;"><i class="icon-menu" title="Kategorie" name="menu"></i></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="domownicy.php" style="text-decoration: none; color:white;"><i class="icon-user" title="Domownicy" name="domownicy"></i></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="stats.php" style="text-decoration: none; color:white;"><i class="icon-chart-bar" title="Statystyki" name="stats"></i></a> </p>
  6. </form>
  7. </div>
  8. <div id="content">
  9. <?php
  10.  
  11. $db = @new mysqli('localhost', 'd14_2f2732', 'stress123', 'd14_meczynski_adam');
  12.  
  13. function SelectWoda($miesiac)
  14. {
  15. global $db;
  16. $wynik = $db->query('select `woda` from `liczniki` where `miesiac`=styczen');
  17. $result = mysqli_fetch_assoc($wynik);
  18. return $woda = $result['woda'];
  19. }
  20.  
  21. echo '<h1>'.SelectWoda('styczen').'</h1>';
  22. ?>
  23.  
  24. <?php
  25. echo '<table border="1" cellpadding="10" cellspacing="0">';
  26. echo"<tr>
  27. <td><b>Styczeń</b></td><td> $woda PLN</td>
  28. </tr>
  29. <tr>
  30. <td><b>Luty</b></td><td> PLN</td>
  31. </tr>
  32. <tr>
  33. <td><b>Marzec</b></td><td> PLN</td>
  34. </tr>
  35. <tr>
  36. <td><b>Kwiecień</b></td><td> PLN</td>
  37. </tr>
  38. <tr>
  39. <td><b>Maj</b></td><td> PLN</td>
  40. </tr>
  41. </table>";
  42. ?>
  43. </div>
  44. <div class="footer">
  45. &copy; Copyright Adam Męczyński 2017
  46. </div>
  47. </body>
  48. </html>



Podsyłam też screena jak wyglada tabelka w phpmyadmin, może po tej stronie leży błąd.

http://ifotos.pl/zobacz/afgagpng_aqeaeqn.png

patwoj98
A wiesz, że powinieneś stringi otaczać apostrofem w SQL?
Popraw 17 linijkę
  1. $wynik = $db->query('select `woda` from `liczniki` where `miesiac`=styczen');


na
  1. $wynik = $db->query("select `woda` from `liczniki` where `miesiac`='styczen'");

I podaj czy działa.
Jak nadal błąd to wyświetl
  1. var_dump($wynik);
zaraz po zapytaniu.
rikoooo1234
Dzięki wielkie stary, teraz działa! biggrin.gif

Jeszcze takie jedno małe pytanko. Ja zapisałem to w taki widzę, że dosyć niekonwencjonalny sposób, a przy takim zapisie i większej tabeli, gdzie mam już z 20 kolumn może być problem biggrin.gif
  1. <?php
  2.  
  3. $db = @new mysqli('localhost', 'd14_2f2732', 'stress123', 'd14_meczynski_adam');
  4.  
  5. function SelectZywnosc($miesiac)
  6. {
  7. global $db;
  8. $wynik = $db->query("select `zywnosc` from `liczniki` where `miesiac`='styczen'");
  9. $result = mysqli_fetch_assoc($wynik);
  10. return $zywnosc = $result['zywnosc'];
  11. }
  12. function SelectZywnosc1($miesiac)
  13. {
  14. global $db;
  15. $wynik = $db->query("select `zywnosc` from `liczniki` where `miesiac`='luty'");
  16. $result = mysqli_fetch_assoc($wynik);
  17. return $zywnosc = $result['zywnosc'];
  18. }
  19.  
  20. function SelectZywnosc2($miesiac)
  21. {
  22. global $db;
  23. $wynik = $db->query("select `zywnosc` from `liczniki` where `miesiac`='marzec'");
  24. $result = mysqli_fetch_assoc($wynik);
  25. return $zywnosc = $result['zywnosc'];
  26. }
  27. function SelectZywnosc3($miesiac)
  28. {
  29. global $db;
  30. $wynik = $db->query("select `zywnosc` from `liczniki` where `miesiac`='kwiecien'");
  31. $result = mysqli_fetch_assoc($wynik);
  32. return $zywnosc = $result['zywnosc'];
  33. }
  34. function SelectZywnosc4($miesiac)
  35. {
  36. global $db;
  37. $wynik = $db->query("select `zywnosc` from `liczniki` where `miesiac`='maj'");
  38. $result = mysqli_fetch_assoc($wynik);
  39. return $zywnosc = $result['zywnosc'];
  40. }
  41.  
  42.  
  43. ?>
  44.  
  45.  
  46. <?php
  47. echo '<table border="1" cellpadding="10" cellspacing="0">';
  48. echo"<tr>
  49. <td><b>Styczeń</b></td><td>".SelectZywnosc('styczen')." PLN</td>
  50. </tr>
  51. <tr>
  52. <td><b>Luty</b></td><td>".SelectZywnosc1('styczen')." PLN</td>
  53. </tr>
  54. <tr>
  55. <td><b>Marzec</b></td><td>".SelectZywnosc2('styczen')." PLN</td>
  56. </tr>
  57. <tr>
  58. <td><b>Kwiecień</b></td><td>".SelectZywnosc3('styczen')." PLN</td>
  59. </tr>
  60. <tr>
  61. <td><b>Maj</b></td><td>".SelectZywnosc4('styczen')." PLN</td>
  62. </tr>
  63. </table>";
  64. ?>



Da radę to jakoś inaczej zapisać?
patwoj98
  1. function SelectZywnosc($miesiac)
  2. {
  3. global $db;
  4. $wynik = $db->query("select `zywnosc` from `liczniki` where `miesiac`='".$miesiac."'");
  5. $result = mysqli_fetch_assoc($wynik);
  6. return $zywnosc = $result['zywnosc'];
  7. }


Ta funkcja będzie pobierała miesiąc w zależności od podanego w argumencie. Nie musisz stosować pozostałych.

P.S. Spróbuj także wodę i żywność pobierać w jednej funkcji - mniej powielanego kodu.
nospor
Cytat
P.S. Spróbuj także wodę i żywność pobierać w jednej funkcji - mniej powielanego kodu.
Powielanie kodu do najmniejszy problem tutaj. Generowanie petryliarda zbednych zapytan to dopiero problem...
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.