Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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 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 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 smile.gif.

--------------------------------------------------------
w wolnych chwilach --------> guitar.gif cool.gif


--------------------
do wszystkiego trzeba podejść z głową a problem sam się rozwiąże
Go to the top of the page
+Quote Post
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


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
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ł 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ć exclamation.gif


--------------------
do wszystkiego trzeba podejść z głową a problem sam się rozwiąże
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 smile.gif
Co do zmiany na pg_query to to akurat chyba kwestia rodzaju uzywanej bazy danych smile.gif


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
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.


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

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 ----> guitar.gif


--------------------
do wszystkiego trzeba podejść z głową a problem sam się rozwiąże
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 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ć smile.gif.


--------------------
do wszystkiego trzeba podejść z głową a problem sam się rozwiąże
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 smile.gif.Temat zamknięty w takim razie smile.gif


--------------------
do wszystkiego trzeba podejść z głową a problem sam się rozwiąże
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 Aktualny czas: 19.08.2025 - 20:10