MySQL Apache PHPMyAdmin : Πρόβλημα με τράβηγμα δεδομένων από τη βάση.

GeorgeEc | Παρ, 05/04/2012 - 22:10 | 3' | 5

 Κατ' αρχήν γεια και χαρά σε όλους τους Linuxάδες και όλη την κοινότητα. Δειλά δειλά, αυτό είναι το πρώτο μου post κι έμελλε να είναι ερώτημα. Embarassed

 Δεύτερον, αν και σαφώς λατρέυω το Linux, και πιο συγκεκριμένα είμαι απίστευτα ικανοποιημένος από το Mint12, στη δουλειά έχω τι άλλο; Μαντέψτε, δε το γράφω κάν...
 
Ωστόσο αναπτύσσω ένα σύστημα διαχείρισης πελατολογίου, το οποίο θα αποκτήσει σιγά σιγά και άλλα features, χρησιμοποιώντας το καταπληκτικό και υπό τη  GPL, Wampserver. Για πιθανούς μη γνώστες, είναι ένας συνδυασμός Apache Server, MySQL, PHPmyadmin.

 Έχω λοιπόν φτιάξει τη βάση μου, όλα καλά, εισάγω κανινικά τα δεδομένα μου,
και κάνοντας fetch, με ένα sqlquery SELECT * FROM ARRAYNAME , ενθυλακωμένο σε while σαφώς,
τραβάω και εμφανίζω τα δεδομένα μου από τη βάση. No problem όλα καλά...

 Και πού είναι το πρόβλημα, θα μου πείτε... και δίκιο θα έχετε...

 Επιτυχώς έχω τραβήξει τόσο με post όσο και get, δύο τιμές για μεταβλητές από άλλη σελίδα.
Οι μεταβλητές είναι ας πούμε οι: $criteria
$searchway

που προέρχονται από φόρμα, 

η  $searchway παιρνεί τιμή από radio buttons
ενώ η $criteria παίρνει από text.

Η $searchway παίρνει varchar δεδομένα και αποθηκεύει το όνομα του κελιού που θα συγκριθεί με το ζητούμενο, (ιδίου τύπου δεδομένων). 
Η  $criteria δέχεται το κριτήριο σύγκρισης.

Παράδειγμα 
$criteria <--Μαρια
$searchway  <-- customername



Λοιπόν, όταν βάζω ως query (για την περίπτωση GET)

$query="SELECT * FROM arrayname WHERE '" .$_GET['searchway']. "' = '" .$_GET['criteria']. "'";

ΔΕ ΜΟΥ ΕΠΙΣΤΡΕΦΕΙ ΑΠΟΤΕΛΕΣΜΑΤΑ.

Το query είναι συντακτικά ορθό, τουλάχιστο ο compiler έτσι δείχνει, αλλά μάλλον κάτι δεν πάει καλά...

Το ίδιο ( σχεδόνSmile  ) είχα κάνει και με την POST. Οι μεταβλητές μεταφέρουν σωστά τις πληροφορίες.
κι ενώ ΕΧΩ πανομοιότυπα entries στα fields των records... ΔΕ ΜΟΥ ΕΠΙΣΤΡΕΦΕΙ ΑΠΟΤΕΛΕΣΜΑΤΑ.


Ενδέχεται να παίζει ρόλο η κωδικοποήση δεδομένων;
Δε μου επιστρέφει ούτε εγγραφές στα λατινικά.

Θέλω τα φώτα σας. Τι κάνω λάθος;
 

Δώσε αστέρια!
Σχόλια

Εμμμ... 
Κλείστε το θέμα, case solved.

Στην πρώτη τελεστέα μεταβλητή δε θέλει μονά εισαγωγικά --> '
και ίσως και να ήθελε και ";" στο τέλος... λεοτουργεί τώρα...

$query="SELECT * FROM customer WHERE " .$_GET['searchway']. " LIKE '" .$_GET['criteria']. "';";
 

Ω ναι! Οπότε και η:

$query="SELECT * FROM customer WHERE " .$_GET['searchway']. " = '" .$_GET['criteria']. "';";

λειτουργεί.

Ελπίζω να βοηθήσει στο μέλλον κι άλλους χρήστες και να μη ψάχνονται 7 μέρες να βρούν λύση Tongue out... 

Alternative and more correct way....

$search=$_GET['searchway'];
$criteria=
$_GET['criteria'];

$query="SELECT * FROM customer WHERE $search = $criteria";

Alternative of alternative of the two first rows.
$search=$_REQUEST['searchway']; //Save the data in a variable from a post OR get method.
$criteria=$_REQUEST['criteria'];
....
....
$query="SELECT * FROM customer WHERE $search = $criteria";

Make your life easier not complicate.
;-)

Thank you slackware, you are absolutely right. I did something similar already with the variables in order to check the syntax. That was how i found the mistake in the first place. But i kept the same code in order to follow my first post. :)

 

Γραφε στα Ελληνικα, απο opensuse δεν μπορω να κανω αλλαγη γλωσσας και απο το να γραψω greeklish πρωτιμησα τα Αγγλικα. :)