Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak nauczyc skrypt liczenia pól w bazie mysql?
Forum PHP.pl > Forum > Przedszkole
Hubi.pl
Witam,
otóż chciałbym mój skrypt udoskonalić, o funkcje liczenia. Tzn. chodzi o to, aby policzył ile w tabelce 'komentarze' w polach ID jest sztuk wartości 1, a ile 2, 3 itd.
A kolejnym etapem byłoby wyświetlenie tych wyników w takim porządku by pasowały do poszczególnych ID.

  1. <?php
  2.  mysql_connect (&#092;"localhost\", \"login\", \"haslo\") or die ('I cannot 
  3. connect to the database because: ' . mysql_error());
  4. mysql_select_db (\"hubi_blog\");
  5. $liczenie=mysql_query(\"select COUNT(*) FROM KOMENTARZE WHERE ID \");
  6. //* właśnie z tym zapytaniem mam największy problem :(:(:(
  7. $zapytanie=mysql_query(\"SELECT * FROM `notki` ORDER BY `data_dodania` DESC\");
  8. while($a=mysql_fetch_array($zapytanie)){
  9. //*natomaist tutaj chyba też coś zepsułem :]
  10. while($licz=mysql_fetch_array($liczenie)){
  11. $id = $a['id'];
  12.  echo(\"<table width=\"100%\" border=\"0\" cellspacing=\"0\" 
  13. cellpadding=\"0\">
  14. <tr>
  15. <th scope=\"col\">\".$a['temat_notki'].\"
  16.  
  17.  </th>
  18.  </tr>
  19. <tr>
  20.  <td><span class=\"style2\">dodano:</span> <b>\".$a['data_dodania'].\"</b><br>____________________<p>
  21.  </td>
  22.  </tr>
  23.  <tr>
  24.  <td>
  25.  \".$a['tresc_notki'].\"<p>____________________
  26.  </td>
  27.  </tr>
  28.  <tr>
  29.  <td><span class=\"style2\">autor:</span> <b>\".$a['autor_notki'].\"</b><p>
  30.  </td>
  31.  </tr>
  32.  <tr>
  33. <td><a href=\"dodaj_komentarz.php?id=$id\">Dodaj Komentarz</a> || <a 
  34.  
  35. href=\"pokaz_komentarze.php?id=$id\">Pokaż Komentarze \".$liczenie['].&#092;"</a></td>
  36.  </tr>
  37.  </table><br>&#092;");
  38.  }
  39. }
  40.  ?>

i teraz jak wyświetlić poprawnie ta $liczenie w dalszej części skryptu.'

Pozdrawiam
Z góry Serdecznie dziękuje za pomoc rolleyes.gif
Vertical
  1. <?php
  2.  
  3. $id = &#092;"1\";
  4. while($id == $id)
  5. {
  6. $sql = &#092;"SELECT count(*) AS liczba FROM tabela WHERE id = $id\";
  7. $result = mysql_query($sql);
  8. $row = mysql_fetch_array($result);
  9. print(&#092;"Liczba kolumn z id $id: $liczban\");
  10. $id+1
  11. }
  12. ?>
Hubi.pl
no tak, ale ID nie jest zawsze '1' tylko jest zmienna....
to co w takim przypadku?

pzdr.
Aztech
zapytanie
  1. <?php
  2. $sql = 'SELECT ID, Count(ID) as Ile '
  3. . ' FROM nazwa_tabeli' . ' GROUP BY ID'
  4. ?>

zwróci ci tabelke wygladającą tak:
Cytat
ID Ile
1 26
2 14
3 14
4 35

i teraz przez
  1. <?php
  2. $result = mysql_query($sql);
  3. while ($dane = mysql_fetch_array($result) ) {
  4. }
  5.  
  6. ?>
mozesz sie dobrac do itego jak chcesz
Hubi.pl
błędów nie wyrzuca, więc chyba dobrze, tylko jak to teraz wyświetlić ?tongue.gif
bo w ten sposób chyba nie sad.gif
".$dane['result']."
questionmark.gifquestionmark.gif

pzdr.
Aztech
Poczytaj w manualu na temat mysql_fetch_array

Manual nie gryzie

a wyświetlić można tak poprzez dostęp do nich w następujący sposób
  1. <?php
  2. $dane[&#092;"ID\"]
  3. $dane[&#092;"Ile\"]
  4. ?>


czyli... poprzez nazwę pola w tabeli smile.gif

oczywiście robisz to w pętli z while (tą któą napisałem wcześniej
  1. <?php
  2. $result = mysql_query($sql);
  3. while ($dane = mysql_fetch_array($result) ) {
  4. }
  5.  print($dane[&#092;"ID\"].' '.$dane[\"Ile\"]);
  6. ?>
Hubi.pl
hmm....
wrzuciłem to co podał Aztech do moejgo skryptu, lecz niestety mam bład ;/

  1. <?php
  2.  mysql_connect (&#092;"localhost\", \"login\", \"haslo\") or die ('I cannot 
  3. connect to the database because: ' . mysql_error());
  4. mysql_select_db (\"hubi_blog\");
  5. $sql = ('SELECT ID, Count(ID) as Ile '
  6. . ' FROM komentarze' . ' GROUP BY ID');
  7. $zapytanie=mysql_query(\"SELECT * FROM `notki` ORDER BY `data_dodania` DESC\");
  8. $result = mysql_query($sql);
  9. while ($dane = mysql_fetch_array($result) ) {
  10. }
  11. while($a=mysql_fetch_array($zapytanie))
  12. {
  13. $id = $a['id'];
  14.  echo(\"<table width=\"100%\" border=\"0\" cellspacing=\"0\" 
  15. cellpadding=\"0\">
  16. <tr>
  17. <th scope=\"col\">\".$a['temat_notki'].\"
  18.  
  19.  </th>
  20.  </tr>
  21. <tr>
  22.  <td><span class=\"style2\">dodano:</span> <b>\".$a['data_dodania'].\"</b><br>____________________<p>
  23.  </td>
  24.  </tr>
  25.  <tr>
  26.  <td>
  27.  \".$a['tresc_notki'].\"<p>____________________
  28.  </td>
  29.  </tr>
  30.  <tr>
  31.  <td><span class=\"style2\">autor:</span> <b>\".$a['autor_notki'].\"</b><p>
  32.  </td>
  33.  </tr>
  34.  <tr>
  35. <td><a href=\"dodaj_komentarz.php?id=$id\">Dodaj Komentarz</a> || <a 
  36.  
  37. href=\"pokaz_komentarze.php?id=$id\">Pokaż Komentarze echo('.$dane[&#092;"ID\"].' '.$dane[\"Ile\"].'); 
  38.  
  39. ?></a></td>
  40.  </tr>
  41.  </table><br>\");
  42. }
  43.  mysql_close();
  44.  ?>


Cytat
Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/hubi/public_html/blog_sql/index_blog.php on line 35


Mógłby ktoś mi pomóc go naprawić ?tongue.gif
itsme
linia 38 w Twoim kodzie pokaznym na stronie to

href=\"pokaz_komentarze.php?id=$id\">Pokaż Komentarze echo(\'.$dane["ID"].' '.$dane["Ile"].\');

winno być

href=\"pokaz_komentarze.php?id='.$id.'\">Pokaż Komentarze '.$dane["ID"].' '.$dane["Ile"]);
Hubi.pl
hmm... w dalszym ciągu pokazuje error
Kod
Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/hubi/public_html/blog_sql/index_blog.php on line 35


what's wrong?tongue.gif

pzdr.
Majdan
Praktyczniej będzie tak:
  1. <?php
  2. // (...)
  3. while($a=mysql_fetch_array($zapytanie)) {
  4. $id = $a['id'];
  5. ?>
  6.  
  7. tekst do wyświetlenia
  8.  
  9. <?php
  10. }
  11. // (...)
  12. ?>
Aztech
Spróbuj porpawić tak:
  1. <?php
  2.  
  3. mysql_connect (&#092;"localhost\", \"login\", \"haslo\") or die ('I cannot
  4. connect to the database because: ' . mysql_error());
  5. mysql_select_db (\"hubi_blog\");
  6. $sql = ('SELECT ID, Count(ID) as Ile '
  7. . ' FROM komentarze' . ' GROUP BY ID');
  8. $zapytanie=mysql_query(\"SELECT * FROM `notki` ORDER BY `data_dodania` DESC\");
  9. $result = mysql_query($sql);
  10. while ($dane = mysql_fetch_array($result) ) {
  11. }
  12. while($a=mysql_fetch_array($zapytanie))
  13. {
  14. $id = $a['id'];
  15. echo(\"<table width=\"100%\" border=\"0\" cellspacing=\"0\"
  16. cellpadding=\"0\">
  17. <tr>
  18. <th scope=\"col\">\".$a['temat_notki'].\"
  19.  
  20. </th>
  21.  </tr>
  22. <tr>
  23.  <td><span class=\"style2\">dodano:</span> <b>\".$a['data_dodania'].\"</b><br>____________________<p>
  24. </td>
  25.  </tr>
  26.  <tr>
  27.  <td>
  28. \".$a['tresc_notki'].\"<p>____________________
  29. </td>
  30.  </tr>
  31.  <tr>
  32.  <td><span class=\"style2\">autor:</span> <b>\".$a['autor_notki'].\"</b><p>
  33. </td>
  34.  </tr>
  35.  <tr>
  36. <td><a href=\"dodaj_komentarz.php?id=\".$id.\"\">Dodaj Komentarz</a> || <a
  37.  
  38. href=\"pokaz_komentarze.php?id=\".$id.\"\">Pokaż Komentarze \".$dane['ID'].\" \".$dane['Ile].&#092;"
  39. </a></td>
  40.  </tr>
  41. </table><br>&#092;");
  42. }
  43.  
  44.  
  45. ?>
Hubi.pl
w chwili obecnej skrypt jest złożony poprawnie ( 0 błędów),ale nadal nie wyświetla sie rezultat liczenia sad.gif

questionmark.gif?

pzdr.
Aztech
Bo sie nie wyswietli - popatrz tutaj przegladasz wynik zapytania ktory zwraca rezultat liczenia
  1. <?php
  2. while ($dane = mysql_fetch_array($result) ) {
  3. }
  4. ?>

i co?questionmark.gif nie piszesz nic napisz tak:
  1. <?php
  2. while ($dane = mysql_fetch_array($result) ) {
  3. echo (&#092;"Dla ID = \".$dane['ID'].\" mam \".$dane['Ile'].\" powtórzeń\");
  4. }
  5. ?>

i zobaczysz o co chodzi
i poczytaj sobie naprawdę jak działa mysql_fetch_array w MANUALU to nie bedziesz miał wiecej takich rozterek - bo tutaj widać błędy logiczne (czyt. nieznajomość MySQL-a), żeby nie powiedzieć wprost że lenistwo exclamation.gif!
Vertical
Cytat
no tak, ale ID nie jest zawsze '1' tylko jest zmienna....

Dlatego dałem na końcu pętli while wyrażenie "$id+1", żeby sprawdzał po kolei
Gość_Apache
Witam!!
Mam błąd:
mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

Co to oznacza i jak to naprawić??

Mam krasnala 2.7 (apache+mysql+php+perl+cgi)
Aztech
Moze to oznaczac 2 rzeczy, że twoje zapytanie jest niepoprawnie skonstruowane, alebo coś pokićkałeś podstawiając nie tą daną do przeglądania wyników zapytania:

Popatrz na ten kod i porownaj ze swoim
  1. <?php
  2. //********************************************************
  3. //* LACZENIE SIE Z BAZA DANYCH *
  4. //********************************************************
  5.  
  6. $link = mysql_connect('localhost', 'user', 'haslo')
  7. or die('Nie można się połaczyć: ' . mysql_error());
  8. mysql_select_db('nazwa_bazy', $link);
  9.  
  10. //********************************************************
  11. //* WYBIERZ TURNIEJE DO ROZWIAJANEJ LISTY *
  12. //********************************************************
  13.  
  14. $sql = 'SELECT TurnID, opis '
  15. . ' FROM tabela_w_bazie '
  16. . ' ORDER BY TurnID desc';
  17. $result = mysql_query($sql, $link);
  18. $ile_rezultatow = mysql_num_rows($result);
  19.  
  20. while ($dane = mysql_fetch_array($result) {
  21. echo 'wyswietlam se wynik: TurnId'.$dane[&#092;"TurnID\"];
  22. }
  23.  
  24. ?>


Jeśli potrzeba jakichś większych wyjasnień pisz

Sprawdz czy masz poprawnie wszystkie znaki takie jak: $ przy danych oraz czy gdzieś nie zjadłeś tego znaczku: '
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.