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

    ARRAY FORM e QUERY MYSQL

    Salve, premetto di essere inesperto in PHP, ma mi trovo a dover risolvere un problema del genere:
    ho un form con i seguenti moduli
    codice HTML:
     <form name="REPORT" method="post" action="insert_report.php" >      
       <input type="checkbox" name="tipo_criticita[]" value="tipo criticita 1">
       <textarea name="criticita_atto[]" ></textarea>
        <textarea name="attivita_contrasto[]" ></textarea>
    
       <input type="checkbox" name="tipo_criticita[]" value="tipo criticita 2">
       <textarea name="criticita_atto[]" ></textarea>
        <textarea name="attivita_contrasto[]" ></textarea>
    
       <input type="checkbox" name="tipo_criticita[]" value="tipo criticita 3">
       <textarea name="criticita_atto[]" ></textarea>
        <textarea name="attivita_contrasto[]" ></textarea>
    
    <input type="submit" value="Invia"  name="invia" >
    </form>
    passo il form al file insert_report.php

    Codice PHP:
    $tipo_criticita $_POST[tipo_criticita];
        
    $criticita_atto $_POST[criticita_atto];
        
    $attivita_contrasto $_POST[attivita_contrasto];


           if (isset(
    $_POST['tipo_criticita'])) {
        
           foreach (
    $_POST['tipo_criticita'] as $tipo_criticita) {
            
    // Creo la query
            
    $strSQL "INSERT INTO criticita ( tipo_criticita, criticita_atto, attivita_contrasto ) VALUES ( '$tipo_criticita','$criticita_atto', '$attivita_contrasto' )";

               
    // Scrivo la query
               
    $strSQL mysql_query($strSQL);
            
        }

    A questo punto all'interno della tabella criticita vengono scritti nella colonna tipo_criticita tutte le variabili passate dal form, ma nelle altre due colonne viene inserito il valore "Array".
    Capisco perfettamente di non aver dichiarato delle varibili ma come faccio a dichiararle? dove sbaglio

  2. #2
    ok..

    Codice PHP:
        $criticita_atto $_POST[criticita_atto];
        
    $attivita_contrasto $_POST[attivita_contrasto];


        if (isset(
    $_POST['tipo_criticita'])) {
        
        foreach (
    $_POST['tipo_criticita'] as $id => $tipo_criticita) {
            
    // Creo la query
            
    $strSQL "INSERT INTO criticita ( tipo_criticita, criticita_atto, attivita_contrasto ) VALUES ( '$tipo_criticita','".$criticita_atto[$id]."', '".$attivita_contrasto[$id]."' )";

               
    // Scrivo la query
               
    $strSQL mysql_query($strSQL);
            
        }

    Il foreach definito in quel modo salva nella prima variabile ($id) l'indice (o la chiave per array nominali) del valore e nella seconda valore.

  3. #3

    Mitico

    Grazie ... funziona perfettamente ... io ci ho perso il capo per 2 giorni.
    Grazie grazie grazie

  4. #4

    Problematica

    Ho riscontrato un problema nell'inserimento dei dati, infatti se nel form non iserisco la prima e seconda criticità e passo ad inserire solo la terza, l'inserimento non avviene. Per quale motivo?

  5. #5
    strano, sei sicuro che i nomi dei campi siano corretti?
    I DON'T Double Click!

  6. #6
    Naturalmente ho personalizzato in alcuni punti ma sembra che i campi siano corretti, infatti il form è questo

    <form name="REPORT" method="post" action="insert_report.php" >

    <input type="checkbox" name="tipo_criticita[]" value="viabilita_interrotta">
    <textarea name="criticita_atto[]" cols="40" rows="2"> </textarea>
    <textarea name="attivita_contrasto[]" cols="40" rows="2" > </textarea>
    <textarea name="centri_isolati_criticita[]" cols="40" rows="2" ></textarea>
    <textarea name="centri_isolati_contrasto[]" cols="40" rows="2" ></textarea>

    <input type="checkbox" name="tipo_criticita[]" value="Edifici_pubblici">
    <textarea name="criticita_atto[]" cols="40" rows="2" ></textarea>
    <textarea name="attivita_contrasto[]" cols="40" rows="2" ></textarea>

    <input type="checkbox" name="tipo_criticita[]" value="Edifici_prifati_evacuati">
    <textarea name="criticita_atto[]" cols="40" rows="2" ></textarea>
    <textarea name="attivita_contrasto[]" cols="40" rows="2" ></textarea>

    <input type="checkbox" name="tipo_criticita[]" value="Edifici_prifati_danneggiati"> <textarea name="criticita_atto[]" cols="40" rows="2" ></textarea>
    <textarea name="attivita_contrasto[]" cols="40" rows="2" ></textarea></td>

    <input type="checkbox" name="tipo_criticita[]" value="Servizi_essenziali_interrotti">
    <textarea name="criticita_atto[]" cols="40" rows="2" ></textarea>
    <textarea name="attivita_contrasto[]" cols="40" rows="2" ></textarea>

    <input type="checkbox" name="tipo_criticita[]" value="Opere_idrauliche_compromesse">
    <textarea name="criticita_atto[]" cols="40" rows="2" ></textarea> <textarea name="attivita_contrasto[]" cols="40" rows="2" ></textarea>

    <input type="checkbox" name="tipo_criticita[]" value="Criticità_attese">
    <textarea name="criticita_atto[]" cols="40" rows="2"></textarea>
    <textarea name="attivita_contrasto[]" cols="40" rows="2" ></textarea>

    <input type="submit" value="Invia" name="invia" >
    <INPUT TYPE="button" VALUE="Annulla" onClick="history.back()">
    </form>

    il codice di insert_report.php

    Codice PHP:
    <? 
    include("connessione.php");
        
        
    // richiamo il file di configurazione
        
    require 'config.php';

        
    // richiamo lo script responsabile della connessione a MySQL
        
    require 'connessione.php';
        
        
    //recupero tutti i dati
        
    $email $_POST[email];
        
    $utente $_POST[provincia];
        
    $password $_POST[password];
        
    $tipo $_POST[tipo];
        
    $data_inserimento $_POST[data_inserimento];
        
    $ora_inserimento $_POST[ora_inserimento];
        .....
        
    //$tipo_criticita = $_POST[tipo_criticita];
        
    $criticita_atto $_POST[criticita_atto];
        
    $attivita_contrasto $_POST[attivita_contrasto];
        
    $centri_isolati_criticita $_POST[centri_isolati_criticita];
        
    $centri_isolati_contrasto $_POST[centri_isolati_contrasto]; 

        
    $data_inserimento  date ("Y-m-d");
        
    $ora_inserimento  date ("H:i:s");


        
    $query "INSERT INTO TABELLA
            (data_inserimento,ora_inserimento,...) VALUES ('
    $data_inserimento','$ora_inserimento',...)";

        
    // invio la query
        
    $result mysql_query($query);

        
    // controllo l'esito
        
    if (!$result) {
            die(
    "Errore nella query $query: " mysql_error());
        }

        
    // recupero l'id autoincrement generato da MySQL per il nuovorecord inserito
        
    $id_report mysql_insert_id();
        
            
        
    //inserisco la seconda parte del report nella tabella criticità
        // Controllo se la matrice di moduli sia stata inviata

        
    if (isset($_POST['tipo_criticita'])) {
        
        
    // Lavoro su ogni singolo elemento della matrice
        
    foreach ($_POST['tipo_criticita'] as $id => $tipo_criticita ) {
            
    // Creo la query
         
    $strSQL "INSERT INTO criticita ( id_report, tipo_criticita, criticita_atto, attivita_contrasto,centri_isolati_criticita,centri_isolati_contrasto  ) VALUES ( '$id_report','$tipo_criticita','".$criticita_atto[$id]."', '".$attivita_contrasto[$id]."', '".$centri_isolati_criticita[$id]."', '".$centri_isolati_contrasto[$id]."' )"

               
    // Scrivo la query 
               
    $strSQL mysql_query($strSQL); 
            
            
    // Visualizzo la query
            //echo "$strSQL
    ";
        }


            
    $mail_s='NOME@DOMINIO.it'; //destinatario FAX server
            
    $mail_r='NOME2@DOMINIO.it';
            
    $mail_r2='NOME3@DOMINIO.it';
            
    $mail_r3='NOME4@DOMINIO.it';

            
    $subject='OGGETTO';
            
    $txtemail=(" --  REPORT  --   \n
            inviato 
            
    " );
            
    $headers = 'From: REPOR <'NOME@DOMINIO.it'>' . "\r\n" ;
               mail(
    $email,$subject,$txtemail,$headers);
            mail(
    $mail_s,$subject,$txtemail,$headers);
            mail(
    $mail_r,$subject,$txtemail,$headers);
            mail(
    $mail_r2,$subject,$txtemail,$headers);
            mail(
    $mail_r3,$subject,$txtemail,$headers);



            echo "
    <h2>
            
    REPORT IDNR$id_report   INSERITO IN ARCHIVIO IN 
    DATA $data_inserimento ALLE ORE $ora_inserimento

            
    INVIATA CONFERMA ALL
    'INDIRIZZO 
     $email </h2>";
        // chiudo la connessione a MySQL
        mysql_close();

    ?>
    In questo modo se inserisco una CRITICITA' la prima per esempio, e poi passo ad inserire la 5 nel DB viene inserito solo il valore della checkbox e non il valore delle textarea associate.

  7. #7
    mmm strano, prova a stampare il contenuto dei diversi array copn print_r
    I DON'T Double Click!

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.