Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]przeszukanie wszystkich rekordów pod kątem danego warunku
agata
post 17.02.2010, 11:10:46
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 4.12.2009

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


Witam,
po raz kolejny proszę o pomoc. Sama nie mogę dojść do tego jak to zrobić.

Mam tabelę Klient i tabelę Samochod.
Klient może mieć parę samochodów. Chcę zrobić usuwanie Klienta, jednak żeby było to możliwe tylko w momencie jeśli samochodu nie ma w warsztacie.

Samochód ma parę stanów (przyjęty, naprawa, naprawiony, wydany).

Ogólnie wiem jak to napisać, nie wiem tylko jak przeszukać rekordy pod kątem danego warunku.

mam coś takiego:

  1. $klient = $_POST['klient'];
  2.  
  3. $query = mysql_query("Select IdSamochodu, Stan, Rejestracja from Samochod Where IdKlienta = '$klient'") or die (mysql_error('Nie mogę wyszukać samochodu wybranego klienta.'));
  4. $ile = mysql_num_rows($query);
  5.  
  6. if ($ile >0)
  7. {
  8. for ($i=0;$i<$ile;$i++)
  9. {
  10. $row = mysql_fetch_array($query);
  11. $stan = $row['Stan'];
  12. $rejestracja = $row['Rejestracja'];
  13.  
  14. }
  15.  
  16. }

Wyciągam wszystkie samochody danego Klienta i teraz nie wiem jak sprawdzić wszystkie wyniki żeby móc usunąć klienta lub nie, mniej więcej coś takiego osiągnąć:
  1. if ($stan != 'wydany') // sprawdzenie czy któryś z samochodów nie został wydany
  2. {
  3. echo 'nie mogę usunąć klienta ....'.$rejestracja; // komunikat + wyświetlenie które auto nie spełnia warunku
  4. }
  5. else
  6. {
  7. $query = mysql_query("Delete Klient.....");
  8. if ($query)
  9. {
  10. echo 'Klient usunięty';
  11. }
  12. }


Bardzo proszę o pomoc, jak przeszukać wszystkie wyniki żeby sprawdzić czy wszystkie auta zostały wydane.
Go to the top of the page
+Quote Post
piotrooo89
post 17.02.2010, 11:18:21
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ustaw klucze obce. bo jak usuniesz klienta to zostaną jakieś wolne samochody nie wiadomo kogo.

Ten post edytował piotrooo89 17.02.2010, 11:19:42


--------------------
Go to the top of the page
+Quote Post
lukaszgolder
post 17.02.2010, 11:18:23
Post #3





Grupa: Zarejestrowani
Postów: 141
Pomógł: 17
Dołączył: 2.04.2008
Skąd: z Zabrza

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


  1. DELETE FROM `Samochod` WHERE `IDKlienta`=6 AND `Stan` = 'wydany'

  1. if(mysql_affected_rows() == 1) {
  2. // usunięto
  3. } else {
  4. // nie usunięto
  5. }
Go to the top of the page
+Quote Post
exood
post 17.02.2010, 11:22:56
Post #4





Grupa: Zarejestrowani
Postów: 86
Pomógł: 16
Dołączył: 2.12.2009
Skąd: Płock/Warszawa

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


hej,
rozumiem, że w tabeli Samochody masz zapisane ID klienta, do którego samochód jest przypisany.
Chcesz usunąć klienta o jakimś ID (dajmy na to 555 winksmiley.jpg ) więc wybierasz z tabeli Samochody
  1. SELECT * FROM samochody WHERE id_klient = 555 AND STATUS <> 'wydany'

jeżeli wynik zwróci 0 rekordów - usuwasz klienta w przeciwnym wypadku masz w wyniku samochody które nie spełniają warunku.
mam nadzieję, że o to chodzi smile.gif
Go to the top of the page
+Quote Post
agata
post 17.02.2010, 12:08:15
Post #5





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 4.12.2009

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


W bazie są klucze obce, także nie ma możliwości że coś zostanie usunięte ot tak.

Nie przypuszczałam że rozwiązanie jest takie proste, wystarczyło tylko dodać and w selecie biggrin.gif

dzięki wielkie smile.gif
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: 14.08.2025 - 06:55