[PHP] Dubbio valore variabile

Discussione in 'PHP' iniziata da paloppa, 5 Marzo 2018.

  1. paloppa

    paloppa Utente Attivo

    Registrato:
    26 Febbraio 2018
    Messaggi:
    68
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Salve a tutti, ho un dubbio su l'assegnamento di una variabile.
    Nello specifico , sto usando uno script di jquery ui che una volta che l'utente seleziona una determinata data, appare una finestra con tutte le offerte disponibili.

    Quindi facendo un esempio:
    l'utente entra nel sito , compila i campi nome , cognome, email, oggetto, data di arrivo e data di partenza. Una volta che entrambe le date sono state inserite dall'utente, faccio una query , cercando le offerte che sono prenotabili in quel range di date, e le stampo a video , cosi che l'utente può decidere quella che piu' gli aggrada.

    Ora, il mio dubbio è il seguente: perchè se provo a stampare $_POST['data_arrivo'] non mi stampa niente? Considerando che data_arrivo è il nome del campo della data di arrivo che inserisce l'utente, devo per forza inviare il form affinche $_POST['data_arrivo'] venga memorizzata?
     
  2. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    404
    Mi Piace Ricevuti:
    19
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Dipende da come la invii con ajax.... fai un
    PHP:
    print_r($_POST)
     
  3. paloppa

    paloppa Utente Attivo

    Registrato:
    26 Febbraio 2018
    Messaggi:
    68
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Ho provato cosi
    PHP:
      $a=$_POST['data_partenza'];
                    
    print_r ($a);
    ma niente, non stampa niente
     
  4. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    404
    Mi Piace Ricevuti:
    19
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Stampa tutta la variabile post così vedi cosa stampa...
     
  5. paloppa

    paloppa Utente Attivo

    Registrato:
    26 Febbraio 2018
    Messaggi:
    68
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Mi stampa questo
    Array ( )
    :eek:
     
  6. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    404
    Mi Piace Ricevuti:
    19
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    allora non la stai passando!
     
  7. paloppa

    paloppa Utente Attivo

    Registrato:
    26 Febbraio 2018
    Messaggi:
    68
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Può essere perchè non ho chiuso il form, e sto facendo tutto prima che si chiuda il form?

    Qui il codice


    PHP:
    //dichiaro il campo per la data di arrivo
    <div style="float:left; width:100%; height:100%;">
                 <span style="padding-top: 17px; padding-left:7px; display:block; float:left; width:40%; height:10%;">Selezionare Data di arrivo</span>
                 <p><input style="display:block; float:left; width:60%; height:10%;" type="text" name="data_arrivo" id="data_arrivo" required></p>
             </div>
           //dichiaro campo per data di partenza
      <div style="float:left; width:100%; height:100%;">
                 <p><span style="padding-top: 17px; padding-left:7px; display:block; float:left; width:40%; height:10%; ">Selezionare Data di partenza</span></p>
                 <p><input style="display:block; float:left; width:60%; height:10%;" type="text" name="data_partenza" id="data_partenza" required></p>
             </div>
             //div che appare non appena le date sono state selezionate dall'utente
    <div class="hidden show_div">
             <p style= "text-align:center; font-weight:bold;">Offerte Disponibili nel periodo da Lei selezionato : </p>
                 <?php
    //mi collego al DB per prendere la data scritta dall'utente e verificare quali offerte sono disponibili nel range
                    
    print_r ($_POST);
                    
    $connessione=mysqli_connect("localhost","root","","lavoro") or die ("Impossibile connettersi");
                    
    $query_offerte="SELECT post_id from rlnz_postmeta where meta_key='inizio'";
                    
    ?>
                    <div style="text-align:center; font-weight:bold;">
                        
                    <?php
                    $i
    =0;
                    
    $res=mysqli_query($connessione,$query_offerte);
                     while(
    $row mysqli_fetch_array($res)){
                        
                     print 
    $row['post_id'];?><input type="radio" name="offerta" value="valore<?php $i;?>"/>
                        <?php
                         $i
    ++;
                         print 
    "<br/>";
                     }
                
                
                 
    ?>
                 </div>
     
  8. paloppa

    paloppa Utente Attivo

    Registrato:
    26 Febbraio 2018
    Messaggi:
    68
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Ho letto che per andare a fare un lavoro del genere, è consigliabile andare a utilizzare la funzione $get di ajax , prendere il valore dal javascript e passarla al php.

    Nello specifico , dato che nel campo data_arrivo della form , il campo è di tipo text , con richiamo del datapicker, posso scrivere nel js una chiamata a quella variabile e passarla lato php.

    Se non ho detto alcuna cavolata sopra, opterei per questa strada.

    Sto cercando i giusti parametri da passare alla funzione $get ma non ho trovato niente. Qualcuno potrebbe fornirmi delle guide o delle spiegazioni in merito a questa funzione?

    Grazie a tutti
     
  9. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    404
    Mi Piace Ricevuti:
    19
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Certo, ma come sai forse è consigliabile scrivere in modo non-intrusive il codice... Riguarderei un pò il tutto per amalgamare le discrepanze tra codice e BL, e rendere il codice più gestibile... Poi fai tu...
     
  10. paloppa

    paloppa Utente Attivo

    Registrato:
    26 Febbraio 2018
    Messaggi:
    68
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Aggiornando la situazione. Mi trovo davanti questo JS (penso sia corretta la parte JS)
    PHP:
    $(function(){

        var 
    self=this;
        var 
    data_arrivo = $('#data_arrivo');
        var 
    data_partenza = $('#data_partenza');
         
    self.check_next=[0,0];
        
    data_arrivo.datepicker({
            
    minDate:0,
            
    dateFormat"dd/mm/yy",
            
    onSelect: function (selectedDate) {
                        var 
    depart jQuery.datepicker.parseDate('dd/mm/yy'selectedDate);
                        
    depart.setDate(depart.getDate() + 1);
                        
    data_partenza.datepicker("option""minDate"depart);
            
    setTimeout(function(){
                
    data_partenza.datepicker('show');
            }, 
    16);
                 
    self.check_next[0]=1;
            if(
    check_div(self.check_next))load_date_picker();
                    }
                });
      
        
    data_partenza.datepicker({   
            
    minDate:0,
            
    dateFormat"dd/mm/yy",
            
    onSelect:function(selectedDate){
                  
    self.check_next[1]=1;
            if(
    check_div(self.check_next))load_date_picker();
                
    leggi_dati(data_arrivo.val(),data_partenza.val());
              
            }
            });
    });
    function 
    check_div(ar){
        if(
    ar[0] && ar[1])return true;
        else return 
    false;
    }

    function 
    load_date_picker(){
        $(
    '.show_div').removeClass('hidden');
    }

    function 
    leggi_dati(arrivo,partenza){
            $.
    ajax({
                
    url'http://localhost/lavoro/57-2/',
                
    method'POST',
                
    data: {
                    
    data_arrivoarrivo,
                    
    data_partenzapartenza
                
    },
                
    success:function(data){
                    
    console.log(data);
                }
            });
        }



    Adesso vorrei richiamare le due date. Soltanto che con $_POST non va.
    Che passaggio mi manca?

    @Max 1
     
    Ultima modifica: 12 Marzo 2018
  11. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    404
    Mi Piace Ricevuti:
    19
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
  12. paloppa

    paloppa Utente Attivo

    Registrato:
    26 Febbraio 2018
    Messaggi:
    68
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Allora ho letto un paio di esempi su json compresa la teoria che sta dietro.
    Mi sono imbattuto inoltre in un esempio che secondo me fa al caso mio.

    Qui c'è l'esempio (sperando si possa mettere il link. Se non si può mettere il link chiedo gia scusa anticipatamente)
    https://www.codexworld.com/post-get-json-data-from-php-script-jquery-ajax/


    Ora io ho fatto qualcosa di simile.
    Nello specifico ho creato nel file JS una funzione dove utilizzo il metodo $.ajax
    PHP:
    function leggi_dati(){
        var 
    data_arrivo = $('#data_arrivo').val();
        $.
    ajax({
                
    type'POST',
                
    url'test-page-template.php',
                
    dataType "json",
                
    data: {
                    
    data_arrivodata_arrivo},
                
    success:function(data){
                   
                }
            });
    }
    Sul PHP invece ho fatto un esempio di stampa , ma ovviamente il $_POST['data_arrivo'] non mi stampa niente.

    Vorrei capire perchè per favore.
    Lui nel suo esempio utilizza $_POST['user_id']nella query , quindi se dovesse fare un print di quella variabile gli stamperà chiaramente il valore inserito dall'utente nel campo. Perchè a me invece non funziona??
     
  13. paloppa

    paloppa Utente Attivo

    Registrato:
    26 Febbraio 2018
    Messaggi:
    68
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Allora ho letto un paio di guide in giro e tutte le mie idee precedenti sulla funzione $.ajax di jquery sono state confermate.

    Adesso però penso di essere a un piccolo passo dalla soluzione finale, ma rileggendo più volte il codice , non riesco a capire cosa stia sbagliando.

    Ho inserito la mia $.ajax dentro una funzione, che ho deciso di richiamare una volta che vado a mostrare un div. Nello specifico ho questo

    PHP:
    function load_date_picker(){
        $(
    '.show_div').removeClass('hidden');
        
    leggi_dati();
        }

    function 
    leggi_dati(){
        var 
    data_arrivo = $('#data_arrivo').val();
        $.
    ajax({
                
    type'POST',
                
    url'/lavoro/wp-content/themes/rolenzo/page-templates/test-page-template.php',
                
    dataType "json",
                
    data:{
                    
    data_arrivo:data_arrivo
                    
    },
                
    success:function(data){
                    
    console.log("Done");
                }
            });
    }

    Nel PHP invece ho questo codice
    PHP:
     <div class="hidden show_div">
             <p style= "text-align:center; font-weight:bold;">Offerte Disponibili nel periodo da Lei selezionato : </p>
                 <?php
                    $date
    =$_POST['data_arrivo'];
                 
    $query1="SELECT * FROM messaggio where data_arrivo>='".$date."'" ;
                    
    $result1=mysqli_query($connessione,$query1);
                    
    $row=mysql_fetch_array($result1);
                 
    // for first row only and suppose table having data
                    
    echo json_encode($row);  // pass array in json_encode
                
                
                 
    ?>
                 </div>
    Cosa sbaglio?
     
  14. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    404
    Mi Piace Ricevuti:
    19
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Sbagli quello dell'altra volta.... Stai chiamando in ajax, la risposta dovrebbe essere un JSON/XML, no un mix...
    Flusso....
    ACTION-> AJAX -> CALL FUNCTION -> ELAB -> RESPONSE -> PARSE RESPONSE -> RENDERING
    Mi pare tu abbia messo Iil rendering in posizione "ELAB"... mancano 4 passaggi per standardizzare il flusso!
     
  15. paloppa

    paloppa Utente Attivo

    Registrato:
    26 Febbraio 2018
    Messaggi:
    68
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Dove potrei leggere delle informazioni riguardante il flusso? Io pensavo dovessi semplicemente richiamare json encode
     
  16. paloppa

    paloppa Utente Attivo

    Registrato:
    26 Febbraio 2018
    Messaggi:
    68
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Mi funziona adesso perchè l'errore mio è stato quello di scrivere mysql_result e non mysqli_result.

    Il problema però è sempre questa diavolo di data che non viene riconosciuta!!

    $date=$_POST['data_arrivo'];

    Codice:
    $date=$_POST['data_arrivo'];
                  
                  print "<br/>";
                    $query1="SELECT distinct post_title FROM rlnz_posts JOIN rlnz_postmeta on post_parent=post_id where meta_key='inizio' and meta_value<='".$date."'" ;
                    $result1=mysqli_query($connessione,$query1);
                    while($row=mysqli_fetch_array($result1)){
                 // for first row only and suppose table having data
                     echo json_encode($row['post_title']);// pass array in json_encode
                    }
    }
     
  17. paloppa

    paloppa Utente Attivo

    Registrato:
    26 Febbraio 2018
    Messaggi:
    68
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
Sto caricando...

Condividi questa Pagina