Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawdzanie duplikatów
rafik73
post
Post #1





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Witam
Mam problem z czujką wykrywającą duplikaty. Dane są zawężane do rekordów o określonej dacie,np:
data 2015-07-20
istnieją rekordy:
1 A B C
2 D E F
3 G H I
gdzie liczby to id_tssk.

$id_tssk to id edytowanego rekordu.
Gdy chcę edytować 1 rekord i zamienić powiedzmy C na F to odpowiedni warunek if powinien to wychwycić (F istnieje w 2 rekordzie)
a tu żaden z warunków nie reaguje i przechodzi do działania 6. Co robię nie tak?

  1. $same_query = mysql_query("SELECT * FROM `tssk` WHERE `data_punktu`='$data_punktu' AND `id_tssk`<>'$id_tssk'") or die('Błąd zapytania');
  2. while($same=mysql_fetch_array($same_query)){
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9. if( warunek 1) {
  10. działanie 1
  11. }
  12.  
  13. elseif(warunek 2) {
  14. działanie 2
  15. }
  16.  
  17.  
  18. elseif( warunek 3) {
  19. działanie 3
  20. }
  21.  
  22. elseif( warunek 4 ) {
  23. działanie 4
  24. }
  25. } // tu się zamyka pętla while
  26.  
  27.  
  28. if (warunek 5) {
  29. działanie 5
  30. }
  31. else
  32. {
  33. działanie 6
  34. }


Mam wrażenie, jakby nie działała pętla while
Zapytanie jest OK,bo testowałem 'echem'
Poprawcie mnie,jeśli się mylę, przebieg tego kodu to:
Zapytanie mysql-jest rekord-warunek1-false-warunek2-false-warunek3-false-warunek4-false i tu pętla
i kolejne zapytanie. Jeśli któryś z warunków od 1 do 4 true to odpowiednie działanie. Jeśli pętla
się zakończy (koniec rekordow), to wtedy przejście do warunku 5.

Ten post edytował rafik73 21.07.2015, 20:38:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


To co napisałeś jest poprawne ale nie możemy ci pomóc znając "(...) warunek X, działanie X". Daj prawdziwy kod, najlepiej z przykładowymi danymi wejściowymi (data, id_tssk)
Go to the top of the page
+Quote Post
rafik73
post
Post #3





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


  1. $data_punktu=$_GET['data_punktu'];
  2. $nr_punktu=$_GET['nr_punktu'];
  3. $student=$_GET['student'];
  4. $nr_lekcji=$_GET['nr_lekcji'];
  5. $pomoc=$_GET['pomoc'];
  6. $ocena=$_GET['ocena'];
  7. $uwagi=$_GET['uwagi'];
  8. $id_tssk=$_GET['id_tssk'];
  9.  
  10.  
  11.  
  12. $tobigpoint="Komunikat 1";
  13. $samepunkt="Komunikat 2";
  14. $samestudent="Komunikat 3";
  15. $samepomoc="Komunikat 4";
  16.  
  17. $same_query = mysql_query("SELECT * FROM `tssk` WHERE `data_punktu`='$data_punktu' AND `id_tssk`<>'$id_tssk'") or die('Błąd zapytania');
  18. while($same=mysql_fetch_array($same_query)){
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25. if( $nr_punktu > 3) { //numer punktu max 3
  26. header( 'Location:../tssk/tssk_bydate_edit_same.php?id_date='.$data_punktu.'&same='.$tobigpoint.'' ) ;
  27. }
  28.  
  29. elseif( $same['nr_punktu'] == $nr_punktu) { // numer punktu nie może się powtórzyć
  30. header( 'Location:../tssk/tssk_bydate_edit_same.php?id_date='.$data_punktu.'&same='.$samepunkt.'' ) ;
  31. }
  32.  
  33.  
  34. elseif( $same['student'] == $student) { //student nie może się powtórzyć
  35. header( 'Location:../tssk/tssk_bydate_edit_same.php?id_date='.$data_punktu.'&same='.$samestudent.'' ) ;
  36. }
  37.  
  38. elseif( $same['pomoc'] == $pomoc AND $same['pomoc'] <> 1 ) { //pomocnik nie może się powtórzyć
  39. header( 'Location:../tssk/tssk_bydate_edit_same.php?id_date='.$data_punktu.'&same='.$samepomoc.'' ) ;
  40. }
  41. }
  42.  
  43.  
  44. if (empty($data_punktu) OR empty($nr_punktu) OR empty($nr_lekcji)) { //czujka pustych pól
  45. header( 'Location:../tssk/tssk_bydate_edit_empty.php?id_date='.$data_punktu.'' ) ;
  46. }
  47. else
  48. {
  49. mysql_query("SET NAMES 'utf8'");
  50.  
  51. mysql_query("UPDATE `tssk` SET `data_punktu`='$data_punktu',`nr_punktu`='$nr_punktu',`lekcja`='$nr_lekcji',`pomoc`='$pomoc',`ocena`='$ocena',`tssk_uwagi`='$uwagi',`student`='$student' WHERE `id_tssk`='$id_tssk'")
  52. or die('Błąd ania');
  53. header( 'Location:../tssk/tssk_bydate_edit_confirm.php?id_date='.$data_punktu.'' ) ;
  54. }


Formularz wyświetla 3 rekordy
Go to the top of the page
+Quote Post
CuteOne
post
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Zmień mysql_fetch_array() na mysql_fetch_assoc()
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




@CuteOne to nie ma znaczenia... zajrzyj do manuala

@rafik niestety strasznie namotales w tym kodzie
1) Samo wywolanie header nie powoduje zakonczenia dzialania kodu. Tak ze ten Twoj kod moze na dobrą sprawę wygenerować 100 header za jednym zamachem. Jesli chcesz by header konczyl sprawe to musisz wykonac EXIT.
2) Sprawdz w ogole jakie sa DOKLADNIE wartosci ktore sprawdzasz w warunkach a bedziesz wiedzial czemu ci do jednego warunku wchodzi a do innego nie. To są naprawde proste sprawy
3) Tu masz całą masę przydatnych wskazowek ktore masz zrobic
Temat: Jak poprawnie zada pytanie

4) `id_tssk`<>'$id_tssk'
Jak rozumiem id to liczba wiec tak ma byc
`id_tssk`<>$id_tssk
Odrozniaj teksty od liczby
Go to the top of the page
+Quote Post
rafik73
post
Post #6





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


nospor jak zwykle niezawodny (IMG:style_emoticons/default/biggrin.gif)
Dzięki serdeczne. Powiem ci, że zajmuję się programowaniem (w moim przypadku to brzmi dumnie (IMG:style_emoticons/default/sleep.gif) )
z zamiłowania i z doskoku, na miarę potrzeb przy chronicznym
braku czasu. Ale mam parcie i to lubię i nic na to nie poradzę.
Stąd te luki w podstawach. Z góry przepraszam za amatorszczyznę, cały czas się uczę
i obiecuję poprawę. (IMG:style_emoticons/default/php.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.12.2025 - 10:44