Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875

    portare i dati di un form "dinamicamente" all'altra pagina

    salve
    in questi giorni sto aggiornando una sezione di un mio pannello di controllo, dove aggiungo degli sconti.
    Per farlo creo dei campi di testo chiamati da_eta-$id - a_eta-$id - sconto_terzo_letto-$id

    Nella pagina ho un link che quando ci clicco mi crea questi nuovi campi aggiuntivi e quindi mi crea campi dal nome da_eta-1, da_eta-2, da_eta-3 ecc

    Adesso ho il problema di portarmi dinamicamente alla pagina successiva questi campi in modo da poter fare la query ed inserire questi sconti in una tabella

    Al momento, in modo rudimentale, sto facendo cosi:
    codice:
    if (isset($_POST["da_anni"])) {
    $da_anni = "$da_anni";
    $query ="insert ecc"
    }
    if (isset($_POST["da_anni-1"])) {
    $da_anni = "$da_anni-1";
    $query ="insert ecc"
    }
    if (isset($_POST["da_anni-2"])) {
    $da_anni = "$da_anni-2";
    $query ="insert ecc"
    }
    pero' credo sia troppo rudimentale perche' magari se inserisco 10 if isset e magari dovessi aggiungere un 11esimo campo avrei un problema.

    Vorrei percio' rendere la cosa dinamica e quindi poter fare tutte le query di cui ho bisogno in base al numero di campo che creo nella pagina precendente.
    Come potrei gestire sta cosa??

  2. #2
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Stavo pensando ad un ciclo for cosi':
    codice:
       $i = 15
       for($i = 15; $i <= 20; $i++) {
          echo $i;
       }
    Il problema è che io non posso mai sapere quanti saranno i record che dovrò portare nella pagina successiva, in questo caso ho messo in grassetto la seconda condizione e quindi 20

    In alcuni casi posso portarne, 1, in altri 2, in altri 3, dubito che non supererò mai i 5

    In ogni caso, come potrei inserire una variabile sicura al posto del numero 20?
    Cioe', vorrei inserire una variabile che sia uguale al numero dei campi che genero dal form nella pagina precedente...

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Codice PHP:
    $length count($_POST);
    if (
    $length 15)
        for (
    $i 15$i $length$i++) 

  4. #4
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Quote Originariamente inviata da Marcolino's Visualizza il messaggio
    Codice PHP:
    $length count($_POST);
    if (
    $length 15)
        for (
    $i 15$i $length$i++) 
    Non ho ben capito se puo' andar bene al mio caso
    In ogni caso ecco l'esempio pratico di quello che sto facendo

    https://jsfiddle.net/1o73ge0y/

    Cliccando su "aggiungi" si creano i campi che devo portare alla pagina successiva
    Ho inserito un campo hidden chiamato id e poi i campi normali chiamati:
    da_anni-"+id+"
    a_anni-"+id+"
    sconto_terzo_letto-"+id+"

    Ora devo portarli alla pagina successiva

  5. #5
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    in pratica con
    codice:
    $length = count($_POST);
    echo"<br><br>campi: $length<br>";
    conto quanti campi di testo sono presenti nel modulo precedente.

    Io ho bisogno di contare solo i campi da_anni oppure a_anni, oppure ancora piu' semplice id

    sto anche provando con
    codice:
    $length = count($_POST["id"]);
    echo"<br><br>campi: $length<br>";
    ma mi dice che è 0

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    191
    Se necessita il form html per l'inoltro dei dati. Può anche creare i tag html (input) con l'attributo name e parentesi quadre. Cioè input Blabla name="nome[]" con php lo ritrovi in una variabile array $_POST['nome'][0]; //l'indice inizia sempre da 0 se ovviamente è la logica scritta dal codice altrimenti non è l'intenzione del programmatore di tale codice. Adesso count($_POST['nome']) restituisce almeno 1 o più se definito primo input name="nome[]" secondo input name="nome[]".
    Creare una funzione in php?
    Codice PHP:
    function miafunzione($array$max 5) {

    di Default la variabile $max è 5 poi spetta a te decidere come verificare (altro codice).
    count si utilizza per array o oggetto che presenta l'interfaccia countable. Per altri tipi di variabile non devi utilizzare count.
    Ultima modifica di darbula; 13-01-2022 a 15:33

  7. #7
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Come dice @darbula non ti conviene dare come nome ad ogni campo da_anni-numero ma molto più semplicemente senza inserire nessun numero lo chiami da_anni[] così, sarà poi la macchina a gestire il tutto.
    Poi dalla parte PHP puoi benissimo usare i filtri per recuperare i dati, quali che essi siano.
    Così:
    Codice PHP:
    $options = [
      
    'daAnni' => [
        
    'filter' => FILTER_VALIDATE_INT,
        
    'flags' => FILTER_REQUIRE_ARRAY,
        
    'options' => ['min_value' => $anniMin'max_value' => $anniMax]
      ],
      
    //  Gli altri campi di input possono essere inseriti qui...
    ];
    $daAnni filter_input_array(INPUT_POST$options); 
    In questo modo avrai:
    • un controllo sull'input
    • un valore minimo ed un massimo che puoi variare a piacere, sul periodo, in pratica il "cliente" può inserire che so per bambino, da 6 a 12 anni ($anniMin = 6 e $anniMax = 12) lo decidi tut a priori il periodo. Tieni presente che è un controllo sul server, nel campo di input può scrivere quello che vuole.
    • $daAnni ora è un array che contiene tutti i dati inseriti sul form html, che puoi ciclare, modificare, a piacere.

    I filtri: https://www.php.net/manual/en/functi...nput-array.php

  8. #8
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Ok allora inserendo nel form html il nome del campo come id[] riesco a contare esattamente quante volte creo quel campo.

    Adesso il problema sorge su come portare gli altri campi senza le parentesi graffe.

    Codice PHP:
    $length count($_POST["id"]);echo"<br><br>numero di campi: $length<br>";
        for (
    $id 0$id <= $length$id++) {$da_anni=$_POST["da_anni-$id"];} 
    la variabile $da_anni, che nel modulo la tengo sempre come name='da_anni-"+id+"' non me la porta
    Ho anche provato a chiamarla name='da_anni[]' ma ugualmente non riesco a portarla.

    La query per l'inserimento nel database riesco a farla senza problemi, cioe' mi inserisce tutte le righe quanti sono i campi "lenght" che ho generato.
    Il problema è che da sempre 0 come valore quando fa l'insert, quindi non riesco a portare la variabile $da_anni correttamente

  9. #9
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Credo di essere arrivato ad una conclusione, sembra funzionare bene, ma sarà corretto?
    codice:
    $da_anni = $_POST['da_anni'];
    $a_anni = $_POST['a_anni'];
    $sconto_terzo_letto = $_POST['sconto_terzo_letto'];
    
    
    foreach( $da_anni as $key => $n ) {
      $query_sconti="insert into sconti
    	(id_sconto, id_offerta, da_anni, a_anni, sconto_terzo_letto)
    	values
    	(NULL,\"$id_offerta\",\"$da_anni[$key]\",\"$a_anni[$key]\",\"$sconto_terzo_letto[$key]\")";
    	if ($conn->query($query_sconti) === TRUE)
    				{
    				}
    				else
    				{
    				  echo "Error: " . $query_sconti . "<br>" . $conn->error;
    
    
    				}
    }

  10. #10
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Adesso invece mi trovo nella situazione di modificare un'offerta
    Riesco a modificare anche gli sconti che ho inserito, l'unico problema è che se voglio aggiungere uno sconto ed aggiungo una query di insert, mi copia anche gli altri record che ho già, io vorrei aggiungere solo i record nuovi.
    Come potrei aggiungere la query di inserimento nel database?

    codice:
    $query_id_sconti="select * from sconti where id_offerta=\"$id_offerta\"";
    $risultato_id_sconti = $conn->query($query_id_sconti);
    $numero_sconti = $risultato_id_sconti->num_rows;
    //porto gli array dai campi precedenti delle variabili[] degli sconti e li modifico
    $id_sconto=$_POST['id_sconto'];
    $da_anni = $_POST['da_anni'];
    $a_anni = $_POST['a_anni'];
    $sconto_terzo_letto = $_POST['sconto_terzo_letto'];
    
    
    if($numero_sconti>"0"){
    	foreach( $da_anni as $key => $n ) {
    	$query_sconti="update sconti set
    	da_anni=\"$da_anni[$key]\",
    	a_anni=\"$a_anni[$key]\",
    	sconto_terzo_letto=\"$sconto_terzo_letto[$key]\"
    	where id_sconto=\"$id_sconto[$key]\"";
    	if ($conn->query($query_sconti) === TRUE) {
    	echo "";
    	} else {
    	echo "<div class=\"alert alert-danger\" role=\"alert\">Attenzione!</div>"
    	. $conn->error;
    	}
    	//echo"$query_sconti<br>";
    	}
    }
    

    se aggiungo un altro foreach con l'insert ho il problema
    codice:
    foreach( $da_anni as $key => $n ) {
    	$query_sconti="insert into sconti
    	(id_sconto, id_offerta, da_anni, a_anni, sconto_terzo_letto)
    	values
    	(NULL,\"$id_offerta\",\"$da_anni[$key]\",\"$a_anni[$key]\",\"$sconto_terzo_letto[$key]\")";
    		if ($conn->query($query_sconti) === TRUE)
    		{
    		}
    		else
    		{
    		echo "Error: " . $query_sconti . "<br>" . $conn->error;
    		}
    }
    Ultima modifica di allin81; 14-01-2022 a 00:34

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.