Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] ilość
Forum PHP.pl > Forum > Przedszkole
fredzio90
mam takie pytanie..
mam wyszukiwarke, opiszmy ją zmienna $word, i każda osoba która wpisze jakieś słowo do wyszukiwarki te słowo zostanie dodane do bazy... mam tabelke która odpowieda za wyświetlenie tego poszukiwanego słowa i moje pytanie brzmi, jak można zliczyć ile jakieś słowo było razy szukane.. np wpisze test1 potem test2 i znowu test1 i żeby w tym skrypcie wyświetliło mi przy słowie szukanym że szukane 2 razy.. questionmark.gif jeżeli można to prosił bym o gotowe zapytanie...
JaRoPHP
Należy zrobić nową tabelę, w której będzie zliczana ilość wystąpień wpisywanych fraz (przynajmniej innego rozwiązania nie kojarzę).
Potem zapytanie mogłoby wyglądać następująco:
  1. SELECT COUNT(*) FROM ilosc WHERE fraza = '...'
fredzio90
poradziłem sobie z tym problemem w ten sposów: mam nową tabel itp ;D

  1. <?php
  2. $query = "SELECT * FROM search_words WHERE id='$id' LIKE slowo='$word'";
  3. $result = mysql_query($query);
  4. $n = mysql_num_rows($result);
  5. ?>


a ilość wyświetlam jako:

  1. <?php
  2. <td class="uni_01">'.$n.'</td>
  3. ?>


dziękuje za odpiwiedź ;D

ale teraz mam inny problem.... bo te słowo dodaje za kazdym razem... a chce aby tylko naliczało ilość tych samych słów.. tutaj daje kod... jak to zamienić?

  1. <?php
  2. echo '<table align="center" border="1">
  3. <tr>
  4. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">Słowo</b></td>
  5. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">IP</b></td>
  6. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">Szukań</b></td>
  7. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">Data</b></td>
  8. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">Akcje</b></td>
  9. </tr>';
  10.  
  11. $res = (mysql_query("SELECT * FROM search_words LIMIT $limit,$limit_"));
  12. while($r = mysql_fetch_object($res)) {
  13.  
  14. $query = "SELECT * FROM search_words WHERE id='$id' LIKE slowo='$word'";
  15. $result = mysql_query($query);
  16. $n = mysql_num_rows($result);
  17.  
  18.  
  19. $id = $r->id;
  20. $slowo = $r->slowo;
  21. $ip = $r->ip;
  22. $data = $r->date;
  23.  
  24. echo '<tr>
  25. <td class="uni_01">'.$slowo.'</td>
  26. <td class="uni_01">'.$ip.'</td>
  27. <td class="uni_01">'.$n.'</td>
  28. <td class="uni_01">'.$data.'</td>
  29. <td class="uni_01">[ <a href="administracja.php?op='.$_GET[op].'&cmd=del&id='.$id.'">Usuń</a> ]</td>
  30.  
  31. </tr>';
  32. ?>
TomASS
Ja bym raczej zastosował klauzulę GROUP BY
fredzio90
jakbyś mógł powiedzieć jaśniej... z "Gotowcem" bo już kilka godzin nad tym siedzę...



-------------------------
od czasu jak FF 2.0 ma sprawdzanie pisowni
nie powinno być błędów ortograficznych
~Cienki1980
TomASS
Cytat
"Gotowcem" bo już kilka godzin nad tym siedzę..

3 minuty to kilka godzin? Dałem Ci odpowiedź o 00:25 a Ty swoją napisałeś o 00:28

Cytat
od czasu jak FF 2.0 ma sprawdzanie pisowni

Nie każdy korzysta z FF 2.0 Co wcale nie usprawiedliwia popełniania błędów.




Aby wyświetlać ranking możesz zrobić takie zapytanie:
  1. SELECT count(*) AS Ile, Fraza FROM tablica GROUP BY Fraza ORDER BY Ile;
fredzio90
ja z tym się męczyłem od 20!! aż napisałem na kilku forach o tym problemie....

niestety nie działa.....

może inaczej:

tabela: search_words
pola: id, slowo, ip, date

Gdy wpiszemy do wyszukiwarki słowo to za to jest zmienna $word i dodaje się te słoow do bazy do pola slowo....
i teraz pytanie jak zliczyć TE SAME słowa szukane w wyszukiwarce questionmark.gifexclamation.gif
k1ller
Cytat(fredzio90 @ 20.02.2007, 14:47:26 ) *
ja z tym się męczyłem od 20!! aż napisałem na kilku forach o tym problemie....

niestety nie działa.....

może inaczej:

tabela: search_words
pola: id, slowo, ip, date

Gdy wpiszemy do wyszukiwarki słowo to za to jest zmienna $word i dodaje się te słoow do bazy do pola slowo....
i teraz pytanie jak zliczyć TE SAME słowa szukane w wyszukiwarce questionmark.gifexclamation.gif


Po co dodawac to samo slowo wiele razy ? wystarczy zrobic tak:

Dodaj do tabeli nowa kolumne ilosc
robisz takie zapytanie:
  1. SELECT * FROM search_words WHERE slowo LIKE '$slowo'


jezeli mysql_num_rows > 0 znaczy ze masz juz takie slowo wiec wystarczy zrobic update, czyli

  1. UPDATE search_words SET ilosc=ilosc+1 WHERE slowo LIKE '$slowo'


jezeli mysql_num_rows = 0 znaczy ze nie ma takiego slowa i robisz zwykly insert.....


Potem juz tylko zczytujesz slowa wraz z ilosciami jak czesto byly szukane.....
TomASS
Cytat
Po co dodawac to samo slowo wiele razy ?

Może w celu dokładniejszych statystyk?

Cytat
niestety nie działa.....

Co nie działa? Jaki błąd wyskakuje? Jak teraz wygląda Twój kod?

Cytat
i teraz pytanie jak zliczyć TE SAME słowa szukane w wyszukiwarce

Dałem Ci linka - i przeczytaj to dokładnie ze zrozumieniem
fredzio90
niestety do tej pory nie poradzilem sobiez tym 'fantem'.....

dam wszystkie dane jakie mam:

w plikach wyszukiwarki dałem tkaie zapytanie:

  1. <?php
  2. $result = mysql_query("UPDATE search_words SET ilosc=ilosc+1 WHERE slowo LIKE '$word'");
  3. ?>


a kod odpowiedzialny za wyświetlanie jest następuyjący:
  1. <?php
  2. function spis(){
  3. global $color, $page;
  4.  
  5. if(have_access($op)=='ok') {
  6.  
  7.  $limit_ = 20;
  8.  $limit = $page * $limit_;
  9.  
  10.  $ile = mysql_num_rows(mysql_query("SELECT * FROM search_words"));
  11.  if($ile==0) {
  12.  
  13.  echo 'Brak słów.<br>';
  14.  
  15.  } else {
  16.  
  17. echo '<center>Jak narazie szukano <b> '.$ile.' </b> Słów w naszym Serwisie</center><br> ';
  18. echo '<table align="center" border="1">
  19. <tr>
  20. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">Słowo</b></td>
  21. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">IP</b></td>
  22. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">Szukań</b></td>
  23. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">Data</b></td>
  24. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">Akcje</b></td>
  25. </tr>';
  26.  
  27. $res = (mysql_query("SELECT * FROM search_words LIMIT $limit,$limit_"));
  28. while($r = mysql_fetch_object($res)) {
  29.  
  30. $result = mysql_query("SELECT count(*) FROM search_words WHERE slowo='$word' ORDER BY date");
  31.  
  32.  
  33. $id = $r->id;
  34. $slowo = $r->slowo;
  35. $ilosc = $r->ilosc;
  36. $ip = $r->ip;
  37. $data = $r->date;
  38.  
  39. echo '<tr>
  40. <td class="uni_01">'.$slowo.'</td>
  41. <td class="uni_01">'.$ip.'</td>
  42. <td class="uni_01">'.$ilosc.'</td>
  43. <td class="uni_01">'.$data.'</td>
  44. <td class="uni_01">[ <a href="admin.php?op='.$_GET[op].'&cmd=del&id='.$id.'">Usuń</a> ]</td>
  45.  
  46. </tr>';
  47.  
  48. }
  49. echo '</table></center>';
  50. echo '<br><div align="center" class="uni_01">';
  51. if($ile<>0) {
  52. $ile = $ile / $limit_;
  53. $ile = ceil($ile);
  54. $bbb = 0;
  55. while($bbb<>$ile) {
  56. $ccc = $bbb + 1;
  57. if($page==$bbb) {
  58. echo '[<b>'.$ccc.'</b>] ';
  59. } else {
  60. echo '[<a href="admin.php?op='.$_GET[op].'&page='.$bbb.'">'.$ccc.'</a>] ';
  61. }
  62. $bbb++;
  63. }
  64. } else {
  65. echo '[<b>1</b>] ';
  66. }
  67. }
  68. }
  69. }
  70. ?>



a baza search_words wygląda tak:

  1. CREATE TABLE `search_words` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `slowo` date NOT NULL DEFAULT '0000-00-00',
  4. `ip` varchar(20) NOT NULL DEFAULT '',
  5. `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  6. `ilosc` varchar(5) NOT NULL DEFAULT '',
  7. KEY `id` (`id`)
  8. ) ENGINE=MyISAM



i zamiast słów dodaje właśnie domyślną wartość pola slowo czyli:

0000-00-00
Cienki1980
A dlaczego slowo w tabeli masz typu DATE a nie VARCHAR?questionmark.gif
Do tego pola nie wpiszesz żadnego słowa.
fredzio90
ups ;D mały update musialk zajść.. ale ciągle mam problem w tymni ilościami słów takich sanych

help me ? tongue.gif
Cienki1980
Cytat(fredzio90 @ 23.02.2007, 15:50:36 ) *
ups ;D mały update musialk zajść.. ale ciągle mam problem w tymni ilościami słów takich sanych

help me ? tongue.gif

Może rozwiń ten problem "słów takich samych" na czym on polega ?
fredzio90
omkg... pisze 3 raz...

mam portal i w nim wyszukwarke.. slowa "wstykane" do wyszukiwarki sa dodawane do bazy i wyswietlane administratorowi.. to jest zmienna $word...
i moje pytanie jest takie jak zliczyć takie same słowa które znajdują się w bazie... i jak zmienić to zapytanie:

  1. <?php
  2. $result = mysql_query("INSERT INTO search_words SET slowo='$word', ip='$REMOTE_ADDR', date=now()");
  3. ?>


i jeżeli to nie wypali to jak zrobić to zapytanie:

  1. <?php
  2. $result = mysql_query("INSERT INTO search_words SET slowo='$word', ip='$REMOTE_ADDR', date=now(), ilosc='1'");
  3. ?>


aby do pola ilosc za każdym razem gdy ktoś coś pisze dodawało +1 do szukanego słowa( druga opcja jeżeli zliczanie nie wypakli to bede odczytywał ilość szukań z pola w tabeli...)




a za wyswietlanie odpowiada ta funkcja:

  1. <?php
  2. function spis(){
  3. global $color, $page;
  4.  
  5. if(have_access($op)=='ok') {
  6.  
  7.  $limit_ = 20;
  8.  $limit = $page * $limit_;
  9.  
  10.  $ile = mysql_num_rows(mysql_query("SELECT * FROM search_words"));
  11.  if($ile==0) {
  12.  
  13.  echo 'Brak słów.<br>';
  14.  
  15.  } else {
  16.  
  17.  
  18.  
  19. echo '<center>Jak narazie szukano <b> '.$ile.' </b> Słów w naszym Serwisie</center><br> ';
  20. echo '<table align="center" border="1">
  21. <tr>
  22. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">Słowo</b></td>
  23. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">IP</b></td>
  24. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">Szukań</b></td>
  25. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">Data</b></td>
  26. <td bgcolor="'.$color[6].'" class="uni_01" align="center"><b><font color="'.$color[7].'">Akcje</b></td>
  27. </tr>';
  28.  
  29. $res = (mysql_query("SELECT * FROM search_words LIMIT $limit,$limit_"));
  30. while($r = mysql_fetch_object($res)) {
  31.  
  32.  
  33. $id = $r->id;
  34. $slowo = $r->slowo;
  35. $ilosc = $r->ilosc;
  36. $ip = $r->ip;
  37. $data = $r->date;
  38.  
  39. echo '<tr>
  40. <td class="uni_01">'.$slowo.'</td>
  41. <td class="uni_01">'.$ip.'</td>
  42. <td class="uni_01">'.$ilosc.'</td>
  43. <td class="uni_01">'.$data.'</td>
  44. <td class="uni_01">[ <a href="administracja.php?op='.$_GET[op].'&cmd=del&id='.$id.'">Usuń</a> ]</td>
  45.  
  46. </tr>';
  47.  
  48. }
  49. echo '</table></center>';
  50. echo '<br><div align="center" class="uni_01">';
  51. if($ile<>0) {
  52. $ile = $ile / $limit_;
  53. $ile = ceil($ile);
  54. $bbb = 0;
  55. while($bbb<>$ile) {
  56. $ccc = $bbb + 1;
  57. if($page==$bbb) {
  58. echo '[<b>'.$ccc.'</b>] ';
  59. } else {
  60. echo '[<a href="administracja.php?op='.$_GET[op].'&page='.$bbb.'">'.$ccc.'</a>] ';
  61. }
  62. $bbb++;
  63. }
  64. } else {
  65. echo '[<b>1</b>] ';
  66. }
  67. }
  68. }
  69. }
  70. ?>
Cienki1980
Nie wiem co to za zapytania, ale mi jakoś nie pasują tu do niczego. Dalej nie wiem czy masz problem z odczytywaniem danych i wyświetlaniem ich adminowi czy po prostu samo dodawanie/uaktualnianie bazy jest problemem.

Ja bym zrobił to jakoś tak:
1.W momencie jak ktoś korzysta z wyszukiwarki ( ustawiona zmienna $word ) zrobiłbym tak:
  1. <?php
  2. $query_check="select * from search_word where slowo like '".$word."'";
  3. $res=mysql_query($query_check);
  4. $ile=mysql_num_rows($res);
  5. if($ile>0)
  6. {
  7.  // znaczy to, że takie słowo było już szukane robimy tak
  8.  mysql_query("update search_word set ilosc=ilosc+1 where slowo like '".$word."'");
  9. }
  10. else
  11. {
  12.  // znaczy to, że ktoś po raz pierwszy wpisał dane słowo
  13.  mysql_query("insert into search_word(slowo,ip,date) values ('".$word."','".$ip."','now()')");
  14. }
  15. ?>


Potem wyciągasz z bazy dane w sposób jak pokazałeś poniżej. Jak dla mnie powinno to działać OK.
fredzio90
yeahhhh GREAT.. działa... zrobiłem tak:
  1. <?php
  2. $query_check="select * from search_words where slowo like '".$word."'";
  3. $res=mysql_query($query_check);
  4. $ile=mysql_num_rows($res);
  5. if($ile>0)
  6. {
  7.  // znaczy to, że takie słowo było już szukane robimy tak
  8. mysql_query("update search_words set ilosc=ilosc+1 where slowo like '".$word."'");
  9. }
  10. else
  11. {
  12.  // znaczy to, że ktoś po raz pierwszy wpisał dane słowo
  13. mysql_query("insert into search_words(slowo,ip,date,ilosc) values ('".$word."','".$REMOTE_ADDR."', now(), '1')");
  14. ?>


małe poprawki ;D MASZ U MNIE KUBUSIA ;D hahaha
dzieki ziomus o to mi chodziło ;D
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.