Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Δεν είμαι πολύ σχετικούς αλλά τώρα τα διαβάζω και προσπαθώ να κάνω μια αναζήτηση στην βάση μου. Δεν ξέρω ακριβώς το λάθος αλλά πιστεύω ότι δεν έχω βάλει τιμή στην $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....";}
 
?>

 

 

Δημοσ.

Πρώτον φτιάξε το post σου και βάλε τον κώδικα σε code tags γιατί δε διαβάζεται έτσι.

 

Δεύτερον, το σφάλμα στο λέει ποιό είναι το πρόβλημα. To $q είναι boolean (false) άρα το query απέτυχε. Για αρχή προσπάθησε να τρέξεις το query κατευθείαν στη βάση να δείς αν λειτουργεί και έλεγξε την τιμή του $result.

Δημοσ.

Δεν παιρνάμε καθόλου μεταβλητές από το query πρωτού τα περάσεις μια από mysql_real_escape_string().

 

Βασικά δε χρησιμοποιούμε καθόλου mysql extension για κανένα λόγο. mysqli ή pdo.

 

Επίσης δε φτιάχνουμε ποτέ queries "manually" κολλώντας παραμέτρους αλλά χρησιμοποιούμε prepared statements, στην οποία περίπτωση το escape γίνεται αυτόματα (κι έτσι μηδενίζεται και η πιθανότητα λάθους).

Δημοσ.

Βασικά δε χρησιμοποιούμε καθόλου mysql extension για κανένα λόγο. mysqli ή pdo.

 

Επίσης δε φτιάχνουμε ποτέ queries "manually" κολλώντας παραμέτρους αλλά χρησιμοποιούμε prepared statements, στην οποία περίπτωση το escape γίνεται αυτόματα (κι έτσι μηδενίζεται και η πιθανότητα λάθους).

Prepared αυτα ειναι!!!! Απλά τον βλέπω σε entry level ακομη.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...