[PHP] Errore tasto submit per invio dati non funziona

asevenx

Utente Attivo
7 Nov 2009
312
0
16
Buon giorno ragazzi, sono incappato in un problema che non riesco a risolvere, molto probabilmente un errore di sintassi, ma nel mio form il tasto submit per l'invio degli input al database sembra non funzionare (clicco e non succede niente, non vedo neanche la pagina caricarsi). Posto il codice così magari si riesce ad individuare il problema. Premetto che ho copiato (e modificato) questo codice da un altro form che funziona correttamente, ho solo cambiato alcune variabili e qualche impostazione.

HTML:
<?php include ("../include/header.php")?>   

<?php
//creo l'id identificativo
if($actionGet == 'new')
{
    $sqlid = "SELECT codId FROM $tableSpeseTessere ORDER BY codId DESC LIMIT 1";
    {
        if(mysqli_num_rows($resultId) == 0)
            $codId = 1;
        else
        {
            while ($row = mysqli_fetch_array($resultId))
            {
                $codId = $row[0]+1;
                //echo "<p>ID: $codId</p>";
            }
        }
    }
}
           
$remove = '<a class="remove" href="#" onclick="$(this).parent().slideUp(function(){ $(this).remove() }); return false">Elimina</a>';

//variabili GET e action
$dbTable = $_GET['tb'];
$idGet = $_GET['id'];
$actionGet = $_GET['action'];

if($actionGet == 'update')
{
    $submit = "Modifica";
    $readonly = "readonly";
}
   
if($actionGet == 'new')
    $submit = "Crea";
   
//messaggio di info   
$noteInfo = "Puoi inserire più prestazioni cliccando su 'aggiungi'.";
   
//input del form (devono coincidere con il database)   
$formArray = array('numero_tessera', 'cliente', 'codice_transazione', 'prestazione', 'importo', 'note');
$testataArray = array('cliente', 'note');

//area solo per administratori
if(checkSessionAdmin() == 'yes')
{
            //dati da inviare
            $numero_tessera =  mysqlI_real_escape_string($mysqli_connect, $_POST['numero_tessera']);
            $codice_transazione = mysqlI_real_escape_string($mysqli_connect, $_POST['codice_transazione']);
            $cliente = mysqlI_real_escape_string($mysqli_connect, $_POST['cliente']);
            //$prestazione = $array;
            //$importo = mysqlI_real_escape_string($mysqli_connect ,$_POST['importo']);
            $note = mysqlI_real_escape_string($mysqli_connect, $_POST['note']);
            $date = date('y-m-d H:i');
           
            //COMANDO PER L'INVIO TEMPORANEO
            //invio i dati al database
            $query = "INSERT INTO $tableSpeseTessere (id, numero_tessera, codice, data, creato_da, azione, ultima_modifica, cliente,
            prestazione, importo, note, codId)
            VALUES ('', '$numero_tessera', '$codice', '$date', '$sessionUser', '1', '', '$cliente', '$arrayPrestazione[$x]', '$arrayImporto[$x]',
            '$note', '$codId')";
            mysqli_query($mysqli_connect,$query);
           

        //errore caricamento delle variabili post
        if(!$submit || zeroRecordID2($tableSpeseTessere, 'codId', $idGet) == true)
        {
?>
        <div id="emptyContainer">
            <div class="errorMessage"><?php echo $noTable ?></div>       
        </div>
<?php
        }
        else
        {   
?>
        <!-- se la sessione è attiva -->
        <div id="mainContainer">
            <div id="titleContainer">Inserisci i dati per registrare una transazione (pagina in costruzione)</div>
            <div id="formContainer">
                <div class="<?php echo $styleMex ?>"><?php echo $mex ?></div>
                <form action="" method="post">
                    <div>
                        <label>Numero tessera</label>
                        <input type="text" name="numero_tessera" value="<?php echo $numero_tessera ?>" class="<?php echo $classInput1 ?>"
                        pattern="^[0-9]{4}$" required autocomplete="off">
                        <span class="formHelp">inserisci 4 numeri</span>
                    </div>
                    <div>
                        <label>Cliente</label>
                        <select name = "cliente" <?php echo checkStyleSelect($_POST['cliente'], '')?> class="<?php echo $classInput2 ?>">
                            <option <?php echo checkSelectValue('',$cliente)?> <?php echo checkSelect('', $_POST['cliente'])?>></option>
<?php
//gruppo esterno           
                $sql = "SELECT codice, denominazione FROM $tableSoggetti ORDER BY denominazione";
               
                if ($result = mysqli_query($mysqli_connect, $sql))
                {
                    while ($row = mysqli_fetch_array($result))
                    {
                        if($_SERVER["REQUEST_METHOD"] != "POST")
?>
                        <option <?php echo checkSelectValue($row[0],$cliente)?> <?php echo checkSelect($row[0], $_POST['cliente'])?>><?php echo "$row[1]"; ?></option>
<?php
                    }
                }
?>           
                        </select>
                        <span class="formHelp">seleziona un opzione</span>                   
                    </div>                                   
                    <div>
                        <label>Codice transazione</label>
                        <input type="text" name="codice_transazione" value="<?php echo generateCode($tableSpeseTessere) ?>" class="<?php echo $classInput3 ?>"
                        pattern="^[0-9]{4}$" <?php echo $readonly?> required autocomplete="off">
                        <span class="formHelp">inserisci 4 numeri</span>
                    </div>

<?php
            if($actionGet=='new')
            {
?>
                    <div><br/></div>
                    <p>Elenco servizi</p>
<?php
//ciclo per creare tot righe quante sono le chiavi dell'array
                $i=0;
                $noRow=0;
                //ciclo per tutte le righe disponibili
                for($x=0; $x<($numArray+$noRow); ++$x)
                {
                    if($arrayPrestazione[$x])
                    {
                        ++$i
?>
                    <div class="clone2">   
                        <div>
                            <label>Servizio</label>
                            <input type="text" name="prestazione[<?php echo $x ?>]" value="<?php echo $arrayPrestazione[$x] ?>" class="<?php echo $classInput4[$x] ?>"
                            required readonly autocomplete="off">
                            <span class="formHelp">puoi cancellare il servizio</span>       
                        </div>
                       
                        <div class="none">               
                            <label>Importo</label>
                            <input type="text" name="importo[<?php echo $x ?>]" value="<?php echo $arrayImporto[$x] ?>" class="<?php echo $classInput5[$x] ?>"
                            pattern="^[1-9]\d{0,3}(\,\d{2})$" required autocomplete="off">
                            <span class="formHelp">inserisci un importo con la virgola seguito da due decimali</span>
                        </div>
                        <a class="remove" href="#" onclick="$(this).parent().slideUp(function(){ $(this).remove() }); return false">Elimina</a>
                    </div>
<?php
                    }
                    else
                        ++$noRow;
                }

if($numArray==0)
    $reqImporto = "required";
else
    $reqImporto = "";
?>
<?php $clone=0?>
                    <div class="clone">
                        <div>
                            <label>Servizio</label>
                            <select name = "prestazione[]" <?php echo checkStyleSelect($arrayPrestazione, '')?> class="<?php echo $classInput4[$x] ?>">
                                <option value=''></option>
<?php
//gruppo esterno           
                $sql = "SELECT codice, descrizione, importo FROM $tablePrestazioni ORDER BY descrizione"; 
               
                if ($result = mysqli_query($mysqli_connect, $sql))
                {
                    while ($row = mysqli_fetch_array($result))
                    {
?>
                        <option value="<?php echo "$row[1]"; ?>"><?php echo "$row[1] ($row[2]€)"; ?></option>
<?php
                    }
                }
?>           
                            </select>
                            <span class="formHelp">seleziona un opzione</span>                   
                        </div>                       
                       
                        <div class="none">
                            <label>Importo</label>
                            <input type="text" name="importo[]" value="" class="<?php echo $classInput5[$x] ?>"
                            pattern="^[1-9]\d{0,3}(\,\d{2})$"<?php echo $reqImporto ?>  autocomplete="off">
                            <span class="formHelp">inserisci un importo con la virgola seguito da due decimali</span>
                        </div>   
                    </div><a href="#" class="add" rel=".clone">Aggiungi<br></a>
<?php
            }
?>
                    <div>
                        <label>Note</label>
                        <input type="text" name="note" value="<?php echo $note ?>" class="<?php echo $classInput6 ?>"
                        pattern="^.{,100})$" autocomplete="off">
                        <span class="formHelp">massimo 100 caratteri</span>
                    </div>

   
                    <input type="submit" value="<?php echo $submit ?>" class="submit <?php echo $styleSubmit ?>"/>
                </form>
                         
                <div class="<?php echo $styleMex ?>"><?php echo $mex ?></div>
           
            <div id="noteContainer"><?php echo $noteInfo ?></div>
            </div>                       
        </div>       
   
<?php
        echo getHistory($tableSpeseTessere, $actionGet, $idGet);
        }
}
else
{
    echo checkSessionAdmin();
}
?>

<?php include ("../include/footer.php") ?>
Grazie a tutti per l'aiuto
 

zorro

Utente Attivo
20 Ott 2014
249
11
18
ROMA
Ciao,
ho letto, abbastanza sommariamente, il tuo codice e, a prima vista, 'definisci' le variabili passate col metodo GET:

//variabili GET e action
$dbTable = $_GET['tb'];
$idGet = $_GET['id'];
$actionGet = $_GET['action'];

mentre nel form definisci il metodo POST

<form action="" method="post">
ricontrolla bene. Oltrettutto, usando il metodo GET puoi vedere, sulla barra degi indirizzi del tuo browser, se e quali dati vengono passati, e il loro contenuto
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
le variabili GET mi servono per effettuare alcune azioni che faccio nella stessa pagina, tra cui la modifica dei dati una volta inviati (nell'esempio l'ho tolto per semplificare), mentre con POST invio i dati del form nel database.
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
27
<form action="" method="post">
E se provassi a impostare una pagina di action diversa dalla presente per verificare se il problema risiede effettivamente nel submit?
 

zorro

Utente Attivo
20 Ott 2014
249
11
18
ROMA
Concordo......... e prova anche a sostutire il metodo POST con GET, in modo da verificare se e quello che viene passato
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
Grazie di tutto per l'aiuto, sono riuscito a risolvere, o quanto meno ora funziona, avevo fatto diversi errori che invalidavano delle funzioni che a loro volta dovevano permettere all'invio dei dati.