Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] skrypt tagow
bialko0019
post 30.06.2009, 23:05:14
Post #1





Grupa: Zarejestrowani
Postów: 294
Pomógł: 4
Dołączył: 19.12.2008

Ostrzeżenie: (0%)
-----


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.


--------------------
---
"kto pyta ten nie błądzi"...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Maxik
post 30.06.2009, 23:10:15
Post #2





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Jeśli chcesz dodać 1 to wystarczy:
  1. UPDATE `tag` SET `ile`=`ile`+1 WHERE `id`='$nowe'


Ten post edytował Maxik 30.06.2009, 23:32:11


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
Savage.Mephisto
post 30.06.2009, 23:14:39
Post #3





Grupa: Zarejestrowani
Postów: 122
Pomógł: 11
Dołączył: 24.01.2008

Ostrzeżenie: (0%)
-----


  1. UPDATE tag SET ile=ile+1 WHERE id=$nowe


--------------------
Myślisz, że przeżyjesz swoje życie w blasku i chwale...
Lecz jest coś, co zmieni ci cały świat...
Szczerość!
Go to the top of the page
+Quote Post
TheaSiX
post 30.06.2009, 23:34:56
Post #4





Grupa: Zarejestrowani
Postów: 110
Pomógł: 10
Dołączył: 3.09.2006
Skąd: Bishop Auckland

Ostrzeżenie: (0%)
-----


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 ?

Ten post edytował TheaSiX 30.06.2009, 23:35:54
Go to the top of the page
+Quote Post
bialko0019
post 1.07.2009, 00:46:56
Post #5





Grupa: Zarejestrowani
Postów: 294
Pomógł: 4
Dołączył: 19.12.2008

Ostrzeżenie: (0%)
-----


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

Ten post edytował bialko0019 1.07.2009, 00:47:56


--------------------
---
"kto pyta ten nie błądzi"...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 23:02