koslibpro Δημοσ. 23 Ιουλίου 2012 Δημοσ. 23 Ιουλίου 2012 Καλησπερα σε ολους, η ερωτηση μου ειναι η εξης:στεκει η παρακατω εκφραση? > $var=$_POST['var']; mysql_query = "SELECT * FROM tablename WHERE $var<=(0.2*column_name) and $var>=(0.2*column_name)"; δηλαδη θελω να μου επιστρψει ολες τις τιμες της βασεις που ειναι 20% μεγαλυτερες και 20% μικροτερες απο την τιμη που εισηγαγε ο χρηστης . στεκει αυτο απο λογικη και προγραμματιστικη αποψη? ευχαριστω πολυ
thanocaster Δημοσ. 23 Ιουλίου 2012 Δημοσ. 23 Ιουλίου 2012 Καταρχάς, όχι γιατί το AND ψάχνει για όσες εγγραφές ικανοποιούν ΚΑΙ ΤΑ ΔΥΟ conditions. Οπότε σε πρώτη φάση το statement είναι ισοδύναμο με αυτό: > SELECT * FROM tablename WHERE $var = (0.2*column_name) Επίσης, το > WHERE $var = (0.2*column_name) δεν βγάζει νόημα. Αυτό που θες είναι: > WHERE column_name = (0.2*$var) Στον μαθηματικό τομέα, το 0.2*$var δεν είναι το 20% μικρότερο/μεγαλύτερο του $var. Αυτό που θες είναι το 1.2*$var και το 0.8*$var Άρα, συνοψίζοντας: > SELECT * FROM tablename WHERE column_name >= (0.8*$var) AND column_name <= (1.2*$var) ΥΓ> Θέλω να πιστεύω πως το $var = $_GET['var'] είναι απλά για το παράδειγμα. Αν όχι, και το χρησιμοποιείς στο σκριπτ σου ακριβώς όπως το έχεις εδώ, άσε τον κώδικα και άρχισε να διαβάζεις περί SQL Injection.
koslibpro Δημοσ. 23 Ιουλίου 2012 Μέλος Δημοσ. 23 Ιουλίου 2012 Καταρχάς, όχι γιατί το AND ψάχνει για όσες εγγραφές ικανοποιούν ΚΑΙ ΤΑ ΔΥΟ conditions. Οπότε σε πρώτη φάση το statement είναι ισοδύναμο με αυτό: > SELECT * FROM tablename WHERE $var = (0.2*column_name) Επίσης, το > WHERE $var = (0.2*column_name) δεν βγάζει νόημα. Αυτό που θες είναι: > WHERE column_name = (0.2*$var) Στον μαθηματικό τομέα, το 0.2*$var δεν είναι το 20% μικρότερο/μεγαλύτερο του $var. Αυτό που θες είναι το 1.2*$var και το 0.8*$var Άρα, συνοψίζοντας: > SELECT * FROM tablename WHERE column_name >= (0.8*$var) AND column_name <= (1.2*$var) ΥΓ> Θέλω να πιστεύω πως το $var = $_GET['var'] είναι απλά για το παράδειγμα. Αν όχι, και το χρησιμοποιείς στο σκριπτ σου ακριβώς όπως το έχεις εδώ, άσε τον κώδικα και άρχισε να διαβάζεις περί SQL Injection. αρχικα,ναι αυτο το script το κανω sanitize πριν το ανεβασω στον server,γνωριζω για την SQLi δευτερον,αρα με αυτο > SELECT * FROM tablename WHERE column_name >= (0.8*$var) AND column_name <= (1.2*$var) ικανοποιειται αυτο που θελω,ετσι?δηλαδη το $var να ειναι μικροτερο κατα 20% απο την τιμη της στηλης και 20% μεγαλυτερο απο την τιμη της στηλης? ακομη,εχεις κανα λινκ για αυτο με τα μαθηματικα που μου ειπες?καθως δεν ηξερα καν οτι δεν ισχυει με την καμια αυτο που ειχα γραψει,οποτε ισως ειναι και αλλα που θα επρεπε να ξερω.. ευχαριστω!
thanocaster Δημοσ. 23 Ιουλίου 2012 Δημοσ. 23 Ιουλίου 2012 Αν κατάλαβα καλά εσύ θες όλες τις τιμές ανάμεσα στο +-20% της τιμής που έβαλε ο χρήστης. Άρα αν ο χρήστης έβαλε την τιμή 100, εσύ θες όλες τις τιμές από 80-120. Τα μαθηματικά δεν είναι τίποτα σπουδαίο, απλή άλγεβρα του δημοτικού είναι. Στο ίδιο παράδειγμα, το 0.2*$var είναι ίσο με 20. Εσύ θες, όμως, τις τιμές που είναι +-20% και όχι τις τιμές που είναι 20%. Άρα πρέπει να προσθαφαιρέσεις αυτό το 20%. Ε, αυτό μεταφράζεται σε 80% εώς 120%. Άρα 0.8*$var εώς 1.2*$var. ΥΓ> Δεν το πιστεύω πως έγραψα 2 παραγράφους γι αυτό.
koslibpro Δημοσ. 23 Ιουλίου 2012 Μέλος Δημοσ. 23 Ιουλίου 2012 Αν κατάλαβα καλά εσύ θες όλες τις τιμές ανάμεσα στο +-20% της τιμής που έβαλε ο χρήστης. Άρα αν ο χρήστης έβαλε την τιμή 100, εσύ θες όλες τις τιμές από 80-120. Τα μαθηματικά δεν είναι τίποτα σπουδαίο, απλή άλγεβρα του δημοτικού είναι. Στο ίδιο παράδειγμα, το 0.2*$var είναι ίσο με 20. Εσύ θες, όμως, τις τιμές που είναι +-20% και όχι τις τιμές που είναι 20%. Άρα πρέπει να προσθαφαιρέσεις αυτό το 20%. Ε, αυτό μεταφράζεται σε 80% εώς 120%. Άρα 0.8*$var εώς 1.2*$var. ΥΓ> Δεν το πιστεύω πως έγραψα 2 παραγράφους γι αυτό. αααα μαλιστα! σε ευχαριστω πολυ!
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα