Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] skrypt tagow
Forum PHP.pl > Forum > Przedszkole
bialko0019
Witam.

Zrobiłem prosty skrypt tagów wyszukiwania - im częsciej wyszukiwana fraza, tym jest wyświetlana jako większa, ale mam jeden problem przy sprawdzaniu czy istnieje czy nie, i po uptade w SQL.

a więc :
  1. <?php
  2. $kotek = "kotek";
  3.  
  4. $polaczenie = mysql_connect('xxxx', 'xxxx', 'xxxx') or die('zle haslo i wogole');
  5.  
  6. $baza = mysql_select_db('xxx') or die('zla baza');
  7.  
  8. $query = "SELECT * FROM `tag` WHERE `tag` LIKE '$kotek'";
  9. $result = mysql_query($query);
  10.  
  11.  
  12.  
  13. $ile = mysql_num_rows($result);
  14. $i = 1;
  15. $wiecej = $ile + $i;
  16.  
  17. if($ile == 0) {
  18. $query1 = "INSERT INTO tag SET tag='$kotek', ile='$wiecej'";
  19. $result1 = mysql_query($query1);
  20. } else {
  21. if($ile == 1) {
  22. while($a=mysql_fetch_array($result))
  23. {
  24. $nowe = $a['id'];
  25. }
  26. $query2 = "UPDATE `tag` SET `ile` = '$wiecej' WHERE `tag`.`id` =$nowe";
  27. $result2 = mysql_query($query2);
  28. }
  29. }
  30.  
  31.  
  32.  
  33. mysql_close($polaczenie);
  34. ?>


I tak. Ktos wpisuje frazę, która znajduje się pod zmienną $kotek. Najpierw sprawdzamy czy ktos już wcześniej taką wpisał. Jeżeli nikt, dodajemy nowy wiersz w tabeli w bazie i w kolumnie `tag` jest wpisane słowo które wyszukiwano, a w `ile` jest dodawana wartość 1.

Jeżeli natomiast ktoś już wcześniej ją wpisał, odnajdujemy ID rekordu, które jest w zmiennej $nowe. Potem aktualizujemy w tabeli `tag` w kolumnie `ile` na liczbę większą o jeden w rekordzie o znalezionym ID.

Pierwsza instrukcja warunkowa if smiga ( gdy jeszcze nikt nie wpisał danej frazy ) natomiast nie działa mi ta druga, że dodaje w `ile` liczbę większą o jeden niż jest już wpisana. Powiem szczerze że jeszcze nie wykorzystywałem UPTADE i mogę coś źle wpisywać, ale schemat wg. manuala jest chyba poprawny.

PS. Ja zawsze tak szczegółowo opisuję temat nawet jak jest wiadome wiele rzeczy ( tak jak teraz ) ale czesto podczas pisania napotykam błąd i już wiem co jest źle - w tym przypadku nie wiem winksmiley.jpg

Dziękuję za odpowiedzi.
Maxik
Jeśli chcesz dodać 1 to wystarczy:
  1. UPDATE `tag` SET `ile`=`ile`+1 WHERE `id`='$nowe'
Savage.Mephisto
  1. UPDATE tag SET ile=ile+1 WHERE id=$nowe
TheaSiX
a ja się tak zastanawiam, czy potrzebna jest Ci tam instrukcja WHILE? teoretycznie człowiek wpisze jedno słowo, czyli ID znajdzie jedno, bo przecież nie przetrzymujesz duplikatów, a o wielowyrazowych zapytaniach i ew. explode() nic nie napisałeś, więc wnioskuję, że możnaby to trochę skrócić. Oczywiście nie znam całkowitego przeznaczenia tego skryptu, więc mogę być w błędzie:
  1. <?php
  2. if($ile == 0) {
  3.    $result1 = mysql_query("INSERT INTO tag (`tag`, `ile`) VALUES ('$kotek' , '$wiecej')");
  4. }
  5. elseif($ile == 1) {
  6.    $a=mysql_fetch_array($result)
  7.    $nowe = $a['id'];
  8.    $result2 = mysql_query("UPDATE tag SET ile='$wiecej' WHERE tag=$kotek");
  9. }
  10. ?>


zastanawiałem się czemu w drugim zapytaniu do mysqla masz tag.id = $nowe ?
bialko0019
Poradziłem sobię, bo źle UPTADE wpisywałem. O widzisz, oczywiście TheaSiX tak też dało by radę i krócej jeszcze winksmiley.jpg Dzięki wielkie winksmiley.jpg

Cytat(TheaSiX @ 1.07.2009, 00:34:56 ) *
zastanawiałem się czemu w drugim zapytaniu do mysqla masz tag.id = $nowe ?


Nie byłem pewien co do komendy UPTADE ( zaczynam z nią dopiero ) to w Mysql Admina każdy ruch co robię, jest pokazywany jako zapytanie - było tak tam napisane, ale postanowiłem się tamtym nie kierować i sam dokładnie sprawdziłem i napisałem i już jest dobrze winksmiley.jpg
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.