Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] problem z kodem potwierdzajacym
Forum PHP.pl > Forum > Przedszkole
hondek
mam taki kod:
  1. <?php
  2. if(isset($_GET['code_zam'])) {
  3. polacz();
  4. $cod = $_GET['code_zam'];
  5. $zapytanie = "SELECT * FROM zamowienia WHERE code = '".$cod."' ";
  6. $dzialaj = mysql_query($zapytanie);
  7. $row = mysql_num_rows($dzialaj);
  8. if($row) {
  9. $pole = mysql_fetch_assoc($dzialaj);
  10. $zapytanie = "UPDATE zamowienia SET code = '0' WHERE code = '".$cod."' ";
  11. mysql_query($zapytanie);
  12. $code_zam = "Aktywowane";
  13. } else {
  14. $code_zam = "Błędny kod";
  15. }
  16. rozlacz();
  17. }
  18. ?>


I teraz, jeżeli kod znajduje się w bazie zmienia go na '0' i zmienna $code_zam przyjmuje "Błędny kod", gdzie jest problem?
vtuner
Znajdź:

  1. <?php
  2. if($row) {
  3. ?>


zamień na:

  1. <?php
  2. if($row > 0) {
  3. ?>
zakręcony
co robi mysql_num_rows();? zwraca ilość wierszy, tak? 0 też jest ilością, tak? więc if($row) jest zawsze spełnione talk?

rozwiązanie: if($row>0)

edit:
ktos mnie uprzedził, ale nie skasuję, bys wiedział dlaczego nie działało, tak na przyszłośc winksmiley.jpg
l0ud
Ym... Na oko nie jest możliwe to co piszesz, czyli
Cytat
jeżeli kod znajduje się w bazie zmienia go na '0' i zmienna $code_zam przyjmuje "Błędny kod"

za jednym wywołaniem. Sprawdź to dokładniej. Rada vtuner'a jest stosowna ale w tym przypadku raczej nic nie da...

btw.

  1. <?php
  2. $pole = mysql_fetch_assoc($dzialaj);
  3. ?>


a po co to?
hondek
Rozwiązałem to inaczej..
  1. <?php
  2. if(isset($_GET['code_zam'])) {
  3. polacz();
  4. $cod = $_GET['code_zam'];
  5. $zapytanie = "SELECT * FROM zamowienia WHERE code = '".$cod."' ";
  6. $dzialaj = mysql_query($zapytanie);
  7. $row = mysql_num_rows($dzialaj);
  8. if($row) {
  9. $zapytanie = "UPDATE zamowienia SET code = '0' WHERE code = '".$cod."' ";
  10. mysql_query($zapytanie);
  11. rozlacz();
  12. header("Location: index.php?zamowienie_c=1");
  13. } else {
  14. rozlacz();
  15. header("Location: index.php?zamowienie_c=0");
  16. }
  17. }
  18. ?>


To działa poprawnie, w tamtym kodzie nie warunek jest problemem... jakimś cudem kod wykonuje sie 2 razy smile.gif
Bo UPDATE w bazie sie wykonuje winksmiley.jpg a zmienna $code_zam przyjmowała "Błędny kod" dziwne.....

l0ud -> ta linijka nie jest potrzbna winksmiley.jpg fakt winksmiley.jpg
l0ud
Jeżeli wykonuje się dwukrotnie, to powiedzmy szczerze... nie jest dobrze. Pewnie i header wysyła się teraz 2 razy.
Proponuję szukać przyczyny takiego stanu rzeczy, może daj więcej kodu (który dołącza ten)?
hondek
to plik code_zam.php:
  1. <?php
  2. if(isset($_GET['code_zam'])) {
  3. polacz();
  4. $cod = $_GET['code_zam'];
  5. $zapytanie = "SELECT * FROM zamowienia WHERE code = '".$cod."' ";
  6. $dzialaj = mysql_query($zapytanie);
  7. $row = mysql_num_rows($dzialaj);
  8. if($row) {
  9. $pole = mysql_fetch_assoc($dzialaj);
  10. $zapytanie = "UPDATE zamowienia SET code = '0' WHERE code = '".$cod."' ";
  11. mysql_query($zapytanie);
  12. rozlacz();
  13. header("Location: index.php?zamowienie_c=1");
  14. } else {
  15. rozlacz();
  16. header("Location: index.php?zamowienie_c=0");
  17. }
  18. }
  19. ?>


i ten plik includuje na samym początku w index.php :/

a tak btw. zakrecony :
Wydaje mi sie, ze nie masz racji:) if($zmienna) sprawdzy czy $zmienna jest true czy false, wartosci inne od 0 to true a 0 to false... wiec twoja teoria chyba nie jest poprawna.
l0ud
Zakomentuj te headery i przed pierwszym warunkiem dodaj echo '1';
Jeżeli w wyniku otrzymasz 11, pokaż index.php...
zakręcony
@hondek, oczywiście masz rację, zakręciłem się winksmiley.jpg
hondek
@l0ud więc tak :
  1. <?php
  2. if(isset($_GET['code_zam'])) {
  3. polacz();
  4. $cod = $_GET['code_zam'];
  5. $zapytanie = "SELECT * FROM zamowienia WHERE code = '".$cod."' ";
  6. $dzialaj = mysql_query($zapytanie);
  7. $row = mysql_num_rows($dzialaj);
  8. if($row) {
  9. $pole = mysql_fetch_assoc($dzialaj);
  10. $zapytanie = "UPDATE zamowienia SET code = '0' WHERE code = '".$cod."' ";
  11. mysql_query($zapytanie);
  12. rozlacz();
  13. echo "aktywowane";
  14. //$code_zam = "aktywowane";
  15. //header("Location: index.php?zamowienie_c=1");
  16. } else {
  17. rozlacz();
  18. echo "bledny ok";
  19. //$code_zam = "blędny kod";
  20. //header("Location: index.php?zamowienie_c=0");
  21. }
  22. }
  23. ?>

to wykonuje się ok, natomiast jak odkomentuje $code_zam.... to jak daje echo $code_zam w niżej w index.php wyrzuca bledny kod winksmiley.jpg
l0ud
hondek, czyli co dokładnie zwrócił powyższy kod?
hondek
zauważylem pewną zależność:
jeżeli kod jest taki:
  1. <?php
  2. if(isset($_GET['code_zam'])) {
  3. polacz();
  4. $cod = $_GET['code_zam'];
  5. $zapytanie = "SELECT * FROM zamowienia WHERE code = '".$cod."' ";
  6. $dzialaj = mysql_query($zapytanie);
  7. $row = mysql_num_rows($dzialaj);
  8. if($row) {
  9. $pole = mysql_fetch_assoc($dzialaj);
  10. $zapytanie = "UPDATE zamowienia SET code = '0' WHERE code = '".$cod."' ";
  11. mysql_query($zapytanie);
  12. $code_zam = "Aktywowane";
  13. } else {
  14. $code_zam = "Błędny kod";
  15. }
  16. rozlacz();
  17. }
  18. ?>

działa źle, ale wystarczy ze rozlacze sie z bazą w if i w else... i dziala ok..
  1. <?php
  2. if(isset($_GET['code_zam'])) {
  3. polacz();
  4. $cod = $_GET['code_zam'];
  5. $zapytanie = "SELECT * FROM zamowienia WHERE code = '".$cod."' ";
  6. $dzialaj = mysql_query($zapytanie);
  7. $row = mysql_num_rows($dzialaj);
  8. if($row) {
  9. $pole = mysql_fetch_assoc($dzialaj);
  10. $zapytanie = "UPDATE zamowienia SET code = '0' WHERE code = '".$cod."' ";
  11. mysql_query($zapytanie);
  12. rozlacz();
  13. $code_zam = "Aktywowane";
  14. } else {
  15. rozlacz();
  16. $code_zam = "Błędny kod";
  17. }
  18. }
  19. ?>

i to działa ok.... ale dlaczego...?
l0ud
hondek, pokaż jak deklarujesz tą funkcję rozlacz();
hondek
rzeczywiscie... bardzo mozliwe ze w niej tkwi problem... oto te funkcje :
  1. <?php
  2. function polacz() {
  3. require_once "tajne/setup.inc";
  4. @mysql_connect(host,dblogin,dbhaslo) or die("Nie mozna polaczyc sie z bazz danych");
  5. @mysql_select_db(db) or die("Nie mozna otworzyc bazy danych");
  6. }
  7. function rozlacz() {
  8. }
  9. ?>
zakręcony
jak odnosisz się do code_zam.php, nie jest to w jakiejś pętli?
hondek
@zakrecony
Aż tak bym się w kulki nie zrobił tongue.gif
l0ud
Ponawiam prośbę o test z echo '1'; na samym początku skryptu. Jaki wynik generuje?
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.