Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Błąd: Undefined index i chyba złe zapytanie
Forum PHP.pl > Forum > Przedszkole
flagoon
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.
kossa
Ź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
nospor
@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
JoShiMa
A może chodzi o brak apostrofów?
  1. "SELECT * FROM maszyna where id_masz='$masz_id'";
flagoon
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.
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.