michalinos86 Δημοσ. 17 Δεκεμβρίου 2013 Δημοσ. 17 Δεκεμβρίου 2013 Δεν είμαι πολύ σχετικούς αλλά τώρα τα διαβάζω και προσπαθώ να κάνω μια αναζήτηση στην βάση μου. Δεν ξέρω ακριβώς το λάθος αλλά πιστεύω ότι δεν έχω βάλει τιμή στην $q στην if($city1=='' && ($date1=='' && $cost1=='' && $start1=='' && $finish1=='')), ενώ πατάω το κουμπί search και δεν έχω συμπληρωμένα κανένα από τα πεδία μου μου εμφανίζει το μήνυμα αλλά και το παρακάτω warning : Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\login.php on line 326 το λαθος μου είναι στην γραμμή της while. Τι τιμή πρέπει να δώσω στην $q? <?php mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("childbase") or die(mysql_error()); mysql_query("SET CHARACTER SET utf8"); mysql_query("SET NAMES utf8"); if(isset($_REQUEST['submit'])){ $result=''; $city1=$_POST["site"]; $date1=$_POST["date"]; $cost1=$_POST["site1"]; $start1=$_POST["site2"]; $finish1=$_POST["site3"]; //echo "Δεν υπάρχει κάποιο αποτέλεσμα!"; if($city1=='' && ($date1=='' && $cost1=='' && $start1=='' && $finish1=='')) {echo "Δεν υπάρχει κάποιο αποτέλεσμα!";} else{ if($city1!==''){ $result.="city = '".$city1."'";} if($date1!=='' && $city1!==''){$result.=" AND date_start_appointment = '".$date1."'";} else if ($date1!=='') {$result.="date_start_appointment = '".$date1."'";} if($cost1!=='' && ( $date1!=='' || $city1!=='' )){$result.=" AND cost_expert_per_hour = '".$cost1."'";} else if ($cost1!==''){ $result.="cost_expert_per_hour = '".$cost1."'"; } if($start1!=='' && ($cost1!=='' || $date1!=='' || $city1!=='')){$result.=" AND start_appointment = '".$start1."'";} else if ($start1!==''){ $result.="start_appointment = '".$start1."'"; } if($finish1!=='' && ($start1!=='' || $cost1!=='' || $date1!=='' || $city1!=='')){$result.=" AND end_appointment ='".$finish1."'";} else if ($finish1!==''){$result.="end_appointment = '".$finish1."'";} } $sql="SELECT * FROM expert WHERE ".$result.""; $q=mysql_query($sql); } else{ $sql="SELECT * FROM expert"; $q=mysql_query($sql); } ?> <?php if(isset($_REQUEST['submit'])){ while($res=mysql_fetch_array($q)){ ?> <tr> <td><?php echo $res['job'];?></td> <td><?php echo $res['city'];?></td> <td><?php echo $res['fullname'];?></td> <td><?php echo $res['mobile_phone'];?></td> <td><?php echo $res['date_start_appointment'];?></td> <td><?php echo $res['cost_expert_per_hour'];?></td> <td><?php echo $res['start_appointment'];?></td> <td><?php echo $res['end_appointment'];?></td> </tr> <?php } } else {echo "Searching....";} ?>
subdee Δημοσ. 18 Δεκεμβρίου 2013 Δημοσ. 18 Δεκεμβρίου 2013 Πρώτον φτιάξε το post σου και βάλε τον κώδικα σε code tags γιατί δε διαβάζεται έτσι. Δεύτερον, το σφάλμα στο λέει ποιό είναι το πρόβλημα. To $q είναι boolean (false) άρα το query απέτυχε. Για αρχή προσπάθησε να τρέξεις το query κατευθείαν στη βάση να δείς αν λειτουργεί και έλεγξε την τιμή του $result.
PC_MAGAS Δημοσ. 18 Δεκεμβρίου 2013 Δημοσ. 18 Δεκεμβρίου 2013 και τρίτον; Δεν παιρνάμε καθόλου μεταβλητές από το query πρωτού τα περάσεις μια από mysql_real_escape_string().
defacer Δημοσ. 18 Δεκεμβρίου 2013 Δημοσ. 18 Δεκεμβρίου 2013 Δεν παιρνάμε καθόλου μεταβλητές από το query πρωτού τα περάσεις μια από mysql_real_escape_string(). Βασικά δε χρησιμοποιούμε καθόλου mysql extension για κανένα λόγο. mysqli ή pdo. Επίσης δε φτιάχνουμε ποτέ queries "manually" κολλώντας παραμέτρους αλλά χρησιμοποιούμε prepared statements, στην οποία περίπτωση το escape γίνεται αυτόματα (κι έτσι μηδενίζεται και η πιθανότητα λάθους).
PC_MAGAS Δημοσ. 19 Δεκεμβρίου 2013 Δημοσ. 19 Δεκεμβρίου 2013 Βασικά δε χρησιμοποιούμε καθόλου mysql extension για κανένα λόγο. mysqli ή pdo. Επίσης δε φτιάχνουμε ποτέ queries "manually" κολλώντας παραμέτρους αλλά χρησιμοποιούμε prepared statements, στην οποία περίπτωση το escape γίνεται αυτόματα (κι έτσι μηδενίζεται και η πιθανότητα λάθους). Prepared αυτα ειναι!!!! Απλά τον βλέπω σε entry level ακομη.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα