 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
mistertavy
Data înscrierii: 05/Mar/2008
Mesaje: 3
|
| Trimis: Joi Mar 06, 2008 11:13 am Titlul subiectului: Problema la afisare. Interogarea? [rezolvat] |
|
|
Dispun de urmatoarea baza de date:
"
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Database: `baza_mea_de_date`
--
-- --------------------------------------------------------
--
-- Table structure for table `categorii_romana`
--
CREATE TABLE `categorii_romana` (
`catID` int(11) NOT NULL auto_increment,
`bigcat` text,
`subcat` text,
`data` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`level` int(11) default NULL,
`parentID` int(11) default NULL,
`poz` int(11) default NULL,
PRIMARY KEY (`catID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=248 ;
--
-- Dumping data for table `categorii_romana`
--
INSERT INTO `categorii_romana` VALUES (247, NULL, 'SUBACATEGORIE AA', '2008-03-06 00:50:31', 2, 244, 2);
INSERT INTO `categorii_romana` VALUES (246, NULL, 'SUBACATEGORIE_A', '2008-03-06 00:50:08', 2, 244, 1);
INSERT INTO `categorii_romana` VALUES (245, 'CATEGORIE_B', NULL, '2008-03-06 00:49:04', 1, 0, 2);
INSERT INTO `categorii_romana` VALUES (244, 'CATEGORIE_A', NULL, '2008-03-06 00:48:58', 1, 0, 1);
-- --------------------------------------------------------
--
-- Table structure for table `indecs`
--
CREATE TABLE `indecs` (
`indexID` int(11) NOT NULL auto_increment,
`lang` text,
`tabel` text,
PRIMARY KEY (`indexID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Dumping data for table `indecs`
--
INSERT INTO `indecs` VALUES (1, 'romana', 'categorii_romana');
-- --------------------------------------------------------
--
-- Table structure for table `produse_romana`
--
CREATE TABLE `produse_romana` (
`produsID` int(11) NOT NULL auto_increment,
`catID` int(11) default NULL,
`subcatID` int(11) default NULL,
`titlu` text,
`descriere` text,
`detalii` text NOT NULL,
`imagine_mica` text,
`imagine_mare` text,
`tiny` text,
`pret` float default NULL,
`val_pret` text,
`promo` text,
`data` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`prettotal` float NOT NULL default '0',
`nbuc` text NOT NULL,
`cant` text NOT NULL,
`poza1_mica` text NOT NULL,
`poza1_mare` text NOT NULL,
`poza2_mica` text NOT NULL,
`poza2_mare` text NOT NULL,
`poza3_mica` text NOT NULL,
`poza3_mare` text NOT NULL,
`poz` text NOT NULL,
`new` text NOT NULL,
PRIMARY KEY (`produsID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=458 ;
--
-- Dumping data for table `produse_romana`
--
INSERT INTO `produse_romana` VALUES (454, 244, 246, 'ARTICOL A01', 'DETALII ARTICOL01', '', '', '', '', 0, '', 'NU', '2008-03-06 00:51:38', 0, '', '', '', '', '', '', '', '', '', '');
INSERT INTO `produse_romana` VALUES (455, 244, 246, 'ARTICOL A02', 'DETALII ARTICOL A02', '', '', '', '', 0, '', 'NU', '2008-03-06 00:51:56', 0, '', '', '', '', '', '', '', '', '', '');
INSERT INTO `produse_romana` VALUES (456, 244, 247, 'ARTICOL AA01', 'DETALII ARTICOL AA01', '', '', '', '', 0, '', 'NU', '2008-03-06 00:52:31', 0, '', '', '', '', '', '', '', '', '', '');
INSERT INTO `produse_romana` VALUES (457, 244, 247, 'ARTICOL AA02', 'DETALII ARTICOL AA02', '', '', '', '', 0, '', 'NU', '2008-03-06 00:52:48', 0, '', '', '', '', '', '', '', '', '', '');
"
In aceasta baza de date adaug :
>>Categorie A
>>>>>>>>Subcategorie A
>>>>>>>>>>>>>>>>>>Articol A01
>>>>>>>>>>>>>>>>>>Articol A02
>>>>>>>>Subcategorie AA
>>>>>>>>>>>>>>>> >>Articol AA01
>>>>>>>>>>>>>>>>>>Articol AA02
>>Categorie B
>>>>>>>>Subcategorie B
>>>>>>>>>>>>>>>>>>Articol B01
>>>>>>>>>>>>>>>> >>Articol B02
>>>>>>>>Subcategorie BB
>>>>>>>>>>>>>>>>>>Articol BB01
>>>>>>>>>>>>>>>>>>Articol BB02
Vreau ca atunci cand accesez Subcategorie A sa afisez ultimul articol adaugat la aceasta subcategorie, respectiv Articol A02
Acum folosesc urmatoarea functie php pentru a afisa ultimul articol din subcategorie
//bloc de cod partial
function afisare_ultimul_articol(){
//$lang=$_GET['lang'];
$lang="romana";
$produsID=$_GET['pID'];
$ID=$_GET['ID'];
$table="produse_".$lang;
con();
$q_sel=mysql_query("SELECT * FROM $table ORDER BY $table . `subcatID` ASC LIMIT 1, 1") or die("eroare");
$r=mysql_fetch_array($q_sel);
}
Dar aici apare problema. Cu aceasta functie realizez sa afisez ultimul articol adaugat doar pentru prima subcategorie
Astfel daca accesez Sucategorie A mi se afiseaza Articol A02 si daca accesez Subcategorie AA mi se afiseaza din nou Articol A02 in loc de Articol AA02.
Ma puteti ajuta cu o solutie/ sugestie. Multumesc anticipat! |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1581
Locație: Sibiu
|
| Trimis: Joi Mar 06, 2008 12:35 pm Titlul subiectului: |
|
|
Normal ca tot pe ala ti-l afiseaza: query-ul tau n-are nici o treaba cu id-ul de categorie. Daca te intereseaza ultimul introdus dintr-o categorie, faci id-ul de produs auto-increment si selectezi cu 'SELECT * FROM $table WHERE subcatID = '$id_categorie' ORDER BY produsID DESC LIMIT 1'
P.S. regandeste-ti structura bazei de date. Ai tone de informatie cel putin redundanta (ca sa nu zic aiurea). De ce iti trebe la categorii si 'bigcat', si 'subcat' si 'parentID' si 'level'? Ajunge un 'nume' si un 'parentID'. Numele nu conteaza daca e de categorie principala sau de subcategorie, tot nume se numeste, iar level ala se stabileste in functie de level-ul categoriei parinte si tot asa pana in varf.
In plus, de ce tii in tabela de produse si catID si subcatID? Se poate sa ai acelasi subcatID pentru alt catID? Daca da, lol. Ajunge catID care sa fie id-ul din tabela de categorii.
Alte sfaturi: nu mai tine imaginile in baza de date. Tine-le numai in filesystem, cu un nume legat de id-ul de produs, iar la afisare verifici cu file_exists() daca fisierul exista pe disc. Daca da, il afisezi intr-un <img>, daca nu nu il afisezi sau pui o imagine de blank in loc. De pe disc se pot sterge, iar codul tau va afisa ce gaseste in baza de date, rezultand, exact, intr-un broken image.
Spor la lucru. |
|
| Sus |
|
mistertavy
Data înscrierii: 05/Mar/2008
Mesaje: 3
|
| Trimis: Joi Mar 06, 2008 9:04 pm Titlul subiectului: Multumesc pentru sfat! |
|
|
| Am urmat sfatul tau si merge acum. Ms mult! Deja incep sa fac o alta baza de date... Tre sa intelegi si tu ca sunt la inceput :p |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1581
Locație: Sibiu
|
| Trimis: Vin Mar 07, 2008 9:39 am Titlul subiectului: |
|
|
| Nu stiu daca ai observat, dar am inteles ca esti la inceput. Din modul in care ai codat si din structura bazei tale de date :P. De-aia mi-am si permis sa iti dau niste sfaturi. Sa nu crezi ca am facut-o din rautate sau ca sa ma dau mare, ci numai ca sa te ajut. |
|
| Sus |
|
mistertavy
Data înscrierii: 05/Mar/2008
Mesaje: 3
|
| Trimis: Vin Mar 07, 2008 5:38 pm Titlul subiectului: pai era normal :D |
|
|
| era normal sa iti dai seama. stiu ca nu ai zis din rautate, ca daca vroiai sa fi rau nici nu mai scriai..:) in orice caz sfaturile tale sunt bine venite. mersi inca o data! |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|