tricky sql query

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

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

Απάντηση
aristidis_85
Δημοσιεύσεις: 58
Εγγραφή: 18 Μαρ 2009 19:14

tricky sql query

Δημοσίευση από aristidis_85 » 05 Απρ 2009 02:51

παιδια θελω να κανω ενα query με την php, που αν και ακουγεται ευκολο με εχει προβληματισει.

εχω ενα πινακα με πολεις που τους αντιστοιχουν αμαξια.
για να δω τα αμαξια με τις ιδιοτητες τους απο την Άρτα ας πουμε, στην sql κανω:
select * from cars where nomos='Άρτα';
για να δω ολα τα αμαξια απο ολους τους νομους θα κανω:
select * from cars ;

ετσι λοιπον και εγω στην php εχω $query= select * from cars where nomos=$POST[nomos];

οπως καταλαβαινετε δεν ξερω πως να υλοποιησω το λεγομενο "ολοι οι νομοι" . (while & append μυριζομαι)

η ιδεα που θα μου δωσετε θα εφαρμοστει και σε αλλα drop down menus, οπως αυτο με τα χρωματα, τις μαρκες, τα μοντελα, τους δήμους κλπ.

ευχαριστω πολυ, καλο βραδυ.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

tricky sql query

Δημοσίευση από korgr » 05 Απρ 2009 10:17

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

select * from cars where 1

aristidis_85
Δημοσιεύσεις: 58
Εγγραφή: 18 Μαρ 2009 19:14

tricky sql query

Δημοσίευση από aristidis_85 » 05 Απρ 2009 17:13

korgr έγραψε:

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

select * from cars where 1
ευχαριστω πολυ φιλε! ομως, οπως ειπα παραπανω, εχω στην php:

$query= select * from cars where nomos=$POST[nomos];

και δεν θα δουλεψει αν κανω

$query= select * from cars where nomos=1; συμφωνα με την συμβουλη σου

σιγουρα αν ειχα command line ετσι θα το εκανα ή δεν θα εβαζα καθολου το where, ομως η php με αναγκαζει να δουλεψω με ενα συγκεκριμενο "καλουπι"

με λιγα λογια μπορω να πειραξω μονο οτι βρισκεται δεξια απο το ισον.

καλο απογευμα.

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

tricky sql query

Δημοσίευση από fafos » 05 Απρ 2009 19:46

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

if($_POST[nomos] || $_POST[color] || $_POST[mark] klp klp) {

$query= select * from cars WHERE;
if($_POST[nomos]) { $query .=  nomos=$POST[nomos] AND; }
if($_POST[color]) { $query .=  color=$POST[color] AND; }
if($_POST[mark]) { $query .=  mark=$POST[mark] AND; }

klp
klp

	if(substr($query, strlen($query)-4, 4) == ' AND') {	$sql = substr($query, 0, strlen($query)-4); }//auto oposdhpote teleutaio

} else {

$query= select * from cars;
}

Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

tricky sql query

Δημοσίευση από korgr » 06 Απρ 2009 12:01

aristidis_85 έγραψε:
ευχαριστω πολυ φιλε! ομως, οπως ειπα παραπανω, εχω στην php:

$query= select * from cars where nomos=$POST[nomos];

και δεν θα δουλεψει αν κανω

$query= select * from cars where nomos=1; συμφωνα με την συμβουλη σου

σιγουρα αν ειχα command line ετσι θα το εκανα ή δεν θα εβαζα καθολου το where, ομως η php με αναγκαζει να δουλεψω με ενα συγκεκριμενο "καλουπι"

με λιγα λογια μπορω να πειραξω μονο οτι βρισκεται δεξια απο το ισον.

καλο απογευμα.
Η php ποτε δεν θα σε αναγκασει να δουλευεις σε "καλουπια". Τα καλουπια τα οριζεις εσυ μονος σου και μπορουν να ειναι διαφορετικα αναλογα τις συνθήκες (conditions) που οριζεις. Στην περιπτωση σου, οπως ο fafos σου προτεινε, πρεπει να εχεις το query σε δυο τμηματα, ενα σταθερο και ενα μεταβλητο που προκυπτει με if...
Παραδειγμα:

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

$query = "select * from cars where "; //πρώτο σταθερό τμήμα
if($_POST[nomos]) { // αν εχει επιλεγεί νομός
$query .= "nomos=$POST[nomos]"; //δευτερο μεταβλητο τμημα...
}else{
$query .= "1"; // ολοι οι νομοι...
}
Αυτο συντάσσεται και ως εξης:

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

$query1 = "select * from cars where "; //πρώτο σταθερό τμήμα
$query2 = ($POST[nomos]) ? " nomos=$POST[nomos]" : " 1"; // επιλογη αναλογα την συνθηκη
$query = $query1.$query2; // τελικο query

aristidis_85
Δημοσιεύσεις: 58
Εγγραφή: 18 Μαρ 2009 19:14

tricky sql query

Δημοσίευση από aristidis_85 » 06 Απρ 2009 14:00

σας ευχαριστω για τις αμεσες απαντησεις! θα δουλεψω λιγο με τις πληροφοριες και θα επανελθω με links για να δουμε πως δουλευει και πως μπορω να το μονταρω, γιατι αυτο θα ειναι υποσυνολο ενος μεγαλυτερου query, του παρακατω δηλαδη:
http://ii-ptixiakes.teikav.edu.gr/metax ... /agora.php
Εικόνα

aristidis_85
Δημοσιεύσεις: 58
Εγγραφή: 18 Μαρ 2009 19:14

tricky sql query

Δημοσίευση από aristidis_85 » 13 Απρ 2009 19:22

παιδια, ευχαριστω παρα πολυ!!
τελικα δεν ηταν τοσο δυσκολο οσο νομιζα, απλα συνεχομενοι ελενχοι με if και μερικα append με την λεξη AND στρατηγικα τοποθετημενη.

χρησιμοποιησα αυτη την μεθοδολογια που μου δωσατε:

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

$query = "select * from cars where "; //πρώτο σταθερό τμήμα 
if($_POST[nomos]) { // αν εχει επιλεγεί νομός 
$query .= "nomos=$POST[nomos]"; //δευτερο μεταβλητο τμημα... 
}else{ 
$query .= "1"; // ολοι οι νομοι... 
} 

:D

Απάντηση

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

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

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