Eroare Undefined index si utilizare subcategorii

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
alexinio3d
Mesaje:96

Eroare Undefined index si utilizare subcategorii

Salutare.
Imi puteti spune cu ce am gresit la scrierea acestui script ?

Cod: Selectaţi tot

<?php
$display_block = "<h1>My Categories</h1>
<p>Select a category to see its items.</p>";

//Prezinta pentru inceput categoriile
$get_cats = "select * from store_categories";
$get_cats_res = mysql_query($get_cats) or die (mysql_error());

if (mysql_num_rows($get_cats_res) < 1 ) {
$display_block = "<p><em>Sorry, no categories to brouwse.</em></p>";
}
else {
while ( $cats = mysql_fetch_array($get_cats_res)) {
    $cat_id = $cats['id'];
    $cat_title = strtoupper(stripslashes($cats['cat_title']));
    $cat_desc = stripslashes($cats['cat_desc']);

    $display_block .= "<p><strong><a href=\"$_SERVER[PHP_SELF]?cat_id=$cat_id\">$cat_title.</a></strong>
    <br />$cat_desc</p>";
    if ($_GET['cat_id'] == $cat_id) {
    // preia prdousele
    $get_items = "select * from store_items where cat_id = $cat_id";
    $get_items_res = mysql_query($get_items) or die (mysql_error());
    if (mysql_num_rows($get_items_res) < 1 ) {
    $display_block = "<p><em>Sorry, no items in this category.</em></p>";
    }
    else {
        while ( $items = mysql_fetch_array($get_items_res)) {
            $item_id = $items['id'];
            $item_title = stripslashes($items['item_title']);
            $item_price = $items['item_price'];
        }
        $display_block .= "<a href=\"showitem.php?item_id=$item_id\">$item_title</a> ($item_price)";
    }
}
}
}
echo $display_block;
?>
Acest script permite vizualizarea categoriilor .
Cand accesez pagina seestore.php imi da aceasta observatie:

Cod: Selectaţi tot

Notice: Undefined index: cat_id in C:\xampp\htdocs\magazin\include\seestore.php on line 21
Si mai am inca o intrebare .
As dori sa stiu cum sa fac subcategorii la categoriile mele.
Adica am categoriile

Cod: Selectaţi tot

MOBILIER EXTERIOR. 
CONSTRUCTII. 
LOCURI JOACA. 
MOBILIER INTERN. 
MAGAZIN ONLINE.
Iar la categoriile

Cod: Selectaţi tot

MOBILIER EXTERIOR. 
CONSTRUCTII. 
LOCURI JOACA. 
MOBILIER INTERN. 
As dori sa pun alte categorii ca de exemplu :
Cat. MOBILIER EXTERIOR sa contina urmatoarele categorii -

Cod: Selectaţi tot

Leagane
Mese, scaune
Banci
Cat. Locuri de Joaca sa contina urmatoarele categorii -

Cod: Selectaţi tot

Topogan + leagan
Trenulet
Diverse
s.a.m.d.
Si la randul lor aceste subcategorii cu Leagane, Mese,scaune, Banci etc sa contina si ele alte subcategorii :) si tot asa.
Baza de date miam creato cam asa .

Cod: Selectaţi tot

CREATE TABLE `store_categories` (
  `id`         INT     (11)  NOT NULL auto_increment,
  `cat_title`       VARCHAR (50)  unique,
  `cat_desc`         text,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM CHARSET=utf8 COLLATE=utf8_unicode_ci;
As dori sa nu am nustiu cate tabele pentru fiecare subcategorie :) .

Si acuma sa va spun eu cum mam gandit..
Mam gandit sa mai adaug inca un rand in tabelu "store_categories" a bazei de date pe care sa-l numesc "cate_id" si in care sa introduc id de la categoria mama :), dar faza ii ca nu stiu cum sa pun in script acesta parte.
Siteuri create / configurate de mine :
SilvoProject.Ro ( Magazin Online ) : SilvoProject.Ro
TreiSute.Ro ( Comunitate de gaming ) : TreiSute.Ro

MarPlo Mesaje:4343
Eroarea "Undefined index ..." apare can se acceseaza un element dintr-un array cu un index care nu exista in acel array.
In codul de sus, probabil $_GET nu are un element cu 'cat_id'. Asta fiindca in adresa URL de accesare a scriptului nu e: "...php?cat_id=unID".
Ca sa nu mai apara eroarea, se verifica cu isset() existenta variabilei, cam asa:

Cod: Selectaţi tot

if(isset($_GET['cat_id']) && $_GET['cat_id'] == $cat_id) {
  // ...
}
- Pentru a crea subcategorii la o categorie, trebuie legate /relationate printr-un ID.
Ca idee, se creaza un tabel cu categoriile, fiecare categorie cu ID unic. Si un alt tabel pentru subcategorii, cu o coloana unde se adauga id-ul categoriei careia ii apartiene din primul tabel.
Iar pentru a selecta subcategoriile unei anumite categorii, se face un Select asa:

Cod: Selectaţi tot

SELECT * FROM tabel_subcategorii WHERE id_categ = (SELECT id_categ FROM tabel_categorii WHERE id_categ = $acel_id LIMIT 1)

alexinio3d Mesaje:96
Ok am inca o intrebare la ceea ce ai zis.
Am urmatoarele categorii :

Cod: Selectaţi tot

Mobilier Exterior - Leagane - Model 1 - Produsele ( leagan 1 Model 1, leagan 2 Model 1, leagan 3 Model 1 etc. )
                                         - Model 2 - Produsele ( leagan 1 Model 2, leagan 2 Model 2, leagan 3 Model 2 etc. )
                                         - Model 3 - Produsele ( leagan 1 Model 3, leagan 2 Model 3, leagan 3 Model 3 etc. )
                         - Mese, scaune - Patrate - Produsele ( Mese, scaune1 Patrate, Mese, scaune 2 Patrate, Mese, scaune 3 Patrate etc. )
                                                - Dreptunghiular - Produsele ( Mese, scaune 1 Dreptunghiular, Mese, scaune 2 Dreptunghiular, Mese, scaune 3 Dreptunghiular etc. )
                                                - Rotunde - Produsele ( Mese, scaune 1 Rotunde, Mese, scaune 2 Rotunde, Mese, scaune 3 Rotunde etc. )
                         - Banci
Magazin Online
As vrea ca atunci cand dai pe categoria "magazin online" sa te trimita la o pagina cu ce produse exista pe stoc la ora actuala , cand dai pe "bancii" sa te trimita la fel la o pagina care sa arate modelele de banci care le face firma , si cand dai la "mese, scaune / leagane" sa te trimita la o pagina unde sa-ti dea subcategoriile acelor categorii si cand alegi o subcategoriie de la categoriile din "Leagane / Mese, scaune" sa-ti dea toate produsele care-s puse la categoriia aleasa.

Acuma ce vreau sa spun .
Cum as putea creea baza de date ca sa-mi iasa asa ceva si cum sa fac relatia sa functioneze cum doresc .
Sper ca m-am facut inteles .

O seara buna si La multi ani!
Siteuri create / configurate de mine :
SilvoProject.Ro ( Magazin Online ) : SilvoProject.Ro
TreiSute.Ro ( Comunitate de gaming ) : TreiSute.Ro

Subiecte similare