Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Wyświetlanie wyników wyszukiwania
Forum PHP.pl > Forum > Bazy danych > MySQL
sebekzosw
Mam taki skrypt to wyświetlania wyników wyszukiwania:

  1. <?php
  2.  if ($szukaj != "" && strlen($szukaj) > 2) {
  3. echo " <!-- POCZĄTEK: news -->
  4. <div class=\"podstrona\">
  5. <div class=\"newstitle\">
  6. Wyniki wyszukiwania
  7. </div>
  8. </div>
  9. <div class=\"newsinside\">\n";
  10.  
  11.  
  12. if(dbcount("(id_szukanego)", "szukane", "tresc_szukanego='".strip_tags(addslashes($_POST['pltitle']))."'") != "0") {
  13. $result = dbquery("UPDATE ".$db_prefix."szukane SET ile_razy_szukane=ile_razy_szukane+1 WHERE tresc_szukanego='".$szukaj."'");
  14. } else {
  15. $result = dbquery("INSERT INTO ".$db_prefix."szukane (tresc_szukanego, ile_razy_szukane) VALUES ('".strip_tags(addslashes($szukaj))."', '1')");
  16. }
  17.  
  18.  $result = dbquery("SELECT * FROM ".$db_prefix."filmy ta WHERE (film_pl_title LIKE '%$szukaj%' || film_org_title LIKE '%$szukaj%' || film_os_title LIKE '%$szukaj%')");
  19. $rows = dbrows($result);
  20. if ($rows != 0) {
  21. if($rows == "1"){
  22. echo " Znaleziono 1 film.<br /><br />\n";
  23. } else {
  24. echo " Znaleziono ".filmy($rows)."<br /><br />\n";
  25. }
  26. $result = dbquery("SELECT film_id,film_pl_title,film_org_title,film_data FROM ".$db_prefix."filmy ta WHERE (film_pl_title LIKE '%$szukaj%' || film_org_title LIKE '%$szukaj%' || film_os_title LIKE '%$szukaj%')");
  27. while ($data = dbarray($result)) {
  28. echo " <a href=\"".link_z_tytulem_do_filmu($data['film_pl_title'], $data['film_org_title'], $data['film_id'])."\" class=\"link20\"><img src=\"images/arrow.gif\" alt=\"\" />&nbsp;&nbsp;".stripslashes($data['film_pl_title'])." / ".stripslashes($data['film_org_title'])." (".$data['film_data'].")</a>\n";
  29.  
  30.  
  31. }
  32. } else {
  33. echo "<div id=\"menu1sty2log\">Brak filmów spełniających Twoje kryteria.\n</div>";
  34. }
  35. echo " <div class=\"clearboth\"></div>
  36. </div>
  37.  
  38. <div class=\"newsend\"></div>
  39. <!-- KONIEC: news -->\n";
  40.  }
  41. ?>


I cokolwiek bym nie szukał to zawsze wyświetli mi się napisz "Powtórzone wystąpienie '0' dla klucza 1" Co to znaczy i jak to naprawić?
vokiel
Twój kod błędu oznacza, że INSERT narusza klucze integralności, czyli próbojesz wstawić wartość która już istnieje a nie może się powtórzyć.
  1. <?php
  2. // błąd jest chyba tutaj !=
  3. // sprawdzasz czy jest różne od 0, zatem warunek jest spełniony gdy wystąpiło już 
    takie zapytanie, wtedy ten insert zawsze będzie powodował błąd
  4. // zamień na == i powinno działać, albo zrób po prostu <1 ;)
  5. if(dbcount("(id_szukanego)", "szukane", "tresc_szukanego='".strip_tags(addslashes($_POST['pltitle']))."'") != "0") {
  6. $result = dbquery("UPDATE ".$db_prefix."szukane SET ile_razy_szukane=ile_razy_szukane+1 WHERE tresc_szukanego='".$szukaj."'");
  7. } else {
  8. $result = dbquery("INSERT INTO ".$db_prefix."szukane (tresc_szukanego, ile_razy_szukane) VALUES ('".strip_tags(addslashes($szukaj))."', '1')");
  9. }
  10. ?>

Co do tego fragmentu kodu:
  1. <?php
  2. $result = dbquery("SELECT * FROM ".$db_prefix."filmy ta WHERE (film_pl_title LIKE '%$szukaj%' || film_org_title LIKE '%$szukaj%' || film_os_title LIKE '%$szukaj%')");
  3. $rows = dbrows($result);
  4. if ($rows != 0) {
  5. if($rows == "1"){
  6. echo " Znaleziono 1 film.<br /><br />\n";
  7. } else {
  8. echo " Znaleziono ".filmy($rows)."<br /><br />\n";
  9. }
  10. // po co tutaj te zapytanie skoro masz je wyżej, wystarczy wykorzystać to co tamto
     zwróciło,
  11. // tym bardziej, że te zapytanie wyżej jest szersze niż to poniżej, użyj po prostu
     danych w $rows
  12. $result = dbquery("SELECT film_id,film_pl_title,film_org_title,film_data FROM ".$db_prefix."filmy ta WHERE (film_pl_title LIKE '%$szukaj%' || film_org_title LIKE '%$szukaj%' || film_os_title LIKE '%$szukaj%')");
  13. ?>
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.