Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] kategorie - sklep internetowy
Forum PHP.pl > Forum > Przedszkole
FliSs_tCv
Witam serdecznie wszystkich forumowiczów smile.gif

chciałbym prosić was o pomoc w napisaniu skryptu badz pomocy w rozbudowaniu skryptu, który zdołałem znalesc u naszego wujka google link który skieruje nas to topicu na innym forum w którym znalazłem małą podpowiedź lecz nie jest to dla mnie zrozumiałe:( -->Oto ten link <-- oraz link z naszego forum ;] -->Oto on<--

Moja baze stworzyłem w taki sposob :
  1. CREATE TABLE `kategorie` (
  2. `id` int(10) NOT NULL AUTO_INCREMENT,
  3. `kategoria` varchar(50) NOT NULL,
  4. `id_rodzica` int(10) NOT NULL DEFAULT '0',
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=1 ;
tutaj posłuzyłem sie zapytaniem z naszego forum smile.gif

tutaj przedstawiam moją tabele z produktami w której umiesciłem pole id_kategorii które bylo w przykładzie z naszego forum smile.gif
  1. CREATE TABLE `produkty` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `id_kategorii` int(10) NOT NULL,
  4. `nazwa` varchar(200) NOT NULL,
  5. `obrazek` varchar(200) NOT NULL,
  6. `opis` varchar(400) NOT NULL,
  7. `cena` float(7,2) NOT NULL DEFAULT '0.00',
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin2 AUTO_INCREMENT=13 ;


Kod przerobiony z forum --> Oto ten link <--

Ten kod ma jak opisują na forum wyswietlic subkategorie
  1. <?php
  2. mysql_connect('localhost','admin','haslo');//nazwa uzytkownika i haslo do bazy
  3. mysql_select_db('avonshop'); // baza - nazwa bazy danych
  4. if(!isset($_GET['id']))$_GET['id']=0; //tutaj miałybyć 0 biggrin.gif
  5. if(strlen($_GET['id'])>4)$_GET['id']=0; //zeby kto jakiegos numeru nie zrobil;
  6.  
  7. $result = mysql_query('Select * from kategorie where parent='.$_GET['id'].';');
  8.  
  9. if($result){
  10. while(($row = mysql_fetch_array($result))!=null){
  11.  echo '<a href="index.php?id='.$row['id'].'"><b>'.$row['kategoria'].'</b> - '.$row['id_rodzica'].'</a>';
  12.  }
  13. }
  14. ?>
Lecz nie wiem czy dobrze bo nic mi nie wyswietla sadsmiley02.gif

A ten kod z koleii ma wyswietlic jak w tamtym przykladzie opisy a u mnie chciałbym aby wyswietlało produkty
  1. <?php
  2. mysql_connect('localhost','admin','haslo');//nazwa uzytkownika i haslo do bazy
  3. mysql_select_db('avonshop'); // baza - nazwa bazy danych
  4. if(!isset($_GET['id']))$_GET['id']=1;
  5. if(strlen($_GET['id'])>4)$_GET['id']=1; //zeby kto jakiegos numeru nie zrobil;
  6.  
  7. $result = mysql_query('Select * from produkty where catid='.$_GET['id']);
  8.  
  9. if($result){
  10. while(($row=mysql_fetch_array($result))!=null){
  11.  echo '<p>'.$row['nazwa'].'</p>';
  12.  echo '<p>'.$row['obrazek'].'</p>';
  13.  echo '<p>'.$row['opis'].'</p>';
  14.  echo '<p>'.$row['cena'].'</p>';
  15.  
  16. }
  17. }
  18. ?>
tutaj tez nie wiem czy dobrze wprowadzilem zmiany sad.gif Jak wczesniej pisałem nie wiem ocb w tym wiec prosiłbym o jakies sugestie co o tym sadzicie i jakbyscie sami takie cos rozwiązali smile.gif

Teraz na stronie którą robie produkty wyswietlane sa poprostu z tabeli produkty w ten sposob :

--->EDIT <---
Kod który wyswietla wygląda tak ;>
  1. <?php
  2. while($wynik and $dane = mysql_fetch_assoc($wynik)) { // echo $dane["id"], itd... albo foreach($dane as $pole) echo " [$pole] ";
  3. echo "<div style="float : left; width : 250px; font-size : 12px;">
  4. <div style="margin-top : 15px; margin-bottom : 15px;">
  5.  &nbsp;&nbsp;<strong>$dane[nazwa]</strong><br />
  6.  <div style="background : url(img/hr.gif) repeat-x; width : 240px;"> &nbsp;</div>
  7.  <div style="width : 250px; height : 150px;">
  8.  <div style="float : left; width : 100px;">
  9. <img src="$dane[obrazek]" alt=" " border="0" style="float : left;" />
  10. </div>
  11. <div style="float : right; width : 150px;">
  12. $dane[opis]
  13. </div>
  14. </div>
  15. <div style="width : 250px; text-align : center;">
  16. <div style="float : left; width : 125px;">
  17. &nbsp;&nbsp;&nbsp;<strong>Cena: $dane[cena]</strong>
  18. </div>
  19. <div style="float : right; width : 125px;">
  20. &nbsp;&nbsp;&nbsp;<strong><a href="index.php?fhu=koszyk&id=$dane[id]">do koszyka</a></strong>
  21. </div>
  22. </div>
  23. </div>
  24. </div>";
  25. }
  26. ?>

--->END EDIT<---

nie wiem co jescze mógłbym napisac sad.gif
prosze o pomoc w razie jakis pytan oczywiscie zaraz odpisze smile.gif


Czy naprawde nikt nie wie jak mi pomoc sad.gif questionmark.gif
WiTO
Jest wiele sposobów na wyciąganie informacji z mysql za pomocą php, niestety jestem z nich wszystkich tępy... za wyjątkiem jednej niezawodnej.



  1. <?php
  2. mysql_connect('localhost','twój_login','twoje_hasło');
  3. mysql_select_db('avonshop'); 
  4. if(!isset($_GET['id']))$_GET['id']=0; 
  5. if(strlen($_GET['id'])>4)$_GET['id']=0; 
  6.  
  7.  
  8. $zapytanie = 'SELECT * FROM kategorie WHERE id_rodzica='.$_GET[id]; // !!! id_rodzica, a nie parent, tak jak w tabeli !!!
  9.  
  10. $odpowiedz = mysql_query($zapytanie) or die(mysql_error());
  11.  
  12. while ($wiersz = mysql_fetch_array($odpowiedz)) {
  13. extract($wiersz);
  14.  
  15. echo '<a href=index.php?id='.$id.'><b>'.$kategoria.'</b> - '.$id_rodzica.'</a><br>';
  16.  
  17. }
  18.  
  19. ?>


Jak cuś nie pasi to krzyczeć!


A co do reszty to zależy wszystko od tego jak chcesz, żeby to na koniec wyglądało...
Ewentualnie jest sposób pośmigania po innych sklepach w necie i wybór tego, kótry się nam najbałdziej podoba...



EDIT: O żesz! Wpisałem własny login i hasło do serwa haha.gif!
FliSs_tCv
Super kategorie sie wyswietlają a w jaki sposob polączyc produkty z kategorią ?
bo mam juz dodane produkty jak widziałes na obrazku no nie wiem jak je podpiac pod dana kategorie zauszmy (produkty jak najbardziej przykladowowe narazie tongue.gif)

dodam ze pole które dodałem do tabeli z produktami tak jak bylo opisane na przykladzie to id_rodzica no ale nadal nie wiem jak to zalatwic poprzes skrypt cool.gif
WiTO
No ja nie wiem... Chodzi o mniej więcej coś w tym stylu questionmark.gif

  1. <?php
  2. mysql_connect('localhost','konto','hasło');
  3. mysql_select_db('avonshop'); 
  4. if(!isset($_GET['id']))$_GET['id']=0; 
  5. if(strlen($_GET['id'])>4)$_GET['id']=0; 
  6.  
  7.  
  8. $zapytanie = 'SELECT * FROM kategorie WHERE id_rodzica='.$_GET[id]; 
  9.  
  10. $odpowiedz = mysql_query($zapytanie) or die(mysql_error());
  11.  
  12. while ($wiersz = mysql_fetch_array($odpowiedz)) {
  13. extract($wiersz);
  14.  
  15. echo '<a href=index.php?id='.$id.'><b>'.$kategoria.'</b> - '.$id_rodzica.'</a><br>';
  16.  
  17. }
  18. // od tgo miejsca zaczynamy wyświetlać produkty
  19.  
  20. echo '<br><br>Produkty:<br>';
  21.  
  22.  
  23. $zapytanie = 'SELECT * FROM produkty WHERE id_kategorii='.$_GET[id]; 
  24.  
  25. $odpowiedz = mysql_query($zapytanie) or die(mysql_error());
  26.  
  27. while ($wiersz = mysql_fetch_array($odpowiedz)) {
  28. extract($wiersz);
  29.  
  30. echo $nazwa,'<br>';
  31.  
  32. }
  33.  
  34.  
  35.  
  36. ?>


To jest tylko ogólny przykład, bo braków tu od groma...
FliSs_tCv
Ok Dzieki smile.gif postaram sie z tego cos wykonać smile.gif pozdrawiam smile.gif w razie prosbemow napisze smile.gif

Miałbym jeszcze jedno pytanie jak wykonac produkt specialny juz wyjasniam smile.gif
chodzilo by oto ze w tabeli produkty
  1. CREATE TABLE `produkty` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `id_kategorii` int(10) NOT NULL,
  4. `nazwa` varchar(200) NOT NULL,
  5. `obrazek` varchar(200) NOT NULL,
  6. `opis` varchar(400) NOT NULL,
  7. `cena` float(7,2) NOT NULL DEFAULT '0.00',
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin2 AUTO_INCREMENT=13 ;
bylo by pole oferta_specjalna jescze jej nie ma jak widzicie bo nie wiem jak takie cos wykonac ;]
widze to tak ze podczas dodawania lub edycji produktów mozna bylo by wstawic np 2 pola radio z html winksmiley.jpg
czyli nadalibysmy im jakies wartosci zauszmy jezeli mialo by byc wyswietlone opcja = tak (wartośc wynosiła by 1) opcja = nie (wartosc wynosiła by 0) to jest moja teoria smile.gif gorzej bedzie z praktyka bynajmniej dla mnie poczatkującego sad.gif

1 pytanie typu jakie wartosci musialbo by miec pole oferta_specjalna w tabeli z produktami?
2 pytanie typu jak stworzyc formularz aby polaczyc te pola radio (totalnie nie mam pojęcia jak to wykonac sad.gif)
3 pytanie typu jak napisac warunek aby przy opcji=tak dodano i wyswietlono go w polu do tego wyznaczonym oraz opcji = nie poprostu nic tam nie bedzie

poszperam teraz w google jeszcze raz moze uda mi sie cos znalesc bo wiem ze widzialem cos ale to nie bylo raczej to sad.gif dlatego nie przykułem do tego wiekszej uwagi . Pozdrawiam
WiTO
1. Zależy ile chcesz znaków w tej ofercie. Jak do 255 to varchar(255), a jak więcej to lepiej text.
2. Ja zawsze stosuję int(1), bo wiem, że działa na każdej wersji myaql i na każdym systemie ;p,
przyjmuję 0-fałsz, 1-prawda.

Skrypt:

  1. <?php
  2.  
  3. mysql_connect('localhost','log','haslo');
  4. mysql_select_db('avonshop'); 
  5.  
  6. $sql="ALTER TABLE `produkty` ADD `oferta_specjalna` TEXT NOT NULL,ADD `radio` INT( 1 ) NOT NULL"; //usuń backslash
  7. $wykonaj=mysql_query($sql) or die(mysql_error());
  8. ?>


3. Rozbudować skrypt:

  1. <?php
  2. echo '<br><br>Produkty:<br>';
  3.  
  4.  
  5. $zapytanie = 'SELECT * FROM produkty WHERE id_kategorii='.$_GET[id]; 
  6.  
  7. $odpowiedz = mysql_query($zapytanie) or die(mysql_error());
  8.  
  9. while ($wiersz = mysql_fetch_array($odpowiedz)) {
  10. extract($wiersz);
  11.  
  12. echo $nazwa,'<br>';
  13.  
  14. if ($radio==1){  // tu sie zaczyna
  15. echo 'Oferta specjalna';
  16. echo $oferta_specjalna;
  17.  
  18. } // tu kończy
  19.  
  20. }
  21. ?>
FliSs_tCv
w odpowiedzi tego kodu dostaje to :

Powtórzona nazwa kolumny 'oferta_specjalna' ... nie wiem ocb chyba nie o taki skrypt chodzilo tongue.gif chodzi o wyswietlenie produktu wtedy kiedy bedzie 1 a jak bedzie 0 nie ma byc nic smile.gif
WiTO
  1. <?php
  2. echo '<br><br>Produkty:<br>';
  3.  
  4.  
  5. $zapytanie = 'SELECT * FROM produkty WHERE id_kategorii='.$_GET[id].' AND ratio=1'; // tu to dodać
  6.  
  7. $odpowiedz = mysql_query($zapytanie) or die(mysql_error());
  8.  
  9. while ($wiersz = mysql_fetch_array($odpowiedz)) {
  10. extract($wiersz);
  11.  
  12. echo $nazwa,'<br>';
  13.  
  14.  
  15.  
  16. }
  17. ?>


No a ten błąd to dlatego, że już raz odpaliłeś ten skrypt i ta kolumna już jest i wyskakuje błąd, że jest ona powtórzona, powyższy skrypt wyświetli wszystkie produkty, które mają wartość 1 w kolumnie "ratio" (chcesz zmień nazwę tongue.gif )
FliSs_tCv
teraz wystąpiło cos takiego smile.gif echo produkty dziala jak widac ponizej ale cos z tym radio nie ;>

Produkty:
Something is wrong in your syntax obok 'AND ratio=1' w linii 1
strife
Cytat(FliSs_tCv @ 23.07.2007, 22:21:29 ) *
teraz wystąpiło cos takiego smile.gif echo produkty dziala jak widac ponizej ale cos z tym radio nie ;>

Produkty:
Something is wrong in your syntax obok 'AND ratio=1' w linii 1


Poczytaj o sql injection, widzę, że nie filtrujesz danych które przychodzą ( $_GET['id'] ). Co do Twojego błędu, ratio napewno jest typu integer ?
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.