Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problemi con la creazione di un sito in PHP

    Buongiorno a tutti!
    Stiamo lavorando ad un progetto (universitario), per il quale dobbiamo realizzare un sito in locale.
    Il lavoro che stiamo svolgendo è relativo a un sito web di una scuola di sci, all'interno del quale è possibile prenotare la lezione.
    Abbiamo creato il calendario, relativo ad un singolo mese (è strutturato in una tabella, nelle colonne ci sono le fasce orarie che si possono scegliere mentre nelle righe ci sono i giorni del mese).
    Cattura di schermata (51).jpg
    La disponibilità dei giorni e le varie fasce orarie dipendono da un file di testo (la tabella è la lettura del file txt) che, inizialmente, è scritto a mano ma dovrebbe modificarsi a seconda delle prenotazioni avvenute.
    Il nostro problema è di sovrascrivere il file di testo in base ai checkbox selezionati, una volta premuto il pulsante sottostante la tabella. Successivamente, vorremmo che il checkbox occupato risultasse non selezionabile.
    Grazie in anticipo

  2. #2
    Non puoi modificare solo una parte del file di testo ma devi leggerlo riga per riga e riscriverlo e, contemporaneamente, controllare la disponibilità contenuta nel file con quella della tabella ed in caso modificarla.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Abbiamo creato una funzione che riscriva il file nel momento in cui l'utente preme il pulsante conferma. Però ora non riusciamo a far corrispondere la selezione del checkbox al cambio di stato. Di conseguenza non si modifica il file di testo e la tabella non segna lo stato occupato.

  4. #4
    Mica abbiamo la sfera di cristallo però! Se magari posti il codice...
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Questo è il codice relativo alla tabella che visualizza i dati del file di testo
    <?php include 'funzioni.php';?>
    <form name="form" method="post" action ="pulsanteconferma.php">
    <table border = "1" cellpadding="10" width = "1200" height = "1500" align = "center">
    <br>
    <tr>
    <td>
    </td>
    <td align = "center">
    09.00-10.00
    </td>
    <td align = "center">
    10.00-11.00
    </td>
    <td align = "center">
    11.00-12.00
    </td>
    <td align = "center">
    12.00-13.00
    </td>
    <td align = "center">
    13.00-14.00
    </td>
    <td align = "center">
    14.00-15.00
    </td>
    <td align = "center">
    15.00-16.00
    </td>
    <td align = "center">
    16.00-17.00
    </td>
    </tr>
    <?php for ($i = 1; $i < 32; $i++) { ?>
    <tr>
    <td align = "center"><span><?php echo "$i dicembre"; ?></span></td>
    <?php
    for ($j = 1; $j < 9; $j++) { ?>
    <td align = "center">
    <input type = "checkbox" name = "orario<?php echo "$i";?>[]" value = "<?php echo "$j";?>"/>
    <span><?php echo leggiDB($i,$j); ?></span>
    </td>
    <?php }
    ?>
    </tr>

    <?php } ?>
    </table>

    <br>
    <br>
    <input type = "submit" name = "registra" value = "Registra"> </input>


    <br>
    <br>

    </form>

    Questo è il codice del file funzioni.php che ho richiamato nel file precedente
    <?php


    function leggiDB($giorno, $ora)
    {

    // Apriamo il file con il DB
    $file = fopen('orario.txt',"r");

    while (!feof($file))
    {
    $riga = fgets($file);

    $parti = explode(";",$riga);

    // parti[0] = dicembre, parti[1] = numday, parti[2] = si
    if (intval($parti[1]) == $giorno)
    {

    // Siamo nel giorno giusto! Cerchiamo l'ora!
    echo $parti[$ora + 1];

    }

    }
    fclose($file);
    }


    function scriviDB ($giorno, $ora, $ID)
    {


    // Ogni volta che questa funzione viene chiamata
    // sovrascrive l'intero file

    $stringa = "";

    $file = fopen("orario.txt", "r");

    while (!feof($file))
    {

    $riga = fgets($file);
    $rigaNuova = "";

    $parti = explode(";",$riga);

    if (intval($parti[1] == $giorno))
    {
    // Cambia la stringa
    // TODO: Da aggiungere l'ID dell'utente che ha prenotato
    $parti[$ora+1] = "no:" . $ID; // :ID

    for ($j = 0; $j < count($parti); $j++)
    {
    if ($j == (count($parti) -1))
    {
    $rigaNuova = $rigaNuova . $parti[$j];
    } else
    {
    $rigaNuova = $rigaNuova . $parti[$j] . ";";
    }
    }
    } else
    {
    $rigaNuova = $riga;
    }

    $stringa = $stringa . $rigaNuova;
    }
    fclose($file);

    $file = fopen("orario.txt","w");
    fwrite($file, $stringa);

    fclose($file);
    }
    ?>

  6. #6
    La funzione scriviDB() non viene richiamata da nessuna parte nel codice.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Questo è il file all'interno del quale abbiamo richiamato la funzione scriviDB. Quello che fa quando viene premuto il tasto registra.
    <?php
    session_start();
    ?>
    <html>
    <head>
    <title> Mese di <?php $handle = fopen ("orario.txt", "r") or die("Non sono capace di leggere il file");
    $testo = fgets($handle);
    $parti = explode (';',$testo);
    echo "$parti[0]"; ?>
    </title>
    </head>


    <body>
    <?php
    $numore = 0; //variabile per il conteggio delle ore selezionate totali


    $stringaOrari = ["09.00-10.00", "10.00-11.00","11.00-12.00","12.00-13.00","13.00-14.00","14.00-15.00","15.00-16.00","16.00-17.00"];
    $_SESSION["prenotazioni"] = "";
    for($numday=1; $numday<32; $numday++) //per ogni giorno
    {


    if (isset($_POST["orario$numday"])) //controlla se è stato selezionato uno o più checkbox
    {
    $orario = $_POST["orario$numday"]; //salva il selezionato nella variabile $orario


    $numerofasceselezionate = count ($orario); //Utilizzo count per contare il numero di valori contenuti nell'array
    echo "<table border = \"1\"><tr><td></td>"; //stampo la tabella

    echo "<td colspan =\"2\"> FASCIA ORARIA </td></tr>";
    for($i=0; $i<$numerofasceselezionate; $i++) //per tutte le ore selezionate (per ogni giorno) mi stampa il risultato e incrementa $numore
    {

    //scriviDB ($giorno, $ora);
    $_SESSION["prenotazioni"] .= "" . $numday . ":" . $orario[$i] . ";";

    echo "<tr><td>" . $stringaOrari[$orario[$i] - 1] . "</td></tr>" . "<tr><td> per il giorno </td>" . "<td>$numday dicembre " . "</td></tr><br>";
    $numore++;
    }

    echo "<tr><td> numero ore prenotate al giorno </td>" , "<td>$numerofasceselezionate </td>"; //stampa le ore giornaliere
    }

    }
    echo "</tr></table>"; //stampa la fine della tabella


    if ($numore == 0) //se non è stata selezionata alcuna fascia, allora l'output sarà Non hai selezionato alcuna fascia oraria
    {
    echo "Non hai selezionato alcuna fascia oraria <br>";
    } else
    {
    echo "<br><table border =\"1\"><tr><td> numero totale delle ore prenotate </td>" , "<td>$numore </td>"; //stampa le ore totali, la somma di quelle di tutti i giorni ($numore)
    }




    echo "</tr></table><br>";
    echo "<form name=\"form\" method=\"post\" action=\"sceglioradicembre.php\"><input type=\"submit\" name=\"annulla\" value=\"Annulla Prenotazione\"></input></form>";
    echo "<form name=\"form\" method=\"post\" action=\"registrazione.php\"><input type=\"submit\" name=\"continua\" value=\"Continua\"></input></form>";




    if (isset ($_POST['registra']))
    {

    if (isset ($_POST ['orario']))
    { echo "pff";
    $orario = $_POST["orario"];
    if ($orario == "no")
    include 'funzioni.php';




    ?>

  8. #8
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    Codice PHP:
    <?php 

    include "funzioni.php";

    $html = <<<EOF
    <form name="form" method="post" action ="pulsanteconferma.php">
    <table border = "1" cellpadding="10" width = "1200" height = "1500" align = "center">
    <br>
    <tr>
    <td>
    </td>
    <td align = "center">
    09.00-10.00
    </td>
    <td align = "center">
    10.00-11.00
    </td>
    <td align = "center">
    11.00-12.00
    </td>
    <td align = "center">
    12.00-13.00
    </td>
    <td align = "center">
    13.00-14.00
    </td>
    <td align = "center">
    14.00-15.00
    </td>
    <td align = "center">
    15.00-16.00
    </td>
    <td align = "center">
    16.00-17.00
    </td>
    </tr>
    EOF;

    for (
    $i 1$i 32$i++) {
        
    $html .= <<<EOF
        <tr>
            <td align = "center"><span>
    $i dicembre</span></td>
    EOF;

        for (
    $j 0$j 8$j++) {
            
    $check "";
            
    $db_res leggiDB($i$j);
            if(
    $db_res == 1){
                
    $check "<input type=\"hidden\" name=\"orario{$i}[$j]\" value=\"1\" />";
                
    $check .= "<input type=\"checkbox\" disabled=\"disabled\" checked=\"checked\" />";
            }else{
                
    $check .= "<input type=\"checkbox\" name=\"orario{$i}[$j]\" value=\"1\" />";
            }
            
    $html .= <<<EOF
                <td align = "center">
                    
    $check
                    <span></span>
                </td>
    EOF;
        }
        
    $html .= "</tr>";
    }
    $html .= <<<EOF
    </table>
    <br /><br />
    <input type = "submit" name = "registra" value = "Registra" />
    <br /><br />
    </form>
    EOF;

    print 
    $html;

    ?>
    file pulsanteconferma.php
    Codice PHP:
    <?php

    session_start
    ();

    include 
    "funzioni.php";

    $handle fopen ("orario.txt""r") or die("Non sono capace di leggere il file");
    $testo fgets($handle);
    $parti explode (";"$testo);
    $mese "$parti[0]";
        
    $html = <<<EOF
    <html>
        <head>
            <title> Mese di 
    $mese</title>
        </head>
        <body>
    EOF;

    $id 0// inserire id utente
    $numore 0// variabile per il conteggio delle ore selezionate totali

    $stringaOrari = array("09.00-10.00""10.00-11.00","11.00-12.00","12.00-13.00","13.00-14.00","14.00-15.00","15.00-16.00","16.00-17.00");
    $_SESSION["prenotazioni"] = "";
    for(
    $numday=1$numday<32$numday++){ //per ogni giorno
        
    if(isset($_POST["orario$numday"])){ //controlla se è stato selezionato uno o più checkbox
            
    $orario $_POST["orario$numday"]; //salva il giorno selezionato nella variabile $orario
            
    $numerofasceselezionate count($orario); //Utilizzo count per contare il numero di valori contenuti nell'array
            
    $html .= "<table border = \"1\">"//stampo la tabella
            
    foreach($orario as $fascia => $bool){
                
    $gia_prenotato leggiDB($numday$fascia);
                if(
    $gia_prenotato == $bool){
                    
    // il valore era già presente nel DB, skippiamolo
                    
    $numerofasceselezionate $numerofasceselezionate 1;
                }else{
                    
    scriviDB ($numday$fascia$bool$id);
                    
    $_SESSION["prenotazioni"] .= "" $numday ":" $fascia ";";
                    
    $html .= "<tr><td>fascia oraria</td>";
                    
    $html .= "<td>{$stringaOrari[$fascia]}</td>";
                    
    $html .= "</tr>";
                    
    $html .= "<tr><td> per il giorno </td>" "<td>$numday dicembre " "</td></tr><br>";
                    
    $numore++;
                }
            }

            
    $html .= "<tr><td> numero ore prenotate al giorno </td>";
            
    $html .= "<td>$numerofasceselezionate</td>"//stampa le ore giornaliere
        
    }
    }
    $html .= "</tr></table>"//stampa la fine della tabella

    if ($numore == 0){ //se non è stata selezionata alcuna fascia, allora l'output sarà Non hai selezionato alcuna fascia oraria
        
    $html .= "Non hai selezionato alcuna fascia oraria <br>";
    }else{
        
    $html .= "<br><table border =\"1\"><tr><td> numero delle ore prenotate </td>";
        
    $html .= "<td>$numore </td>"//stampa le ore totali, la somma di quelle di tutti i giorni ($numore)
    }

    $html .= "</tr></table><br>";
    $html .= "<form name=\"form\" method=\"post\" action=\"sceglioradicembre.php\"><input type=\"submit\" name=\"annulla\" value=\"Annulla Prenotazione\" /></form>";
    $html .= "<form name=\"form\" method=\"post\" action=\"registrazione.php\"><input type=\"submit\" name=\"continua\" value=\"Continua\" /></form>";

    print 
    $html;

    ?>
    da aggiungere al file funzioni.php
    Codice PHP:
    <?php

        
    /*
        nota by brodik
        struttura file orario
        mese;giorno;orario;prenotazione;id
        [string];[int];[bool];[int]
        dicembre;1;0;0;1
        orario:
        0 => 09.00-10.00
        1 => 10.00-11.00
        2 => 11.00-12.00
        3 => 12.00-13.00
        4 => 13.00-14.00
        5 => 14.00-15.00
        6 => 15.00-16.00
        7 => 16.00-17.00
        */

    function leggiDB($giorno$ora$internal false){

        
    // Apriamo il file con il DB
        
    $file fopen("orario.txt""r") or die("Non sono capace di leggere il file");

        if(
    $internal == true){
            
    $value = array();
            while (!
    feof($file)){
                
    $value[] = fgets($file);
            }
        }else{
            while (!
    feof($file)){
                
    $riga fgets($file);
                
    $parti explode(";"$riga);
                
    // parti[0] = mese, parti[1] = giorno, parti[2] = orario, parti[3] = prenotazione, parti[4] = id
                
    if (intval($parti[1]) == $giorno && intval($parti[2]) == $ora){
                    
    // Siamo nel giorno e nell'ora giusta, è prenotato?
                    
    $value $parti[3];
                }
            }
        }

        
    fclose($file);
        return 
    $value;

    }

    function 
    scriviDB($giorno$ora$prenotato$id=0){

        
    // Ogni volta che questa funzione viene chiamata
        // sovrascrive l'intero file
        // mese;giorno;orario;prenotazione;id
        
    $db_esistente leggiDB($giorno$oratrue);

        
    $file fopen("orario.txt""w+") or die("Non sono capace di leggere il file");

        
    $this_value "dicembre;".$giorno.";".$ora.";";
        
    $new_value "dicembre;".$giorno.";".$ora.";".$prenotato.";".$id;

        foreach(
    $db_esistente as $riga => $valore){
            if (
    strpos($valore$this_value) !== false) {
                
    $valore $new_value.PHP_EOL;
            }else{
                
    $valore $valore;
            }
            
    fwrite($file$valore);
        }

        
    fclose($file);

    }

    ?>
    file base orari.txt
    codice:
    dicembre;1;0;0;0
    dicembre;1;1;0;0
    dicembre;1;2;0;0
    dicembre;1;3;0;0
    dicembre;1;4;0;0
    dicembre;1;5;0;0
    dicembre;1;6;0;0
    dicembre;1;7;0;0
    dicembre;2;0;0;0
    dicembre;2;1;0;0
    dicembre;2;2;0;0
    dicembre;2;3;0;0
    dicembre;2;4;0;0
    dicembre;2;5;0;0
    dicembre;2;6;0;0
    dicembre;2;7;0;0
    dicembre;3;0;0;0
    dicembre;3;1;0;0
    dicembre;3;2;0;0
    dicembre;3;3;0;0
    dicembre;3;4;0;0
    dicembre;3;5;0;0
    dicembre;3;6;0;0
    dicembre;3;7;0;0
    dicembre;4;0;0;0
    dicembre;4;1;0;0
    dicembre;4;2;0;0
    dicembre;4;3;0;0
    dicembre;4;4;0;0
    dicembre;4;5;0;0
    dicembre;4;6;0;0
    dicembre;4;7;0;0
    dicembre;5;0;0;0
    dicembre;5;1;0;0
    dicembre;5;2;0;0
    dicembre;5;3;0;0
    dicembre;5;4;0;0
    dicembre;5;5;0;0
    dicembre;5;6;0;0
    dicembre;5;7;0;0
    dicembre;6;0;0;0
    dicembre;6;1;0;0
    dicembre;6;2;0;0
    dicembre;6;3;0;0
    dicembre;6;4;0;0
    dicembre;6;5;0;0
    dicembre;6;6;0;0
    dicembre;6;7;0;0
    dicembre;7;0;0;0
    dicembre;7;1;0;0
    dicembre;7;2;0;0
    dicembre;7;3;0;0
    dicembre;7;4;0;0
    dicembre;7;5;0;0
    dicembre;7;6;0;0
    dicembre;7;7;0;0
    dicembre;8;0;0;0
    dicembre;8;1;0;0
    dicembre;8;2;0;0
    dicembre;8;3;0;0
    dicembre;8;4;0;0
    dicembre;8;5;0;0
    dicembre;8;6;0;0
    dicembre;8;7;0;0
    dicembre;9;0;0;0
    dicembre;9;1;0;0
    dicembre;9;2;0;0
    dicembre;9;3;0;0
    dicembre;9;4;0;0
    dicembre;9;5;0;0
    dicembre;9;6;0;0
    dicembre;9;7;0;0
    dicembre;10;0;0;0
    dicembre;10;1;0;0
    dicembre;10;2;0;0
    dicembre;10;3;0;0
    dicembre;10;4;0;0
    dicembre;10;5;0;0
    dicembre;10;6;0;0
    dicembre;10;7;0;0
    dicembre;11;0;0;0
    dicembre;11;1;0;0
    dicembre;11;2;0;0
    dicembre;11;3;0;0
    dicembre;11;4;0;0
    dicembre;11;5;0;0
    dicembre;11;6;0;0
    dicembre;11;7;0;0
    dicembre;12;0;0;0
    dicembre;12;1;0;0
    dicembre;12;2;0;0
    dicembre;12;3;0;0
    dicembre;12;4;0;0
    dicembre;12;5;0;0
    dicembre;12;6;0;0
    dicembre;12;7;0;0
    dicembre;13;0;0;0
    dicembre;13;1;0;0
    dicembre;13;2;0;0
    dicembre;13;3;0;0
    dicembre;13;4;0;0
    dicembre;13;5;0;0
    dicembre;13;6;0;0
    dicembre;13;7;0;0
    dicembre;14;0;0;0
    dicembre;14;1;0;0
    dicembre;14;2;0;0
    dicembre;14;3;0;0
    dicembre;14;4;0;0
    dicembre;14;5;0;0
    dicembre;14;6;0;0
    dicembre;14;7;0;0
    dicembre;15;0;0;0
    dicembre;15;1;0;0
    dicembre;15;2;0;0
    dicembre;15;3;0;0
    dicembre;15;4;0;0
    dicembre;15;5;0;0
    dicembre;15;6;0;0
    dicembre;15;7;0;0
    dicembre;16;0;0;0
    dicembre;16;1;0;0
    dicembre;16;2;0;0
    dicembre;16;3;0;0
    dicembre;16;4;0;0
    dicembre;16;5;0;0
    dicembre;16;6;0;0
    dicembre;16;7;0;0
    dicembre;17;0;0;0
    dicembre;17;1;0;0
    dicembre;17;2;0;0
    dicembre;17;3;0;0
    dicembre;17;4;0;0
    dicembre;17;5;0;0
    dicembre;17;6;0;0
    dicembre;17;7;0;0
    dicembre;18;0;0;0
    dicembre;18;1;0;0
    dicembre;18;2;0;0
    dicembre;18;3;0;0
    dicembre;18;4;0;0
    dicembre;18;5;0;0
    dicembre;18;6;0;0
    dicembre;18;7;0;0
    dicembre;19;0;0;0
    dicembre;19;1;0;0
    dicembre;19;2;0;0
    dicembre;19;3;0;0
    dicembre;19;4;0;0
    dicembre;19;5;0;0
    dicembre;19;6;0;0
    dicembre;19;7;0;0
    dicembre;20;0;0;0
    dicembre;20;1;0;0
    dicembre;20;2;0;0
    dicembre;20;3;0;0
    dicembre;20;4;0;0
    dicembre;20;5;0;0
    dicembre;20;6;0;0
    dicembre;20;7;0;0
    dicembre;21;0;0;0
    dicembre;21;1;0;0
    dicembre;21;2;0;0
    dicembre;21;3;0;0
    dicembre;21;4;0;0
    dicembre;21;5;0;0
    dicembre;21;6;0;0
    dicembre;21;7;0;0
    dicembre;22;0;0;0
    dicembre;22;1;0;0
    dicembre;22;2;0;0
    dicembre;22;3;0;0
    dicembre;22;4;0;0
    dicembre;22;5;0;0
    dicembre;22;6;0;0
    dicembre;22;7;0;0
    dicembre;23;0;0;0
    dicembre;23;1;0;0
    dicembre;23;2;0;0
    dicembre;23;3;0;0
    dicembre;23;4;0;0
    dicembre;23;5;0;0
    dicembre;23;6;0;0
    dicembre;23;7;0;0
    dicembre;24;0;0;0
    dicembre;24;1;0;0
    dicembre;24;2;0;0
    dicembre;24;3;0;0
    dicembre;24;4;0;0
    dicembre;24;5;0;0
    dicembre;24;6;0;0
    dicembre;24;7;0;0
    dicembre;25;0;0;0
    dicembre;25;1;0;0
    dicembre;25;2;0;0
    dicembre;25;3;0;0
    dicembre;25;4;0;0
    dicembre;25;5;0;0
    dicembre;25;6;0;0
    dicembre;25;7;0;0
    dicembre;26;0;0;0
    dicembre;26;1;0;0
    dicembre;26;2;0;0
    dicembre;26;3;0;0
    dicembre;26;4;0;0
    dicembre;26;5;0;0
    dicembre;26;6;0;0
    dicembre;26;7;0;0
    dicembre;27;0;0;0
    dicembre;27;1;0;0
    dicembre;27;2;0;0
    dicembre;27;3;0;0
    dicembre;27;4;0;0
    dicembre;27;5;0;0
    dicembre;27;6;0;0
    dicembre;27;7;0;0
    dicembre;28;0;0;0
    dicembre;28;1;0;0
    dicembre;28;2;0;0
    dicembre;28;3;0;0
    dicembre;28;4;0;0
    dicembre;28;5;0;0
    dicembre;28;6;0;0
    dicembre;28;7;0;0
    dicembre;29;0;0;0
    dicembre;29;1;0;0
    dicembre;29;2;0;0
    dicembre;29;3;0;0
    dicembre;29;4;0;0
    dicembre;29;5;0;0
    dicembre;29;6;0;0
    dicembre;29;7;0;0
    dicembre;30;0;0;0
    dicembre;30;1;0;0
    dicembre;30;2;0;0
    dicembre;30;3;0;0
    dicembre;30;4;0;0
    dicembre;30;5;0;0
    dicembre;30;6;0;0
    dicembre;30;7;0;0
    dicembre;31;0;0;0
    dicembre;31;1;0;0
    dicembre;31;2;0;0
    dicembre;31;3;0;0
    dicembre;31;4;0;0
    dicembre;31;5;0;0
    dicembre;31;6;0;0
    dicembre;31;7;0;0
    eXvision

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.