Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> warunek IF, jak sprawdzić
michal_robak
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 13.05.2006

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


Witam ponownie.Mam mały problem.Potrzebuje jedenej rzeczy do mojego skryptu.Sprawa ma sie tak:
Mamy np jedną tabele o nazwie tytul z dwoma polami id oraz tytul i w niej takie trzy wartości:
id | tytul
1 | obcy
2 | star wars
3 | matrix

No i teraz moje zapytanie.Chcem zrobić coś takiego że wpierw wydam zapytanie :
select *from tytul where tytul='obcy';
i teraz chcem wprowadzić warunek który wpierw sprawdzi czy jest taki tytul o nazwie 'obcy' i jeżeli tak to niech wypisze np echo 'juz istnieje' (bez wypisywania tej linii z 'obcym') a jeżeli nie to niech doda kolejne zapytanie:
insert into tytul(tytul) values ('obcy');
Jest możliwość żeby zrobić coś takiego (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) .


Oraz druga opcja
Chcem po prostu dodać do tabeli wartość :
insert into tytul(tytul) values ('obcy');
i tu wyskoczy komunikat :
duplicate key violates unique constraint ....
ponieważ już taka wartośći istnieje.No i teraz podobnie jak poprzednio jeżeli istnieje to niech wypisze ze juz taka wartość jest a jeżeli nie to niech ją doda.Mam nadzieje że wszystko jasne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Sam za bardzo nie wiem jak zrobić ten warunek żeby sprawdził czy to istnieje czy nie:(.A do mojego skryptu potrzebuje troche bardziej zaawansowanego zapytania ale jeżeli bede wiedział jak zrobić tą rzecz to z tamta sobie poradze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .

--------------------------------------------------------
w wolnych chwilach --------> (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif) (IMG:http://forum.php.pl/style_emoticons/default/cool.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
MalyKazio
post
Post #2





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Zgodnie z moją skromną wiedzą na temat php to byłoby jakoś tak:

  1. <?php
  2. /* $_POST bo pewnie przez jakiś formularz mialoby isc zapytanie */
  3. $zapytanie = 'SELECT * FROM tytuly WHERE tytul="'.$_POST['tytulfilmu'].'"';
  4. $wykonaj = mysql_query($zapytanie);
  5. $znaleziono = mysql_num_rows($wykonaj);
  6. if ($znaleziono == 0) {
  7. $dodajemy = "INSERT into tytul(tytul) VALUES ('$_POST[tytulfilmu]');"
  8. $wykonaj = mysql_query($dodajemy);
  9. } else {
  10. echo "Tytul juz istnieje";
  11. }
  12. ?>


To tak na moj chlopski rozum i zgodnie z moja skromna wiedza
Go to the top of the page
+Quote Post
michal_robak
post
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 13.05.2006

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


Wielkie dzieki o to mi chodziło.Było parę błędów w kodzie ale t mały pryszcz był (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .
Oto jak wygląda kod po zamianie:

  1. <?php
  2. $zapytanie = "SELECT * FROM tytul WHERE tytul='".$_POST['pole2']."'";
  3. $wykonaj = pg_query($zapytanie);
  4. $znaleziono = pg_num_rows($wykonaj);
  5. if ($znaleziono == 0) {
  6. $dodajemy = "INSERT into tytul(tytul) VALUES ('".$_POST['pole2']."')";
  7. $wykonaj = pg_query($dodajemy);
  8. } else {
  9. echo "Tytul juz istnieje";
  10. }
  11. ?>


zamieniłem tam jak widzisz mysql na pg ponieważ były błędy.Wie ktos moze co oznacza taki błąd:
  1. Warning: pg_query(): Query failed: ERROR: syntax error at or near "Resource" at character 1 in c:\usr\krasnal\www\bazy\dodaj2.php on line 69


Wielkie dzieki za info jak to zrobić (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif)
Go to the top of the page
+Quote Post
MalyKazio
post
Post #4





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Proszę bardzo, czasem może zdaży mi się komuś pomóc zamiast samemu ciągle prosić o pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Co do zmiany na pg_query to to akurat chyba kwestia rodzaju uzywanej bazy danych (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
thornag
post
Post #5





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

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


Ja bym jeszcze przeksztalcil pierwsze zapytanie na takie za COUNT zeby nie trzeba bylo wywolywac mysq_num_rows. Ot kosmetyka/optymalizacja.
Go to the top of the page
+Quote Post
michal_robak
post
Post #6





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 13.05.2006

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


Mówisz zmienić na conut.Nie używałem tej komendy wcześniej ale jak teraz sobie przejrzałem co to jest to może i spróbuje coś zmienić.Ale nie wiem czy będe używać komend których mój prowadzący zajęcia nie umie hehe.

-----------------------------------------------
w wolnych chwilach ----> (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)
Go to the top of the page
+Quote Post
michal_robak
post
Post #7





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 13.05.2006

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


Jeszcze mam jedno pytanie.Nie bede zakładać nowego wątku więc skorzystam z tego.
Mamy taka tabele (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (pole id to bigserial,czyli automatycznie dodaje kolejne numery id-ów):
id | tytul
1 | obcy
2 | star wars
3 | matrix

Teraz jak cos do niej dodam polecenie
  1. <?php
  2. insert into tytul(tytul) values ('kiler');
  3. ?>


to doda sie czwarty wiersz
4 | kiler
No i teraz jak go usune i ponownie wpisze to polecenie
  1. <?php
  2. insert into tytul(tytul) values ('kiler');
  3. ?>

to doda mi sie
5 | kiler
i cala tabela tygląda tak:
id | tytul
1 | obcy
2 | star wars
3 | matrix
5 | kiler

Czy da sie zrobić coś żeby on dodawał te liczby w kolejności jakie są już dodane a nie jakie były wcześniej dodawane.Bo jak widać pozostaje puste miejsce miedzy id 3 a 5(a chcesz żeby zamiast tej 5 była 4).Nie wiem czy jest to jasne co mówie bo nie wiem jak to omówić (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .
Go to the top of the page
+Quote Post
mike
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Zmuszanie bazy do indeksowania po kolei to głupota.
Działanie wbrew ideii relacyjności baz.
Chociaż można to zrobić, musiałbyś zdjąć auto_increment z tego pola a przy każdej operacji na tej tabeli (INSERT) uruchamiać wcześniej napisanego triggera, który sam obliczy nowe id

Ale i tak musisz wiedzieć że to głupota. Nierób tak.

Pownieneś raczej inaczej zroganizować sowją aplikację niż zmuszać bazę do tego.
Go to the top of the page
+Quote Post
michal_robak
post
Post #9





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 13.05.2006

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


aha ok dzieki za info (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .Temat zamknięty w takim razie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 17:00