Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Błąd: Undefined index i chyba złe zapytanie, Na innych podstronach działa bez problemu
flagoon
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 11.03.2008

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


Cześć, nie mam pojęcia co jest nie tak. Na dwóch podstronach mam zapytanie "SELECT" do bazy. Jeden działa bez problemu, drugi nie. Sprawdziłem wszystko jak leci i nie mogę dopatrzyć się błędu:

  1. <?php
  2. include("polacz.inc.php"); //tutaj wszystko jest ok
  3. ini_set('display_errors', 1);
  4. if(isset($_GET['id']))
  5. {
  6. $masz_id = $_GET['id'];
  7. }
  8. else
  9. {
  10. header("Location: wypisz_admin.php");
  11. }
  12.  
  13. //ten if działa poprawnie, nie ma id to przenosi na wypisz_admin.php, jest to przy
    pisuje
  14.  
  15. $a = "SELECT * FROM maszyna where id_masz=$masz_id";
  16. $b = mysql_query($a) or die(mysql_error()); 
  17.  
  18. /*
  19. mysql_error() nie pokazuje żadnego błędu, ale jestem niemal pewien, że coś tutaj się syp
    ło. 
  20. Nie mam tylko pojęcia co. 
  21. */
  22.  
  23. $c = mysql_fetch_array($b);
  24. print("$_GET[id], $masz_id, $c[m_prod]");
  25.  
  26. /*
  27. ta linijka jest dla sprawdzenia. Wyświetla poprawnie 2 pierwsze wartości ($_GET[i]d] oraz $masz_id), 
  28. nie wyświetla $c[m_prod]. Zamiast tego wyświetla "Undefined index: m_prod".
  29. */
  30.  
  31. session_register("m_prod", "m_model", "year", "type", "info", "price");
  32. $_SESSION['m_prod']=$c['m_prod'];
  33. $_SESSION['m_model']=$c['m_model'];
  34. $_SESSION['year']=$c['year'];
  35. $_SESSION['type']=$c['type'];
  36. $_SESSION['info']=$c['info'];
  37. $_SESSION['price']=$c['price'];
  38. print("$_SESSION[m_prod], $_SESSION[m_model]")
  39.  
  40. /*
  41. w każdej linijce tutaj (oprócz sesion_register()) wyświetla ten sam błąd 
  42. (właściwie po angielsku nazywają to notice) co wyżej. Print niczego nie wyświetla. 
  43. */
  44. ?>


Co do samych błedów, to działa to trochę dziwnie. Jeżeli w zmiennej $_GET[id] prześlę wartość która jest w bazie, wtedy mam kilka błędów "Undefined index:". Jeżeli wprowadzę zmienną, której w bazie nie ma, nie wyświetla mi żadnych błędów (ale w linijkach sprawdzających nie wyświetla żadnych zmiennych.

Jak pisałem mam podobny kawałek kodu na innej podstronie i tam wszystko działa ok (SELECT wyświetla wszystkie maszyny z bazy). Nazwy kolumn i zmiennych są ok. Podejrzewam, że coś jest nie tak w zapytaniu mysql, ale jak napisałem, mysql_error() nie wyświetla żadnych błędów.
Go to the top of the page
+Quote Post
kossa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


Źle:

print("$_GET[id], $masz_id, $c[m_prod]");

Dobrze:

  1. <?php
  2. print($_GET["id"].", $masz_id, ".$c["m_prod"]);
  3. ?>



Źle:
print("$_SESSION[m_prod], $_SESSION[m_model]")

Dobrze:
  1. <?php
  2. print($_SESSION["m_prod"].", ".$_SESSION["m_model"]);
  3. ?>



to: print($_SESSION["m_prod"].", ".$_SESSION["m_model"]); nic nie wyświetli bo zmienne w sesji będą dop. widoczne po przeładowaniu strony.

Łukasz


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #3





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




@kossa napisze po Twojemu:
źle: cały twoj post powyzej
dobrze: zupelnie nic.
polecam dokladna lekture manuala i pisanie na temat.

@flagoon moze ty poprostu nie masz zadnych rekordow w bazie?
Bo te NOTICE spowodowane są tym, ze albo zapytanie nie zwrocilo ci zadnych rekordow, albo zwrocilo ci rekordy, ale ty odwolujesz sie do pol (indexow), ktorych nie ma. No ale to drugie raczej wykluczam. Chyba wiesz jak nazywaja sie twoje pola w tabeli winksmiley.jpg

edit down: liczb nie bierze sie w apostrofy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
JoShiMa
post
Post #4





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


A może chodzi o brak apostrofów?
  1. "SELECT * FROM maszyna where id_masz='$masz_id'";


--------------------
Go to the top of the page
+Quote Post
flagoon
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 11.03.2008

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


Cytat(kossa @ 2.04.2008, 19:03:04 ) *
Źle: print("$_GET[id], $masz_id, $c[m_prod]");


Dzięki za zwrócenie na to uwagi. Dopiero zaczynam swoją zabawę z PHP, postaram się pamiętać o takich rzeczach. Sprawdzę jeszcze w pracy, może to było problemem (nie, nie pracuję jako programista PHP, uczę się hobbistycznie).

Cytat(nospor @ 2.04.2008, 19:04:58 ) *
@flagoon moze ty poprostu nie masz zadnych rekordow w bazie?
Bo te NOTICE spowodowane są tym, ze albo zapytanie nie zwrocilo ci zadnych rekordow, albo zwrocilo ci rekordy, ale ty odwolujesz sie do pol (indexow), ktorych nie ma. No ale to drugie raczej wykluczam. Chyba wiesz jak nazywaja sie twoje pola w tabeli winksmiley.jpg


W tabeli "maszyna" mam trzy maszyny, każda z nich ma producenta, model i cene (innych pól nie wpisywałem). W $_GET['id'] podaje wartość, która na pewno jest w bazie. Inna podstrona bez problemu je wyświetla. Nie mam problemu z dodaniem maszyny do bazy danych, nie ma problemu, żeby ją wykasować. Jestem pewien że zapytanie nie zwróciło żadnych rekordów, nie wiem tylko dlaczego. Nazwa tabeli oraz kolumn sprawdziłem setki razy.

Cytat(JoShiMa @ 2.04.2008, 19:41:19 ) *
A może chodzi o brak apostrofów?
  1. "SELECT * FROM maszyna where id_masz='$masz_id'";


Sprawdzę to jutro, choć wydaje mi się, że już tego próbowałem.
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 - 04:08