PHP - Πρόβλημε με την κατασκευή του κατάλληλου SELECT ..!??

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
ARCHON
bit level
bit level
Posts: 30
Joined: Tue Oct 03, 2006 3:09 pm

PHP - Πρόβλημε με την κατασκευή του κατάλληλου SELECT ..!??

Post by ARCHON » Wed Nov 01, 2006 3:22 am

Γεια χαρά σε όλους,
θα ήθελα την βοήθεια σας (γνώστες) ώς προς την κατασκευή της ακόλουθης εφαρμογής-site (Autobazar - κατάστημα πώλησης αυτοκινήτων) που φτιάχνω με PHP - mysql (phpmyadmin) .

Λοιπόν ας τα πάρουμε από την αρχή,
έχω κατασκευσει την ακόλουθη HTML φόρμα στην πρώτη σελίδα ως εξής :

Code: Select all

<form>

<TR><TD>marka</TD>
<TD>
<select><option>Oles oi markes</option>
<option>Skoda</option>
<option>Hunday</option>
<option>Bmw</option>
<option>Reno</option>
<option>Fiat</option>
<option>Mercedes</option>
<option>Ford</option>
<option>Kia</option>
<option>Citroen</option>
<option>Audi</option>


</select></TD></TR><TR><TD>Modelo</TD>
<TD><input></TD></TR><TR>

<TD>Typosamaxiou</TD>
<TD><select>
<option>Ola - den paizei rolo</option>
<option>prosopiko</option>
<option>epixirimatiko</option>


<TR><TD>Xroma</TD>
<TD><input></TD></TR>

<TR><TD>Etos kataskeuis</TD>
<TD>
<input> 

</TD></TR>

<TR><TD>kausimo</TD>
<TD>
<select>
<option>Ola - den paizei rolo</option> 
<option>diesel</option>
<option>aerio</option>
<option>benzini</option>

</select></TD></TR>

<TR><TD>Timi</TD>
<TD>
<input> 


<TR><TD><input></TD></TR>
 
</form>
==> synexeia

==> synexeia

'Οπως θα έιδατε το action της φόρμας παραπάνω πηγαίνει στη δεύτερη σελίδα η οποία π.χ ονομάζεται esperos.php .
O php κώδικας βρίσκεται λοιπόν εκεί και είναι ο ακόλουθος :

Code: Select all

$server="no";
$user="no"; 
$password="no"; 
$database="no"; 
$table="no";

$marka=$_POST['marka'];
$modelo=$_POST['modelo'];
$etoskataskeuis=$_POST['etoskataskeuis'];
$timi=$_POST['timi'];


mysql_CONNECT($server, $user, $password) or die ( "<H3>Server unreachable</H3>");
mysql_SELECT_DB($database) or die ( "<H3>Database non existent</H3>");



 $query = "SELECT * FROM auto WHERE marka = '" . $_POST['marka'] ."' AND modelo = '" . $_POST['modelo'] ."' AND etoskataskeuis = '" . $_POST['etoskataskeuis'] ."' AND timi = '" . $_POST['timi'] ."'";


$result= mysql_query($query);
$num_results = mysql_num_rows($result);

while ($row = mysql_fetch_array($result))
{
echo "<b>Timi:</b> ", $row['timi'], "<br><b>Modelo:</b> ",$row['modelo'], "<br><b>Marka:</b> ",$row['marka'], "<br><b>Etos kataskeuis:</b> ",$row['etoskataskeuis'];
} 


==> synexeia
Pinakes

CREATE TABLE `parametroi` (
`id_atribut` int(4) NOT NULL auto_increment,
`id_auto` int(4) NOT NULL,
`typosamaxiou` varchar(10) NOT NULL,
`xroma` varchar(18) NOT NULL,
`arithpoton` int(1) NOT NULL,
`kausimo` varchar(8) NOT NULL,
`parathyra` varchar(12) NOT NULL,
`cm` int(5) NOT NULL,
`typosagoras` varchar(20) NOT NULL,
PRIMARY KEY (`id_atribut`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;



--
-- Table structure for table `auto`
--

CREATE TABLE `auto` (
`id_auto` int(4) NOT NULL auto_increment,
`marka` varchar(20) NOT NULL,
`modelo` varchar(18) NOT NULL,
`timi` int(7) NOT NULL,
`etoskataskeuis` int(4) NOT NULL,
`arithmos` varchar(10) NOT NULL,
PRIMARY KEY (`id_autoa`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
Η ερώτηση - αυτό που θέλω να κάνω είναι όταν ο χρήστης θα επιλέξει από την ΦΟΡΜΑ έναν οποιονδοίποτε συνδιασμό επιλογών, τότε και να του εμφανίζεται η ανάλογη αναγραφή από την db .

To πρόβλημα μου είναι πως δεν καταλαβαίνω πως μπορώ να σχεδιάσω τότε ένα SELECT που να ικανοποιεί αυτό το πράγμα, γιατί ο κάθε χρήστης κάθε φορά θα κάνει ένα διαφορετικό συνδιασμό , οπότε εγώ τι Select θα πρέπει να γράψω ??

Αυτό που έγραψα πάντως δεν είναι το σωστο :P

..περιμένω την βοήθεια σας !

thanks :shock: :shock: :roll:
Q: To be OR to be an Open sourcer..?

A: To be AND to be an Open sourcer..!

That really makes a difference, anyway whenever there is something "wrong" the answer to fix it has to be always logical ;)
User avatar
Zifnab
Venus Former Team Member
Posts: 7581
Joined: Tue Nov 15, 2005 2:42 am
Academic status: MSc
Gender:
Location: Connecticut
Contact:

Post by Zifnab » Wed Nov 01, 2006 3:42 am

Σορρυ για την απάντηση αλλά όπως παρατηρείς και εσύ οτιδήποτε γράφεις π.χ <form και τα λοιπα (action) εμφανίζεται στην οθόνη με σκέτο <form>, εξού και η ανούσια πλέον απάντηση μου... Πρέπει να το κοιτάξει ο Διαχειριστής γιατί η ζημιά γίνεται όταν βάλουμε το > στο <form action=" " name=" " κτλ :roll: Το πρόβλημα συνεχίζει ακόμα και μέσα σε Κώδικα. Εννοειται πως μετά κατα την επεξεργασία έχουν μετατραπεί όλα τα tags σε attribute-less :shock:
Last edited by Zifnab on Wed Nov 01, 2006 4:00 am, edited 8 times in total.
User avatar
ARCHON
bit level
bit level
Posts: 30
Joined: Tue Oct 03, 2006 3:09 pm

Post by ARCHON » Wed Nov 01, 2006 3:47 am

δεν ειναι αυτό το πρόβλημα μου αλλά αυτο που στο τέλος ρωτάω και δεν μπορώ να κατανοήσω ,
παρακαλώ όσοι γνωρίζουν ας με βοηθήσουν να καταλάβω πως ενώνουμε ένα τέτοιο πράγμα και πώς σκεφτόμαστε ώστε να γράψουμε ένα τέτοιο select όπου ο καθε χρήστης της φόρμας θα μπορεί ανα πάσα στιγμή να το αλλάξει με τις επιλογές του..

περιμένω παίδες...help ;) :shock: :oops:
Q: To be OR to be an Open sourcer..?

A: To be AND to be an Open sourcer..!

That really makes a difference, anyway whenever there is something "wrong" the answer to fix it has to be always logical ;)
User avatar
Argi
byte level
byte level
Posts: 122
Joined: Tue Nov 09, 2004 7:22 pm

Post by Argi » Wed Nov 01, 2006 9:46 am

Αν κατάλαβα καλά, θες να επιλέγεις κάτι στο tag select και ανάλογα το option που θα επιλεγεί, να στέλνεται και ανάλογη τιμή στην post μεταβλητή.
Για την μάρκα θα σου πω, τα υπόλοιπα είναι παρόμοια:

<select><option>Oles oi markes</option>
<option>Skoda</option>
<option>Hunday</option>
...κλπ...
</select>

'Οπου στο tag select θα βάλεις τη μεταβλητή name με τιμή ίση με 'marka'
και στο κάθε option τη μεταβλητή value με τιμή ίση με Scoda, Hundai, ... ανάλογα ή ίση με κενό string στην περίπτωση oles oi markes.

Πρέπει να ορίσεις στην φόρμα σου να στέλνει τα στοιχεία μέσω POST βέβαια και να βάλεις το action, αλλά πιστεύω ότι τα ξέρεις αυτά...

Οπότε στην php, θα σου έρθει η μεταβλητή $_POST['marka'] που θα έχει τιμές: Scoda, Hundai...κλπ ανάλογα με την επιλογή σου. Αν δεν επιλέξεις τίποτα (όλες οι μάρκες), τότε θα έχει κενή τιμή (τιμή=="").

Οπότε το select γίνεται:

$query = "SELECT * FROM auto WHERE 1 ";
if($_POST['marka']!="")
$query.="AND marka = '" . $_POST['marka'];
Δηλαδή, αν δεν θες να επιλεγεί μάρκα (όλες οι μάρκες), τότε δεν προσθέτεις τον όρο στο query.
I am a nobody, and nobody is perfect; therefore I am perfect.
User avatar
mikros
byte level
byte level
Posts: 127
Joined: Wed Nov 09, 2005 8:08 pm
Academic status: Alumnus/a
Gender:
Location: somewhere in the world
Contact:

Post by mikros » Wed Nov 01, 2006 12:16 pm

Από ότι κατάλαβα θες μετά τον submit να εμφανίζει στο χρήστη ότι είχε διαλέξει στη φόρμα. Για να το κάνεις αυτό θα χρησιμοποιήσεις της μεταβλητές ($_POST['...']). P.x. κάτι της μορφής
echo "Διαλέξατε αυτοκίνητο μάρκας " . $_POST['marka'] . "";
Άλλη ιδέα είναι να χρησιμοποιηείς primary key ένα column id το οποίο θα αυξάνεται αυτόματα κατά ένα απο τη βάση δεδομένων και αφού κάνεις INSERT να σoυ επιστρέφει το id με την συνάρτηση mysql_insert_id()

Επίσης κάτι άλλο που είναι σημαντικό για την ασφάλεια του κώδικα και της βάσης δεδομένων σου είναι να κάνεις έλεγχο πάντα για το τύπο της μεταβλήτής και το μέγεθος Π.χ. κάτι της μορφής
$marka = "" . $_POST['marka'] αν πρόκειται για String και
$timi = 0 + $_POST['timi'] ;
Τέλος πριν εισαγάγεις στο query δεδομένα που έχει εισάγει ο χρήστης θα πρέπει να κάνεις escape τα sql keywords με τη συνάρτηση :mysql_real_escape_string()

Εδιτεδ: Διορθώθηκαν οι συναρτήσεις
User avatar
ARCHON
bit level
bit level
Posts: 30
Joined: Tue Oct 03, 2006 3:09 pm

Post by ARCHON » Thu Nov 02, 2006 6:37 am

χμ, αν μπορούσατε να μου αναφέρεται και το implementation , να γράφατε κώδικα βάση του κώδικα που σας έδωσα, τότε θα με βοηθούσε αρκετά ώς προς την κατανόηση ..μαθαίνω καλύτερα μέσω παραδειγμάτων ..: πώς λέμε " ακουστικός τύπος " όταν μαθαίνεις μπουζούκι, έ κάτι ανάλογο :lol:
Περιμένω παιδιά ;)
Q: To be OR to be an Open sourcer..?

A: To be AND to be an Open sourcer..!

That really makes a difference, anyway whenever there is something "wrong" the answer to fix it has to be always logical ;)
User avatar
ARCHON
bit level
bit level
Posts: 30
Joined: Tue Oct 03, 2006 3:09 pm

Post by ARCHON » Sun Nov 05, 2006 3:26 pm

.. παιδία επειδή δεν το καταφέρνω, μπορεί κάποιος να αναφέρει κάποιο παράδειγμα ολοκληρομένο σύνδεσης φόρμας(form) με php και mysql, που να αναγράφει αποτελέσματα από την βάση δεδομένων ανάλογα με τις επιλογές που θα κάνει ο χρήστης στη φόρμα ?
Να καταλάβω πως λειτουργεί η όλη τεχνική διότι εώς τώρα δεν έχω καταφέρει να το κάνω να λειτουργήσει :cry: :-(
Q: To be OR to be an Open sourcer..?

A: To be AND to be an Open sourcer..!

That really makes a difference, anyway whenever there is something "wrong" the answer to fix it has to be always logical ;)
User avatar
mikros
byte level
byte level
Posts: 127
Joined: Wed Nov 09, 2005 8:08 pm
Academic status: Alumnus/a
Gender:
Location: somewhere in the world
Contact:

Post by mikros » Sun Nov 05, 2006 3:39 pm

αν θες στείλε μου το msn σου να σε βοηθήσω...
User avatar
ARCHON
bit level
bit level
Posts: 30
Joined: Tue Oct 03, 2006 3:09 pm

Post by ARCHON » Sun Nov 05, 2006 3:50 pm

σου έστειλα π.μ , αν μπορείς να βρεθούμε στο irc , διότι δεν χρησ/ώ msn waiting for you answer :oops:

..άν πάλι δεν μπορείς irc , κάνε ένα post εδώ όποτε μπορείς , ευχαριστώ .
Q: To be OR to be an Open sourcer..?

A: To be AND to be an Open sourcer..!

That really makes a difference, anyway whenever there is something "wrong" the answer to fix it has to be always logical ;)
Post Reply

Return to “Προγραμματισμός”