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

    Checkbox e controllo valori presenti in Sessione

    Buonpomeriggio,
    Rieccomi a chiedere in vostro aiuto. Cercher� di esporre nel miglior modo possibile il mio problema.
    Ho una pagina con la scheda lavorazione, che presenta una tabella con dei dettagli lavorazione.
    Per creare la tabella con i dettagli lavorazione scelgo da una checkbox che sta in un altra pagina.
    I dati passano da una pagina all'altra tramite sessione.
    Il mio problema è evitare la sovrascrittura della sesioneperdendo i dati già presenti in $_SESSION['int'] (magari perchè voglio aggiungere un'altro intervento). Vi posto un po di codice, magari si capisce meglio
    PAGINA SCHEDA LAVORAZIONE:
    Codice PHP:
    <?php session_start();
    foreach(
    $_POST as $key => $value){    
     
    $_SESSION[$key] = $value;


    //codice connessione db - per creare il form ...
    //tabbella dettagli lavorzione
    ?> 
    <table>
          <tr>
                <th>Tipologia intervento</th>
                <th>Costo ï¿½</th>
           </tr>
           <?php foreach ($_SESSION['int'] as $idinterv => $prezzo) {?>
            <tr>
               <?php $query_select=@mysql_query ("SELECT nome_intervento FROM tipologia_intervento WHERE id_intervento='$idinterv' ") or die ("query fallita");
            while (
    $row= @mysql_fetch_array ($query_select)){
                     
    $nome_intervento=$row['nome_intervento']; ?>
                     <td> <?php echo $nome_intervento ?> </td>
                     <?php echo "<td>"."<input type='text' style='width:100%' name='int[$idinterv]'value='$prezzo'>"."</td>";
                 echo 
    "<input type='hidden' name='idint' value='$idinterv'>";
                
    ?>
       </tr> <?php }} ?>    
    </table>
    PAGINA CON CHECKBOX
    Codice PHP:
    <?php session_start();
    include 
    "funzioni.php";
    connessione_db();
    foreach(
    $_POST as $key => $value){    
            
    $_SESSION[$key] = $value
        } 
        
        
    /* controlli per evitare che si sovrascriva l'intervento perdendo i dati presistenti -- dentro l'if un array_push(?)

    foreach ($_SESSION['int'] as $idinterv => $prezzo) {
        echo "sono".$idinterv;
        
    }
        
    if (array_key_exists($idinterv, $_SESSION['int'])){
            $_SESSION['int']=array($idinterv=>$prezzo);
            
        }
    */
    ?>
    <form method="POST" action="provahtml.php">
        <button type="submit"><strong> AGGIUNGI SELEZIONATI ALLA SCHEDA</strong></button>
        <?php
        $query_select
    =@mysql_query ("SELECT id_intervento, nome_intervento, categoria, visibile FROM tipologia_intervento WHERE visibile= '1' ") or die ("query fallita");
        if (
    mysql_num_rows($query_select) > '0'){?>
                <table>
                    <tr>
                        <th class="col-md-1">Sel</th>
                        <th class="col-md-6">Tipologia intervento</th>
                        <?php
                        
    while ($row= @mysql_fetch_array ($query_select)){
                            
    $id=$row['id_intervento'];
                            
    $nome_intervento=$row['nome_intervento'];
                            
    ?>
                            <tr>
                                <?php echo "<td><input type='checkbox' name='int[$id]' value=''></td>"?>
                                <td> <?php echo $nome_intervento ?> </td>
                                <?php 
                        
    }
                        
    ?>
                </table>
        <?php ?>
    </form>
    Se non sono stata chiara chiedete pure, è da giorni che cerco di capire come fare .. si accetta qualsiasi suggerimento !

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Se non ho capito male.... nelle varie $_SESSION['int'] invece di salvare direttamente i dati, salva un array tipo
    Codice PHP:
    $_SESSION['int'][0] = [$idinterv => $prezzo]; 
    quando ne vuoi aggiungere altri fai una cosa tipo
    Codice PHP:
    $pos count($_SESSION['int']);

    $_SESSION['int'][$pos] = [$idinterv => $prezzo]; 

    ti consiglio poi di non usare più le funzioni mysql, ma piuttosto mysqli o PDO, e poi, se posso..., togli il silent, se ti da qualche errore è meglio vederlo!
    Ultima modifica di rikyeko; 16-05-2016 a 17:51
    Riccardo Sadocchi
    Microsoft MCP C#

  3. #3
    Ciao, grazie delle dritte su mysql

    Ho provato a seguire il tuo suggerimento, ma ancora non va ..
    L'array che dovrebbe venire fuori è del tipo
    Codice PHP:
    Array ([int]=> Array [$idinterv]=>$prezzo [$idinterv]=>$prezzo

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    ciao, ho provato questa cosa stupida ma che ti fa vedere se funziona o meno:

    Codice PHP:
    session_start();

    $_SESSION['int'][] = ['int1'=>'100'];
    $_SESSION['int'][] = ['int2'=>'300'];
    $_SESSION['int'][] = ['int3'=>'400'];
    $_SESSION['int'][] = ['int4'=>'200'];
    $_SESSION['int'][] = ['int5'=>'600'];

    var_dump($_SESSION); 

    Chiaramente, ma sono sicuro che lo sai visto che le usi le sessioni, ogni pagina che utilizza le sessioni deve aprirsi con session_start();
    Riccardo Sadocchi
    Microsoft MCP C#

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Non so se ho capito bene, ma nella tua pagina con i checkbox (il form punta a se stessa?) può provare

    Codice PHP:

    if(isset($_POST['int'])){
       if(!isset(
    $_SESSION['int'])){
          
    // Probabilmente dovrai verificare che $_POST['int'] non sia vuoto
          
    $_SESSION['int'] = $_POST['int']; 
       }else{
          foreach(
    $_POST['int'] as $key=>$value){
              if(!isset(
    $_SESSION['int'][$key])){
                  
    $_SESSION['int'][$key] = $value;
              }
         }
      }
       

    Ultima modifica di boots; 18-05-2016 a 09:17

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 © 2024 vBulletin Solutions, Inc. All rights reserved.