Dynamic Option Select Boxes | PHP & SQL |

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Senos
Δημοσιεύσεις: 11
Εγγραφή: 16 Φεβ 2008 01:07

Dynamic Option Select Boxes | PHP & SQL |

Δημοσίευση από Senos » 28 Φεβ 2008 15:56

Geia sas k pali antimetopizw 1 provlima :hammer:

Sql table categories

Κώδικας: Επιλογή όλων

id--- type-----subtype
1----auto------       --
2----boats----        --
3----motos---        --
4----auto------honda
5----boat------yamaha
6----moto-----suzuki
Thelw na epileksw prota ta types
kai grafw select type from categories where cartype='';

kai meta ta subtypes tis kathe katigorias
kai grafw select subtype from categories where type=auto; paradeigma


ginete na valw tis katigories se option select boxes
kai kathe fora pu dialegw katigoria na kanei refresh i page kai na emfanizontai se deutero option select box ta subtypes tis katigorias pu epekleksa ?

to exw dei alla den mporw na skeftw to pws ginete...
euxaristw et ton proteron

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

Dynamic Option Select Boxes | PHP & SQL |

Δημοσίευση από dik_ » 28 Φεβ 2008 22:55

Ψάξε για "cascade(d) select"...

Senos
Δημοσιεύσεις: 11
Εγγραφή: 16 Φεβ 2008 01:07

Dynamic Option Select Boxes | PHP & SQL |

Δημοσίευση από Senos » 29 Φεβ 2008 00:10

8a me diskoleue perisotero..
den ginete me mia apli option list ?

Άβαταρ μέλους
Risk
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2006 01:16
Τοποθεσία: Κάπου εδώ γύρω...
Επικοινωνία:

Dynamic Option Select Boxes | PHP & SQL |

Δημοσίευση από Risk » 29 Φεβ 2008 10:00

Φίλε Seno, πρόσφατα είχα και εγώ έναν τέτοιο προβληματισμός...δηλαδή σκεφτόμουν από μια option list να παίνρω π.χ. το category και μόλις εισάγει ο χρήστης αυτό να του εμφανίζεται σε μια άλλη option list, από κάτω ή δίπλα, το subcategory. Βέβαια το να κάνει refresh η σελίδα ενώ ο χρήστης συμπληρώνει π.χ. μια φόρμα πιστεύω ότι δεν είναι και ότι το καλύτερο. Σε αυτή την περίπτωση σκέφτηκα την χρήση AJAX, που ένα πλεονέκτημά της είναι να μην υπάρχουν αυτά τα refresh.

Αν λοιπόν κατάλαβα καλά κάτι αντίστοιχο θέλεις να κάνεις και εσύ. Δυστυχώς τώρα μαθαίνω και εγώ την AJAX οπότε δεν μπορώ να σου πω κάτι πιο πρακτικό, πέρα από τον συλλογισμό μου. Αν γνωρίζεις κάτι ή βρεις κάποιο tutorial θα με ενδιέφερε πολύ να το κάνεις post.
Εικόνα

Senos
Δημοσιεύσεις: 11
Εγγραφή: 16 Φεβ 2008 01:07

Dynamic Option Select Boxes | PHP & SQL |

Δημοσίευση από Senos » 29 Φεβ 2008 21:15

den egw provlima na kanei i diki mu efarmogi refresh opote den 8a me peiraze na evriska javascript. nai fisika me ajax akoma kalitera alla.. kai pio diskola. an vrw kati 8a enimerosw opos kai esu.. mexri tote as elpisoume oti 8a mas voithisei kapoios :idea:

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Dynamic Option Select Boxes | PHP & SQL |

Δημοσίευση από Banavas » 01 Μαρ 2008 10:36

Αν διαμορφώσεις τον πίνακά σου κάπως έτσι

Κώδικας: Επιλογή όλων

id--- title-----type 
1----auto------0      
2----boats----  0     
3----motos---  0    
4----honda ------1
5----yamaha ------2
6----suzuki -----3
με το πρώτο query θα θα πέρνεις όλα τα title where type='0' (βασική κατηγορία)
από τον result πίνακα ή combo box που θα σχηματίσεις επιλέγεις το title που θέλεις αλλά εκμεταλλεύεσαι το id του με το οποίο κάνεις ξανά αναζήτηση (where type='$id')
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Dynamic Option Select Boxes | PHP & SQL |

Δημοσίευση από fafos » 01 Μαρ 2008 16:54

Κατά την γνώμη μου χρειάζονται 2 πίνακες.. ένας για τις κατηγορίες (category) και ένας για τις υποκατηγορίες (subcategory)..

χρησιμοποιώ το παρακάτω με την βοήθεια της ajax για να γλυτώσω το reload της σελίδας:


Βήμα 1:

δημιουργούμε ένα αρχείο config.php με τα στοιχεία της βάσης μας:

Κώδικας: Επιλογή όλων

$dbhost = 'localhost';//host
$dbuser = 'onoma_xrhsth';//username
$dbpass = 'kodikos';//password
$dbname = 'vash';//onoma vashs

Βήμα 2:

Δημιουργούμε τους πίνακες στην βάση μας:

Κώδικας: Επιλογή όλων

CREATE TABLE `category` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `title` varchar(250) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=greek AUTO_INCREMENT=1 ;


CREATE TABLE `subcategory` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `title` varchar(100) NOT NULL default '',
  `main_cat` varchar(10) NOT NULL default '',
   PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=greek AUTO_INCREMENT=1;
Ο πρώτος πίνακας είναι για την κύρια κατηγορία μας και ο δεύτερος για τις υποκατηγορίες.. το main_cat θα είναι το id της κύριας κατηγορίας στην οποία ανήκει η υποκατηγορία.


Βήμα 3:

Φειάχνουμε μία σελίδα με όνομα cats.php όπου εκεί θα καλούμε την βάση να μας δώσει τις υποκατηγορίες ανάλογα με την επιλογή μας στο drop down menu:

Κώδικας: Επιλογή όλων

<?
     //set IE read from page only not read from cache
     header &#40;"Expires&#58; Mon, 26 Jul 1997 05&#58;00&#58;00 GMT"&#41;;
     header &#40;"Last-Modified&#58; " . gmdate&#40;"D, d M Y H&#58;i&#58;s"&#41; . " GMT"&#41;;
     header &#40;"Cache-Control&#58; no-cache, must-revalidate"&#41;;
     header &#40;"Pragma&#58; no-cache"&#41;;
     
     header&#40;"content-type&#58; application/x-javascript; charset=iso-8859-7"&#41;;
     
     $data1=$_GET&#91;'data1'&#93;;
     $val1=$_GET&#91;'val1'&#93;;
     
require 'config.php';

mysql_pconnect&#40;$dbhost,$dbuser,$dbpass&#41; or die &#40;"Unable to connect to MySQL server"&#41;;  
     
     if &#40;$data1=='category'&#41; &#123;  // first dropdown
          echo "<select name='category' onChange=\"dochangea&#40;'subcategory', this.value&#41;\">\n";
          echo "<option value=''>Επιλογή Κατηγορίας</option>\n";
          $result1=mysql_db_query&#40;$dbname,"select `id`, `title` from category order by `id`"&#41;;
          while&#40;list&#40;$id1, $name1&#41;=mysql_fetch_array&#40;$result1&#41;&#41;&#123;
               echo "<option value=\"$id1\" >$name1</option> \n" ;
          &#125;
     &#125; else if &#40;$data1=='subcategory'&#41; &#123; // second dropdown
          echo "<select name='subcategory' >\n";
          echo "<option value=''>Επιλογή Υποκατηγορίας</option>\n";                           
          $result1=mysql_db_query&#40;$dbname,"SELECT `id`, `title`, `main_cat` FROM subcategory WHERE `main_cat` = '$val1' ORDER BY BINARY `title` "&#41;;
          while&#40;list&#40;$id1, $name1&#41;=mysql_fetch_array&#40;$result1&#41;&#41;&#123;       
               echo "<option value=\"$id1\" >$name1</option> \n" ;
          &#125;
     &#125; 
     echo "</select>\n";  
?>


Βήμα 4:

Παρακάτω είναι ο κώδικας που βάζουμε στις σελίδες μας για να δείξουμε το drop down menu:

Κώδικας: Επιλογή όλων

<form action="" method="post" id="Form1">
     <table width="60%" cellpadding="3" cellspacing="1">
        <tbody>
          <tr>
            <td align="left" valign="top" ><b>Κατηγορία&#58;</b></td>
            <td align="left" valign="top" width="50%"><b>Υποκατηγορία&#58;</b></td>
          </tr>
          <tr>
      <td align="left" valign="top"><?     
     echo "<font id=category><select>\n";
     echo "<option value=''>============</option> \n" ;
     echo '</select></font></td>
      <td align="left" valign="top">';
  echo "<font id=subcategory><select>\n";
     echo "<option value=''>===  ===</option> \n" ;
     echo "</select></font>";
?><script language=Javascript>
function Inint_AJAX&#40;&#41; &#123;
   try &#123; return new ActiveXObject&#40;"Msxml2.XMLHTTP"&#41;;  &#125; catch&#40;e&#41; &#123;&#125; //IE
   try &#123; return new ActiveXObject&#40;"Microsoft.XMLHTTP"&#41;; &#125; catch&#40;e&#41; &#123;&#125; //IE
   try &#123; return new XMLHttpRequest&#40;&#41;;          &#125; catch&#40;e&#41; &#123;&#125; //Native Javascript
   alert&#40;"XMLHttpRequest not supported"&#41;;
   return null;
&#125;;

function dochangea&#40;src, val&#41; &#123;
     var req = Inint_AJAX&#40;&#41;;
     req.onreadystatechange = function &#40;&#41; &#123; 
          if &#40;req.readyState==4&#41; &#123;
               if &#40;req.status==200&#41; &#123;
                    document.getElementById&#40;src&#41;.innerHTML=req.responseText; //retuen value
               &#125; 
          &#125;
     &#125;;
     req.open&#40;"GET", "cats.php?data1="+src+"&val1="+val&#41;; //make connection
     req.setRequestHeader&#40;"Content-Type", "application/x-www-form-urlencoded;charset=iso-8859-7"&#41;; // set Header
     req.send&#40;null&#41;; //send value
&#125;

window.onLoad=dochangea&#40;'category', -1&#41;;         // value in first dropdown
</script>

</td>
          </tr>
        </tbody>
      </table></form>

έτοιμο το μενού μας.. τώρα, λογικά θα πρέπει με το επιλέγετε μία κατηγορία, δίπλα να εμφανίζονται οι υποκατηγορίες..

Senos
Δημοσιεύσεις: 11
Εγγραφή: 16 Φεβ 2008 01:07

Dynamic Option Select Boxes | PHP & SQL |

Δημοσίευση από Senos » 01 Μαρ 2008 19:09

paidia sas euxaristw gia to endiaferon pu deixnete

ola mu ta scripts leitourgoun me vasi ton pinaka pu sxediada :(
einai dinaton na paralaksw to script auto wste na leitourgei xwris na xreiastei na scediasw apo tin arxi ola mu ta script ?

Senos
Δημοσιεύσεις: 11
Εγγραφή: 16 Φεβ 2008 01:07

Dynamic Option Select Boxes | PHP & SQL |

Δημοσίευση από Senos » 01 Μαρ 2008 21:48

@fafos

tha thela na se euxaristisw para polu
tropopoiisa to script sou kai doulepse!

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Dynamic Option Select Boxes | PHP & SQL |

Δημοσίευση από skeftomilos » 02 Μαρ 2008 08:05


Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες