Problema nel coding

miglioraora

Nuovo Utente
29 Gen 2014
3
0
0
Ciao a tutti,

ho creato un sistema php cogestione.web44.net/index.php

E' il sistema di prenotazione per la cogestione di scuola.

Il sistema lavora così:
1) lo studente seleziona la sua classe (I-A,II-A...) -> il sistema seleziona i corsi che si terrano sul piano della classe ( quando aggiungo un corso inserisco il gruppo di classi che ne potranno usuffruire) e i corsi che non sono pieni.
2) lo studente inserisce i suoi dati
3) seleziona i suoi corsi( 2 al giorno)


Qual'è il problema?

Il problema è che se un corso risulta pieno , non viene cancellato dalla front page solo quello, ma tutti.

Questo è lo script, spero che qualcuno mi possa dare una mano.

PHP:
<head>
    <title>Prenotazione dei Corsi</title>
     <link rel="stylesheet" type="text/css" href="admin/style.css" />
    <link href="admin/form.css" rel="stylesheet">
    <script src="admin/js/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function() {
       
        $('input[type=radio]').click(function () {
                $('.course-radio').removeClass('selected-course');
                $(this).parent().addClass('selected-course');
        });
        
        $('.course-radio').hover(function(){
            $('.course-description').css('display','none');
           $(this).next('.course-description').css('display','block'); 
        },
        function(){
            $('.course-description').css('display','none');
        }
        );
        
        
    });
    </script>
</head>

<?php
include 'admin/config.php';
$msg = '';
$status_msg = '';

if(isset($_POST['submit'])){
$student_name = $_POST['student_name'];
$sur_name = $_POST['sur_name'];
$class =trim(stripslashes($_POST['class'])); 
$class_query = mysql_query("select * from class where name='".$class."'");
//print_r($class_query); exit;
$class_row = mysql_fetch_array($class_query);
$class_id = $class_row['id'];
$course1 = $_POST['course1'];
$course2 = $_POST['course2'];
$course3 = $_POST['course3'];
$course4 = $_POST['course4'];
$course5 = $_POST['course5'];
$course6 = $_POST['course6'];
$course7 = $_POST['course7'];
$course8 = $_POST['course8'];
$course9 = $_POST['course9'];
$course10 = $_POST['course10'];

$courses = array($course1,$course2,$course3,$course4,$course5,$course6,$course7,$course8,$course9,$course10);
//echo "<pre>";
//print_r($courses );
//echo "</pre>";
//exit;

if(empty($courses)){ //echo "1111"; exit;
        $msg = 'Please select at least one course'; 
} else {
//echo "22222"; exit;
$student_result = mysql_query("select fname,class_id from student where name='".$student_name."' AND class_id='".$class_id."'");
$student_row = mysql_fetch_array($student_result);
if($student_row['fname'] !== $student_name && $student_row['class_id'] !== $class_id ){  
$query = "insert into student (fname,sur_name,class_id) VALUES ('$student_name','$sur_name','$class_id')";
$result = mysql_query($query);
if ($result) {
$student_id = mysql_insert_id();                
} else {
$status_msg = "Failed. Try again1";
}

foreach($courses as $course ){
if($course!='') {
$query = "insert into studentcourse (student_id,course_id) VALUES ('$student_id','$course')";
$result = mysql_query($query);
if ($result) {
$status_msg = "<center>Student registered successfully.</center>";
} else {
$status_msg = "Failed. Try again2";
}
} 
    
} 
} else {
foreach ($courses as $course) {
if($course!='') {
$query = "insert into studentcourse (student_id,course_id) VALUES ('$student_id','$course')";
$result = mysql_query($query);
if ($result) {
$status_msg = "<center>Student registered successfully.</center>";
} else {
$status_msg = "Failed. Try again";
}
}
} 
}
}
}
?>



<center>
    
        <h2>Prenotazione Corsi::Cogestione 2014</h2>
        <h2>ideato da Lorenzo Sciarretta</h2>
        <p>assistenza Skype: Miglioraora</p>
        <form action="<?php $_PHP_SELF ?>" method="POST">

<br>
<div id="box-student">
    <center>
        <h4><?php echo $status_msg; ?></h4>
<table border="0">
<tr>
    <td width="80" >Classe</td>
    <td>
        <select name="class" onchange="window.location='<?php echo "index"; ?>.php?class='+this.value" >
            <option value="<?php echo $_REQUEST['class']; ?>"><?php echo $_REQUEST['class'];?></option>
            
            <?php
            $class_query = mysql_query("select name from class");
            while($class_row = mysql_fetch_array($class_query)){
            ?>
            
            <option value="<?php echo $class_row['name']; ?>"><?php echo $class_row['name'];?></option>
            <?php }?>
        </select>
    </td>
</tr>

<tr><td>Nome</td><td><input type="text" name="student_name" value="<?php echo $student_name; ?>" required></td></tr>
<tr><td>Cognome</td><td><input type="text" name="sur_name" value="<?php echo $sur_name; ?>" required></td></tr>
</table>
        
        <?php
        
        ?>
        
        <h4><?php echo $msg; ?></h4>
        <div id="course-selection">
            <?php 
            $n=0;
            $timing = "select distinct time,day from course";
            $result = mysql_query($timing);
            while($time_row = mysql_fetch_array($result)){
            $n++;
            $request_class = $_REQUEST['class'];
            $query = "select *,course.course_id as courseID from course,locations_group where time = '".$time_row['time']."' AND course.locations_group_id = locations_group.id AND locations_group.locations LIKE '%" . $request_class . "%'";
            $result1 = mysql_query($query);
            ?>
            <div class="course-list">
                <div class="course-list-header">
                     <?php echo $time_row['day'] ?>&nbsp;<?php echo $time_row['time'] ?>
            </div>

                     <?php
                    while ($row = mysql_fetch_array($result1)) {    
                    $booked_seats = 0;
                    $query = mysql_query("select count('course_id') from studentcourse where course_id='".$row['courseID']."'");
                    $booked_seats = ceil(mysql_result($query,0));
                    $query = mysql_query("select * from course where course_id='".$row['courseID']."'");
                    $seats_row = mysql_fetch_array($query);
                    $remaining_seats = $seats_row['seats']-$booked_seats;
                    if($remaining_seats <= 0){
                        break;
                    }
                     ?>
                <div class="course-radio">
                    
                    <input type="radio" name="course<?php echo $n; ?>" id="course<?php echo $row['courseID']; ?>" value="<?php echo $row['courseID']; ?>">
                    <label for="course<?php echo $row['courseID']; ?>" ><?php echo $row['title']; ?></label><br/>
                    <label for="course<?php echo $row['courseID']; ?>" >
                    <?php
                    echo "Remaining Seats : ";
                    echo $remaining_seats;
                    ?>
                        </label><br/>
                    
                    <label for="course<?php echo $row['id']; ?>" >Room : <?php echo $row['room'];?></label>
                    
                </div>
                <div class="course-description">
                        <?php echo $row['description']; ?>
                </div>
                
            
            
            <?php 
            }
            ?>
        </div> 
            
            <?php if($n == 5){?>
                
                <div class="course-break" ></div>
        
            <?php }
            
            }?>
        </div>    

        <br/>
        <table style="clear: both;">
         <tr><td colspan="2" ><input class="button add-button" type="submit" name="submit" value="Clicca qui per confermare la tua prenotazione"/></td></tr> 
        </table>
        
    </center>    

    
   </div>



        </form>
</center>


Qualcuno mi potrebbe gentilmente aiutare?

Grazie!
 
si il primo corso con posti esauriti (seats<=0) interrompe il ciclo while impedendo anche ai successivi risultati della query di essere gestiti

non sono per niente ferrato nell'uso di mysql e capisco poco tutte quelle query successive ma ti suggerisco di inserire il controllo dei posti liberi direttamente nella select,
$query = mysql_query("select * from course where course_id='".$row['courseID']."' and seats>0");
avendo cura che nel db il campo seats sia un campo numerico
spero di aver individuato il problema e la sua soluzione
ciao
marino
 
si il primo corso con posti esauriti (seats<=0) interrompe il ciclo while impedendo anche ai successivi risultati della query di essere gestiti

non sono per niente ferrato nell'uso di mysql e capisco poco tutte quelle query successive ma ti suggerisco di inserire il controllo dei posti liberi direttamente nella select,
$query = mysql_query("select * from course where course_id='".$row['courseID']."' and seats>0");
avendo cura che nel db il campo seats sia un campo numerico
spero di aver individuato il problema e la sua soluzione
ciao
marino

Ciao!

Grazie mille, risolto!

C'è un problema. Il sistema non distingue i giorni, cioè i corsi del lunedì appaiono pari pari nel mercoledì.

Sai dove sorge questo problema?

Grazie mille
 
ciao,
$query = "select *,course.course_id as courseID from course,locations_group where time = '".$time_row['time']."' AND course.locations_group_id = locations_group.id AND locations_group.locations LIKE '%" . $request_class . "%'";

mi sembra che qui selezioni con la clausola time = '".$time_row['time']."' ma ti sei dimenticato di inserire la stessa cosa per ['day']

fammi sapere, ciao
marino
 
ciao,
$query = "select *,course.course_id as courseID from course,locations_group where time = '".$time_row['time']."' AND course.locations_group_id = locations_group.id AND locations_group.locations LIKE '%" . $request_class . "%'";

mi sembra che qui selezioni con la clausola time = '".$time_row['time']."' ma ti sei dimenticato di inserire la stessa cosa per ['day']

fammi sapere, ciao
marino

Grazie

ma adesso non visualizza nessun corso. :(
 

Discussioni simili