Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php] [MySQL] Dwa różne zapytania a identyczny wynik- dlaczego?[rozwiązane]
Forum PHP.pl > Forum > Bazy danych > MySQL
miccom
Witam serdecznie.

Mam następujący problem.


I chcę wydobyć z bazy danych nacje jednostek atakującej o broniącej się.
Stosując zapytanie:

  1. <?php
  2. include("config.php");
  3. //sprawdzamy czy na danych koordach jest jakas jednostka!
  4. $zapytanie="SELECT * FROM jednostki WHERE koord='$koordfin'";//pobieramy dane obrońcy
  5. $wynik=mysql_query($zapytanie);
  6. while($wiersz=mysql_fetch_array($zapytanie))
  7. {
  8. $nacja_obro&#324;cy=$wiersz['nacja'];
  9. }
  10. $cnt = mysql_num_rows(mysql_query($zapytanie));
  11. if($cnt!=0){
  12. //oznacza że pole jest zajęte.
  13. //sprawdzam czy dana jednostka jest jednostka wroga, czy swoją
  14. $query1="SELECT * FROM jednostki WHERE id='$num'";//pobieramy dane atakującego
  15. $resultat=mysql_query($query1);
  16. $linia=mysql_fetch_array($resultat);
  17. $nacja_atakujacego=$linia['nacja'];
  18.  
  19. if($nacja_atakujacego==$nacja_obro&#324;cy){
  20.  echo "Nie możesz atakować jednostek przyjaciela!";
  21. }else{..... //tu instrukcje jeśli jednostki są różnych nacji
  22. ?>


I z obu zapytań otrzymuję identyczny wynik, choć w bazie danych mam różnice.
Jeśli zaatakuję aliantem niemca- otrzymuję komunikat że są to jednostki sprzymierzone i nie mogę ich atakować.
Jak zaatakuję niemcem alianta- otrzymuję ten sam komunikat.
Proszę o wskazanie- gdzie mam błąd.
nospor
  1. <?php
  2. echo "atakujacy: $nacja_atakujacego --- obronca:  $nacja_obrońcy";
  3. ?>

Co ci zwrocilo?
miccom
Jeśli dokonam akcji atakuj aliantem na niemca to otrzymuję:
  1. <?php
  2. echo "atakujacy: alianci --- obronca:  alianci";
  3. ?>


A jak dokonam akcji atakuj niemcem na alianta to otrzymuję:
  1. <?php
  2. echo "atakujacy: niemcy --- obronca:  niemcy";
  3. ?>


Tak jakby jakoś dziedziczyło zmienne... ale nie pasuje mi to bo przecież zapytania odwołują się do tej samej tabeli w bazie- i do tych samych rekordów(nacja) ale przez inne zapytania.
Stąd nawet zrobiłem jedno w pętli, a drugie jako $rows. Ale nawet to nie pomogło.
nospor
oj....
ewidentnie koord='$koordfin'" i id='$num' wskazują na ten sam rekord.
musisz zobaczyc co masz pod $koordfin i $num i skonfrontowac to z bazą
miccom
Doszedłem do tego!

Zmienna $num jest id jednostki atakującej.
Błąd polegał na tym, że przesyłałem id jednostki atakującej metodą GET, i ten sam ID pobierałem z bazy danych ale jako id jednostki broniącej się.
Obie zmienne pod tą samą nazwą. I może dlatego skrypt nie wiedział jaka daną pobrać do przeliczeń.
Dziękuję za zainteresowanie i pomoc. Pozdrawiam.
Dziękuję nospor.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.