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

    controllo in real time su form posti disponibili per data

    salve raga,
    mi serve un piccolo aiutino con del codice.

    ho un normale form html che invia dati su un db mysql.

    ho un campo data proveniente da una select option. Vorrei che alla selezione della data della select mi si esegua un count di quanti posti disponibili ci sono ancora con relativa azione successiva di non permettere la registrazione per quella data ed effettuare una echo di avviso all'utente.

    quindi lo schema logico sarebbe questo :
    1. seleziono data
    2. count record su db per quella data
    3. controllo valori, se trovo 0,1,2 record permetti se trovo 3 nega (blocco tasto submit)
    4. avviso l'utente tramite echo

    naturalmente vorrei che ciò avvenisse alla selezione della data e non solo all'invio della form, poi se non è fattibile usiamo la procedura più consona.

    da dove dovrei iniziare?

    grazie

  2. #2
    credo che una possibile via sia eseguire una query su db tramite la funziona onchange sulla select e poi andare con print.

    qualcuno di buona volontà potrebbe farmi un esempio della formattazione del codice da usare con onchange?

    sarebbe complicato poi dopo questa funzione bloccare o meno il submit del form ?

    Grazie mille a chi vorrà darmi una mano

  3. #3
    Allora, questo è un incrocio come ovviamente saprai di HTML (eventi) e PHP, anche JS....

    Il problema è questo...visto che tu devi avere delle informazioni per X data, non puoi con l'evento onchange, eseguire una query, in quanto 1°, come preleveresti il dato cambiato, in JS è possibile con il namespace this.attributo..

    Dunque io lo farei che in intestazione costruisco in JS un oggetto contenente tutti i dati per le date contenute dentro il select, quindi il famoso count che ti serve....il tutto identificato con un indice numerico,0,1,2....

    All'onchange fare che venga stampato a video un alert accedendo all'interno dell'oggetto con il this.value, che sarà numerico.

    Per il tuo esempio sull'onchange :

    <select name="MioSelect" onchange="alert('La data selezionata :'.this.value);">
    <option value='2011-08-12'>2011-08-12</option>
    <option value='2011-08-14'>2011-08-13</option>
    <option value='2011-08-14'>2011-08-14</option>
    </select>

  4. #4
    L'unica strada è l'uso di ajax.
    Eventi onchange eccetera senza l'uso di ajax, per lo scopo che dici tu (evitare il submit) non sono efficenti: nel momento in cui estrai le disponibilità, un altro utente potrebbe aver inviato la richiesta e prenotato la camera/macchina/autobus/bicicletta e dai dati estratti poco prima non apparirebbe.

    Ajax, l'unica strada sensata

  5. #5
    @SkyBlue : quindi this.value nella select dovrei collegarlo alla query count per il db giusto?

    @Dascos : non mi sono mai avvicinato ad ajax hai qualche link sull'argomento da passarmi in modo da consultare anche questa possibile soluzione ?

    Grazie mille raga

  6. #6
    allora raga, tralasciando il blocco del submit e le relative problematiche di non usare ajax ho trova questo codice modificandolo un pò ma che di sicuro è errato lo so

    nel file de form.php ho inserito nell'head questo :
    codice:
    <script type="text/javascript"> 
    function showUser(str) { if (str=="") { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new 
    ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","getuser.php?q="+str,true); xmlhttp.send(); } </script>
    e sempre nel form.php ho impostato la select in questo modo :

    codice:
    <select name="dataprova" id="dataprova" type="text" onchange="showUser(this.value)" > 
    <option selected value=""> Seleziona ... </option>
     <option value="4 Settembre 2011"> 4 Settembre 2011 </option> 
    <option value="11 Settembre 2011"> 11 Settembre 2011 </option> 
    <option value="3"> 18 Settembre 2011 </option> 
    <option value="4"> 25 Settembre 2011 </option> 
    <option value="5"> 2 Ottobre 2011 </option>
     <option value="6"> 9 Ottobre 2011 </option>
     <option value="7"> 16 Ottobre 2011 </option>
     <option value="8"> 23 Ottobre 2011 </option>
     <option value="9"> 30 Ottobre 2011 </option> 
    <option value="10"> 6 Novembre 2011 </option> 
    <option value="11"> 13 Novembre 2011 </option> 
    <option value="12"> 20 Novembre 2011 </option>
     <option value="13"> 27 Novembre 2011 </option> 
    <option value="14"> 4 Dicembre 2011 </option> 
    <option value="15"> 11 Dicembre 2011 </option>
     <option value="16"> 18 Dicembre 2011 </option> 
    </select>
    il file getuser.php è questo :
    Codice PHP:
    <?php $q=$_GET["q"]; 
    // richiamo lo script responsabile della connessione a MySQL require 'connect.php'; 
    $sql="SELECT COUNT(dataprova) FROM prenotazioni";
     
    $result mysql_query($sql); 

    if (
    $q=1printf ("3 Posti Disponibili"); 
    else if (
    $q=2printf ("2 Posti Disponibili"); 
    else 
    printf ("1 Posto Disponibile"); 
    echo 
    "(.$q.)" ?>
    mi aiutate a trovare gli errori ?

    nel getuser.php dovrei verificare quante volte è presente nella tabella prenotazioni campo dataprova la data della select e recuperare questo valore con un numero da 0 a 3...

    se è 0 stampo a video 3 posti disp
    se è 1 stampo a video 2 posti disp
    se è 2 stampo a video 1 posto disp
    se è 3 stampo a video nessun posto disp

  7. #7
    http://www.xajax-project.org/

    Io uso queste classi e mi trovo benissimo, dato che mi devo preoccupare solo del lato php mentre lato html/js devo solo mettere le corrette chiamate sugli eventi tipo onsubmit, onchange, onclick eccetera.
    Tipico evento
    codice:
    <input type="text" id="citta" name="citta" value="" onkeyup="xajax_cerca_citta(this.value)">
    Sta poi alla parte php fare quel che serve. Sul sito che ho linkato comunque trovi tutto il necessario.


  8. #8
    uhm troppo complicato da sviluppare in poco tempo con le attuali conoscenze in materia di cui dispongo...

    volendo fare una query COUNT sulla select e stampare semplicemente a video quante volte è stato contato il parametro nel db come potrei impostare il tutto

    Codice PHP:
         <select name="dataprova" id="dataprova" type="text" onchange="$query"> 
          <option selected value=""> Seleziona ... </option>
          <option value="04/09/2011">04/09/2011</option>
          <option value="11/09/2011">11/09/2011</option>
          <option value="18/09/2011">18/09/2011</option>
          <option value="25/09/2011">25/09/2011</option>
          <option value="02/10/2011">02/10/2011</option>
          <option value="09/10/2011">09/10/2011</option>
          <option value="16/10/2011">16/10/2011</option>
          <option value="23/10/2011">23/10/2011</option>
          <option value="30/10/2011">30/10/2011</option>
          <option value="06/11/2011">06/11/2011</option>
          <option value="13/11/2011">13/11/2011</option>
          <option value="20/11/2011">20/11/2011</option>
          <option value="27/11/2011">27/11/2011</option>
          <option value="04/12/2011">04/12/2011</option>
          <option value="11/10/2011">11/10/2011</option>
          <option value="18/10/2011">18/10/2011</option>
          </select>
               
                <?php
        $select 
    = (isset($_GET['dataprova'])) ? $_GET['dataprova'] : NULL;
        
    $query "COUNT ".$dataprova." FROM prenotazioni";
         
    printf " valorecount posti prenotati }
        ?>
    quanti errori mardonali ho commesso ?

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.