Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Notice: Undefined index
Forum PHP.pl > Forum > PHP
leikeli
Cześć. Robię właśnie projekt prostego sklepu na zaliczenie przedmiotu na studia.
Mam formularz dodania produktu:
  1. <?php
  2. REQUIRE("config3prod.php");
  3. $nazwa=$_GET['nazwa'];
  4. $typ=$_GET['typ'];
  5. $dostawca=$_GET['dostawca'];
  6. $cena=$_GET['cena'];
  7.  
  8. $sql = mysqli_query($link, "INSERT INTO produkty (id,nazwa,typ,dostawca,cena) VALUES ('','$nazwa','$typ','$dostawca','$cena')");
  9.  
  10. echo "Wprowadzono poprawny rekord z danymi:"."<br>";
  11. echo "<b>"."NAZWA PRODUKTU:"."</b> "."$nazwa"."<br>";
  12. echo "<b>"."TYP:"."</b> "."$typ"."<br>";
  13. echo "<b>"."DOSTAWCA:"."</b> "."$dostawca"."<br>";
  14. echo "<b>"."CENA:"."</b> "."$cena"."<br>";
  15.  
  16. $link->close();
  17. ?>


a plik config3prod.php wygląda następująco:

  1. <?php
  2. include("config.php");
  3. $zapytanie = mysqli_query($link,"SELECT id, nazwa, typ, dostawca, cena FROM produkty");
  4. echo "<TABLE BORDER=2><TR><TD><b><i>id</i></b></TD><TD><b><i>nazwa</i></b></TD><TD><b><i>typ</i></b></TD><TD><b><i>dostawca</i></b></TD><TD><b><i>cena</i></b></TD>";
  5. while (list($id, $nazwa, $typ, $dostawca, $cena)=mysqli_Fetch_Row($zapytanie)){
  6. echo"<TR><TD>$id</TD><TD>$nazwa</TD><TD>$typ</TD><TD>$dostawca</TD><TD>$cena</TD></TR>";
  7. }
  8. print "</TABLE>";
  9. mysqli_free_result($zapytanie);
  10. ?>


Przy nacisnięciu dodaj w formularzu, dodaje pusty rekord do bazy i wyświetla powiadomienia:

Notice: Undefined index: nazwa in C:\xampp\htdocs\abc\dodajprod.php on line 3

Notice: Undefined index: typ in C:\xampp\htdocs\abc\dodajprod.php on line 4

Notice: Undefined index: dostawca in C:\xampp\htdocs\abc\dodajprod.php on line 5

Notice: Undefined index: cena in C:\xampp\htdocs\abc\dodajprod.php on line 6

Czy moglibyście spróbować mi pomóc w czym leży problem?
dublinka
  1.  
  2. if(isset($_GET['nazwa']) && isset($_GET['dostawca']) && isset($_GET['cena']) && isset($_GET['typ']){
  3.  
  4. $nazwa=$_GET['nazwa'];
  5. $typ=$_GET['typ'];
  6. $dostawca=$_GET['dostawca'];
  7. $cena=$_GET['cena'];
  8. }
leikeli
Cytat(dublinka @ 18.01.2020, 16:43:42 ) *
  1.  
  2. if(isset($_GET['nazwa']) && isset($_GET['dostawca']) && isset($_GET['cena']) && isset($_GET['typ']){
  3.  
  4. $nazwa=$_GET['nazwa'];
  5. $typ=$_GET['typ'];
  6. $dostawca=$_GET['dostawca'];
  7. $cena=$_GET['cena'];
  8. }


Gdy to zrobię to pojawia się błąd: Parse error: syntax error, unexpected '{' in C:\xampp\htdocs\abc\dodajprod.php on line 8
dublinka
Cytat(leikeli @ 18.01.2020, 15:48:19 ) *
Gdy to zrobię to pojawia się błąd: Parse error: syntax error, unexpected '{' in C:\xampp\htdocs\abc\dodajprod.php on line 8

Pisze z palca. Tma jeszcze dodaj jeden nawias na samym koncu

  1. isset($_GET['typ'])) {

Jak to mozliwe ze robisz cos takiego jak sklep a nie wiesz takich podstaw
leikeli
Cytat(dublinka @ 18.01.2020, 16:50:43 ) *
Pisze z palca. Tma jeszcze dodaj jeden nawias na samym koncu

  1. isset($_GET['typ'])) {

Jak to mozliwe ze robisz cos takiego jak sklep a nie wiesz takich podstaw


Ponieważ jest to jak zaznaczyłem projekt na zaliczenie przedmiotu, a nie prawdziwy sklep tongue.gif

Teraz nie pojawia się już Notice ale nadal dodaje sie tylko pusty rekord do bazy, zamiast te które zostały wpisane w formularzu
dublinka
Po pierwsze pokaz formularz.
Dane wyswietlaja sie z tych zmiennych ?
leikeli
Cytat(dublinka @ 18.01.2020, 17:02:58 ) *
Po pierwsze pokaz formularz.
Dane wyswietlaja sie z tych zmiennych ?


O bardzo dziękuje, to właśnie w formularzu był głupi błąd!
Już wszystko działa jak należy.
vokiel
W PHP 7 możesz wykorzystać "null coalescing operator":

  1. // Brak spacji między ? ? (dodałem bo edytor zamienia to na emoji)
  2. $nazwa = $_GET['nazwa'] ? ? 'brak nazwy';
  3. $typ = $_GET['typ'] ? ? 'brak typu';
  4. $dostawca = $_GET['dostawca'] ? ? 'brak dostawcy';
  5. $cena = $_GET['cena'] ? ? 'brak ceny';
  6.  
  7. // Co jest równoważne z:
  8. $nazwa = isset($_GET['nazwa']) ? $_GET['nazwa'] : 'brak nazwy';
Tomplus
@vokiel
Spokojnie można używać ?? bez zamiany na emotę, wystarczy wyłączyć uśmieszki przed dodaniem odpowiedzi

  1. $nazwa = $_GET['nazwa'] ?? 'brak nazwy';
  2. $typ = $_GET['typ'] ?? 'brak typu';
  3. $dostawca = $_GET['dostawca'] ?? 'brak dostawcy';
  4. $cena = $_GET['cena'] ?? 'brak ceny';
  5.  
  6. // Co jest równoważne z:
  7. $nazwa = isset($_GET['nazwa']) ? $_GET['nazwa'] : 'brak nazwy';
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.