Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ PHP _ Notice: Undefined index

Napisany przez: leikeli 18.01.2020, 16:33:57

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. http://www.php.net/echo "Wprowadzono poprawny rekord z danymi:"."<br>";
  11. http://www.php.net/echo "<b>"."NAZWA PRODUKTU:"."</b> "."$nazwa"."<br>";
  12. http://www.php.net/echo "<b>"."TYP:"."</b> "."$typ"."<br>";
  13. http://www.php.net/echo "<b>"."DOSTAWCA:"."</b> "."$dostawca"."<br>";
  14. http://www.php.net/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. http://www.php.net/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. http://www.php.net/echo"<TR><TD>$id</TD><TD>$nazwa</TD><TD>$typ</TD><TD>$dostawca</TD><TD>$cena</TD></TR>";
  7. }
  8. http://www.php.net/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?

Napisany przez: dublinka 18.01.2020, 16:43:42

  1.  
  2. if(http://www.php.net/isset($_GET['nazwa']) && http://www.php.net/isset($_GET['dostawca']) && http://www.php.net/isset($_GET['cena']) && http://www.php.net/isset($_GET['typ']){
  3.  
  4. $nazwa=$_GET['nazwa'];
  5. $typ=$_GET['typ'];
  6. $dostawca=$_GET['dostawca'];
  7. $cena=$_GET['cena'];
  8. }

Napisany przez: leikeli 18.01.2020, 16:48:19

Cytat(dublinka @ 18.01.2020, 16:43:42 ) *
  1.  
  2. if(http://www.php.net/isset($_GET['nazwa']) && http://www.php.net/isset($_GET['dostawca']) && http://www.php.net/isset($_GET['cena']) && http://www.php.net/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

Napisany przez: dublinka 18.01.2020, 16:50:43

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. http://www.php.net/isset($_GET['typ'])) {

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

Napisany przez: leikeli 18.01.2020, 16:55:42

Cytat(dublinka @ 18.01.2020, 16:50:43 ) *
Pisze z palca. Tma jeszcze dodaj jeden nawias na samym koncu

  1. http://www.php.net/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

Napisany przez: dublinka 18.01.2020, 17:02:58

Po pierwsze pokaz formularz.
Dane wyswietlaja sie z tych zmiennych ?

Napisany przez: leikeli 18.01.2020, 17:09:20

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.

Napisany przez: vokiel 18.01.2020, 17:55:35

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 = http://www.php.net/isset($_GET['nazwa']) ? $_GET['nazwa'] : 'brak nazwy';

Napisany przez: Tomplus 18.01.2020, 20:53:56

@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 = http://www.php.net/isset($_GET['nazwa']) ? $_GET['nazwa'] : 'brak nazwy';

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)