Pagina 1 di 4 123 ... UltimoUltimo
Visualizzazione risultati 1 fino 30 di 92

Discussione: $_POST array di valori array....

  1. #1
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Lightbulb $_POST array di valori array....

    Ciao a tutti, spiego il mio problema...
    A me serve che l'utente inserisca il barcode una volta fatto ciò clicca su visto, a quel punto entra in atto la parte del pulsante, che legge il valore inserito effettua una query per contollare che esiste quel barcode, nel caso in cui esiste compila da solo descrizione e prezzo, altrimenti da un alert di errore. Nel momento in cui i campi vengono compilati, c'è una while che vede se i campi sono diversi da null (=!null) se è vero crea un altra riga con i parametri gemelli a quella di sopra. Ecco perchè mi serve che i valori siano dentro un array... Ovviamente non posso sapere quante volte viene iterata questa cosa.. Ecco perche una while e non una for...
    Spero di essermi spiegato bene...

    Io ho un form composto cosi:

    Codice HTML:
    <table>
    <form action="" method="post">
    <tr>
        <td><input type="text" placeholder="Barcode" name="barcodeart[]" id="barcodeart" size="10" value="<?php echo $barcodevisto[$a]; ?>"></td>
        <td><input type="submit" class="visto" name="visto[]" onclick= "this.form.action=<?php htmlspecialchars($_SERVER['PHP_SELF'])?> "></td>
        <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="<?php echo $descrizione[$a]; ?>"></td>
        <td><input type="text" style="text-align:center" placeholder="Qnt" name="campo[]" id="quantita" size="3" value="1"></td>
        <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="<?php echo $prezzo[$s]; ?>" ></td>
        <td><input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="3"></td>
        <td><input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="4"></td>
        <td><input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="6"></td>
      </tr>
      </form>
      </table>
    Ora da come potete vedere quando si preme il pulsante visto esegue una query al DB cosi composta :

    Codice PHP:
    <?php
    if(isset($_POST['visto'])){
    $barcodevisto=$_POST[barcodeart];
    $queryart=("SELECT * FROM articoli WHERE Barcode='$barcodevisto'") or die (mysql_error());
    $result = MYSQL_QUERY($queryart) or die('Query failed: ' . mysql_error() . "<br />\n$sql");
    //verifico che esista una una card con tale barcode
    $esistebc=mysql_num_rows($result);
    //se $esiste == 0 non cè
    if($esistebc > 0){//esiste
    //estraggo usn e pass
    $righi=mysql_fetch_array($result);
    $barcodenew=$righi[Barcode];
    $descrizione=$righi[Descrizione];
    $prezzo=$righi[Vendita];
    $fornitore=$righi[Fornitore];
    $reparto=$righi[Reparto];
    } else {
    ?>
    <script>
    alert('Email non trovata');
    </script>
    <?php
    echo $barcodevisto;
    }
    }
    }
    ?>
    La while che eseguo alla fine dei due processi è :

    Codice PHP:
    while (($barcodenew[$a] != null)&&($descrizione[$a] != null)&&($prezzo[$a] != null)){
    ripeto il form
    }

  2. #2
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Dovresti trovare una riga con quei parametri?
    Se sì, non puoi filtrare i campi direttamente nella query?
    Se no, non ho capito.
    Ciao!

  3. #3
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    allora..
    cerco di essere il piu chiaro possibile.. anche se è piu difficile da spiegare che da fare...

    Io ho una schermata dove ho 8 campi VUOTI...
    il primo campo è il valore BARCODE, in questo campo io inserisco il barcode.
    A questo punto a fianco al barcode ho un tasto (si chiama visto) che si preoccupa di leggere il dato inserito in barcode confrontarlo col database e inserire automaticamente i restanti campi vuoti (i campi a fianco barcode per capirci)
    Fin qui tutto ok ci riesco tranquillamente e funziona...

    Ora però c'è un problema.. questa iterazione io non so quante volte la vuole fare l'utente... Quindi i campi devono essere valori di un array (in questa maniera a fine form ho un tasto che prenderà tutti questi dati e li buttera nel database)

    Essendo iterata per N volte ogni volta che l'utente compila tutta la riga deve crearsi in automatico una riga GEMELLA a quella appena finita... Questa cosa la deve ripetere N volte finche l'utente non lascerà una riga vuota che verra interpetata come fine.

    Mi sono spiegato ora? :(

  4. #4
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Gli input di HTML non prevedono array come valori, ma solo scalari.

    Quella che hai usato è una sintassi che funziona con PHP e indica il fatto che ci sono più <input> con lo stesso nome e che PHP deve mettere in un array con quel nome. Non indica il fatto che il "value" di quell'input sia un array.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  5. #5
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    quindi come posso fare per sistemare la questione? sto sucendo pazzo...

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    I name devono essere scalari, come detto da saitfainder.


    Codice HTML:
    <input type="text" placeholder="Barcode" name="barcodeart" id="barcodeart" size="10" value="<?php echo $barcodevisto[$a]; ?>">
    Lo prelevi da

    Codice PHP:
    $_POST['barcodeart']
    Ciao!

  7. #7
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    si io ho capito... ma purtroppo io non so quanti ne posso avere di quegli input... quindi mi serve che gli input siano un array... Avete letto cosa vorrei fare? Non so se riesco a spiegarmi...

  8. #8
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Di input ne hai uno solo visto che il tuo HTML è statico. Avresti un array se avessi una cosa del tipo:

    Codice HTML:
    <input type="text" name="banane[]" id="banana1"/>
    <input type="text" name="banane[]" id="banana2"/>
    <input type="text" name="banane[]" id="banana3"/>
    Se tu vuoi mettere più valori in un campo devi semplicemente separarli con un carattere, tipo la virgola:

    Codice HTML:
    <input type="text" name="animali" value="cane,gatto,mucca"/>
    E poi lo trasformi in un array via PHP con explode().


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  9. #9
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    uhm ma come faccio a mettere le virgole?nel senso a me la riga la genera nuova successivamente... come si fa?

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Ma come generi la nuova riga? (e soprattutto, cosa intendi per nuova riga?).

    Ciao!

  11. #11
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    praticamente quando viene premuto il tasto visto,faccio $_POST del barcode, controllo il barcode inserito e tramite query controllo se c'è nel DB, se c'è riempio i campi successivi (descrizione prezzo e barcode appena inserito) fatto questo faccio una if dove controllo se barcode,descrizione e prezzo sono != da null, se lo sono ricreo una riga gemella...

    ossia creo di nuovo il seguente form :

    Codice HTML:
    <table>
    <form action="" method="post">
    <tr>
        <td><input type="text" placeholder="Barcode" name="barcodeart[]" id="barcodeart" size="10" value="<?php echo $barcodevisto[$a]; ?>"></td>
        <td><input type="submit" class="visto" name="visto[]" onclick= "this.form.action=<?php htmlspecialchars($_SERVER['PHP_SELF'])?> "></td>
        <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="<?php echo $descrizione[$a]; ?>"></td>
        <td><input type="text" style="text-align:center" placeholder="Qnt" name="campo[]" id="quantita" size="3" value="1"></td>
        <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="<?php echo $prezzo[$a]; ?>" ></td>
        <td><input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="3"></td>
        <td><input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="4"></td>
        <td><input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="6"></td>
      </tr>
      </form>
      </table>

  12. #12
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    praticamente è abbastanza facile... non capisco un passaggio... Seguendo le tue istruzioni sono andato a leggermi la documentazione...
    Per cui se io ho 5 inputname UGUALI di default lui li vede come un array che poi io mi vado a leggere con una for con indice i e limite la sizeof dell'array.
    La mia domanda ora è questa... La mia form è generata dinamicamente... nel senso che...
    io ho la prima form composta cosi :

    Codice HTML:
    <table>
        <form action="" method="post">
    <tr>
        <td><input type="text" placeholder="Barcode" name="barcodeart[]" id="barcodeart" size="10" value="<?php echo $barcodenew[$i]; ?>"></td>
        <td><input type="submit" class="visto" name="visto[]" onclick= "this.form.action=' . htmlspecialchars($_SERVER['PHP_SELF']) . ' "></td>
        <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="<?php echo $descrizione[$i];?>"></td>
        <td><input type="text" style="text-align:center" placeholder="Qnt" name="campo[]" id="quantita" size="3" value="1"></td>
        <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="<?php echo $prezzo[$i]; ?> " ></td>
        <td><input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="3"></td>
        <td><input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="4"></td>
        <td><input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="6"></td>
      </tr>
      </form>
      </table>
    Fin qui tutto ok, perche tramite if io controllo che i campi non siano NULL e genero un altra form identica a questa, questo passaggio veien effettuato dentro la funzione del tasto VISTO.
    Ora ho una domanda...
    Io devo avere X form generate in base a quante volte l'utente inserisce un barcode e lo verifica col tasto visto.
    Il tasto visto è fatto cosi:

    Codice PHP:
    <?php

    if(isset($_POST['visto'])){
    $array_barcodevisto = $_POST['barcodeart'];
    $queryart=("SELECT * FROM articoli WHERE Barcode='$array_barcodevisto[$i]'") or die (mysql_error());
    $result = mysql_query($queryart) or die('Query failed: ' . mysql_error() . "<br />");
    //verifico che esista una una card con tale barcode
    $esistebc=mysql_num_rows($result);
    //se $esiste == 0 non cè
    if($esistebc > 0){//esiste
    $righi=mysql_fetch_array($result);
    $barcodenew[$i]=$righi[Barcode];
    $descrizione[$i]=$righi[Descrizione];
    $prezzo[$i]=$righi[Vendita];
    $fornitore[$i]=$righi[Fornitore];
    $reparto[$i]=$righi[Reparto];
    echo
    $barcodenew[$i];
    echo
    $descrizione[$i];
    echo
    $prezzo[$i];
    if((
    $barcodenew[$i] != null)&&($descrizione[$i] != null)&&($prezzo[$i] != null)){
    ?>
    <table>
    <form action="" method="post">
    <tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart[]" id="barcodeart" size="10" value="<?php echo $barcodenew[$i]; ?>"></td>
    <td><input type="submit" class="visto" name="visto[]" onclick= "this.form.action=' . htmlspecialchars($_SERVER['PHP_SELF']) . ' "></td>
    <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="<?php echo $descrizione[$i];?>"></td>
    <td><input type="text" style="text-align:center" placeholder="Qnt" name="campo[]" id="quantita" size="3" value="1"></td>
    <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="<?php echo $prezzo[$i]; ?> " ></td>
    <td><input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="3"></td>
    <td><input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="4"></td>
    <td><input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="6"></td>
    </tr>
    </form>
    </table>
    <?php
    }
    } else {
    ?>
    <script>
    alert('Articolo non trovato');
    </script>
    <?php
    }
    }
    ?>
    Ora il problema è che se io premo il tasto visto senza dargli un indice andrò a sovrascrivere ogni volta la riga precedente, quindi mi ritroverei ad avere per esempio inserito 5 barcode diversi e alla fine avere 5 righe uguali...
    Come faccio a far in modo che la generazione del tasto visto e quindi della form siano diverse dandogli un indice e confrontando la riga stessa? Spero di essermi spiegato... Se qualcuno è disposto ad aiutarmi ho anche msn\icq\skype\teamspeak o quel che vuole lui...
    Devo assolutamente riuscire a sistemare questo problema...
    Grazie dell'aiuto...
    Ultima modifica di AdminTeclis : 17-05-2013 alle ore 11.51.59

  13. #13
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    Scusate se sto facendo molti reply ma mentre scrivo cerco soluzioni...
    Ora sono arrivato ad un grandissimo risultato...Mi manca solamente ciclare questa cosa ed ho fatto tutto ciò che mi interessava...

    La pagina ora è composta così:

    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    <table>
    <form action="" method="post">
    <tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart[]" id="barcodeart" size="10" value="<?php echo $barcodenew[$i]; ?>"></td>
    <td><input type="submit" class="visto" name="visto[]" onclick= "this.form.action=' . htmlspecialchars($_SERVER['PHP_SELF']) . ' "></td>
    </form>
    </table>
    </body>
    </html>
    <?php
    include('connect.php');
    foreach (
    $_POST as $nome_1 => $valore_1){
    foreach(
    $valore_1 as $nome_2 => $valore_2){
    }
    }
    @
    $array_visto = $_POST['visto'];
    for (
    $i = 0; $i <= sizeof($array_visto); $i++) {
    if(isset(
    $_POST['visto'][$i])){
    $barcodevisto[$i] = $_POST['barcodeart'][$i];
    $queryart=("SELECT * FROM articoli WHERE Barcode='$barcodevisto[$i]'") or die (mysql_error());
    $result = mysql_query($queryart) or die('Query failed: ' . mysql_error() . "<br />");
    //verifico che esista una una card con tale barcode
    $esistebc=mysql_num_rows($result);
    //se $esiste == 0 non cè
    if($esistebc > 0){//esiste
    //estraggo usn e pass
    $righi=mysql_fetch_array($result);
    $barcodenew[$i]=$righi[Barcode];
    $descrizione[$i]=$righi[Descrizione];
    $prezzo[$i]=$righi[Vendita];
    $fornitore[$i]=$righi[Fornitore];
    $reparto[$i]=$righi[Reparto];
    ?>
    <table>
    <form action="" method="post">
    <tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart[]" id="barcodeart" size="10" value="<?php echo $barcodenew[$i]; ?>"></td>
    <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="<?php echo $descrizione[$i];?>"></td>
    <td><input type="text" style="text-align:center" placeholder="Qnt" name="campo[]" id="quantita" size="3" value="1"></td>
    <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="<?php echo $prezzo[$i]; ?> " ></td>
    <td><input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="3"></td>
    <td><input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="4"></td>
    <td><input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="6"></td>
    </tr>
    </form>
    </table>
    <?php
    }
    }
    }
    ?>
    Praticamente ho solamente un input con a fianco un visto.
    Io inserisco il barcode la dentro e lui se esiste mi sputa fuori la riga completa.
    Bene ora a me serve che questa cosa la faccia ogni volta che io inserisco un abrcode all'interno dell'input.
    questa è la pagina se volete fare una prova :

    http://laviadellanima.com/prove/provafunzione.php

    Inserite come barcode questo : 1920100216004
    E noterete che in automatico si compila sotto una riga con tutto ciò che mi serve...

  14. #14
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Sperando di aver capito bene, prova questo:

    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    <table>
    <tr>
    <td><form action="<?= $_SERVER['PHP_SELF'] ?>" method="post"> <!-- è bene specificare l'action nell'action del form, e non traite js! --><input type="text" placeholder="Barcode" name="barcodeart_new" id="barcodeart" size="10" value=""></td>
    <td><input type="submit" class="visto" name="visto"></form></td>
    </tr>
    </table>
    <?php
    include('connect.php');
    if(isset(
    $_POST['barcodeart_new']) && !empty($_POST['barcodeart_new']))
    $query = 'SELECT * FROM articoli WHERE Barcode=\''.mysql_real_escape_string($_POST['barcodeart_new']).'\''; //se i barcode sono interi, si possono evitare gli apici \'
    else if(isset($_POST['barcodeart_vecchi']))
    $query = 'SELECT * FROM articoli WHERE 0 '; //il WHERE 0 è una bruttura... se non funziona, si può cercar di far di meglio
    if(isset($_POST['barcodeart_new']) || isset($_POST['barcodeart_vecchi']))
    {
    foreach(
    $_POST['barcodeart_vecchi'] as $barcode)
    $query .= ' OR Barcode=\''.mysql_real_escape_string($barcode).'\' '; //se i barcode sono interi, si possono evitare gli apici \'

    $result = mysql_query($query) or die('Query failed: ' . mysql_error() . "<br />");
    }
    ?>
    <form action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
    <table>
    <?php
    if(isset($result))
    while(
    $righi=mysql_fetch_array($result))
    {
    //per ogni riga trovata, creo la sua "riga". Se il nuovo barcode immesso non esiste, non mi interessa, perché non sarà tra i risultati
    echo '
    <tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart_vecchi[]" id="barcodeart" size="10" value="'
    .$righi['Barcode'].'"></td>
    <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="'
    .$righi['Descrizione'].'"></td>
    <td><input type="text" style="text-align:center" placeholder="Qnt" name="campo[]" id="quantita" size="3" value="1"></td>
    <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="'
    .$righi['Vendita'].'" ></td>
    <td><input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="3"></td>
    <td><input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="4"></td>
    <td><input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="6"></td>
    </tr>
    '
    ;
    }
    ?>
    </table>
    </form>
    </body>
    </html>
    Occhio che non avendo il tuo db, non ho potuto testarlo.

    Ciao!
    Ultima modifica di alemoppo : 17-05-2013 alle ore 21.11.37

  15. #15
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    allora ho appena testato il tuo script...
    se inserisco un barcode mi da la riga ma sopra mi esce fuori :
    Warning: Invalid argument supplied for foreach() in /home/laviadellanima.com/public_html/prove/altervista.php on line 21

    Oltre a questo se uso un altro abrcode non mi crea una riga nuova ma va a cancellarmi la precedente inserendo i valori nuovi... A me servirebbe che la riga vecchia resti e il nuovo barcode ne generi una nuova...

    EDIT:

    ps se vuoi testarlo ora vai su:

    http://laviadellanima.com/prove/altervista.php

    come barcode puoi usare :

    1920100216004
    7640141078778
    Ultima modifica di alemoppo : 18-05-2013 alle ore 00.21.45 Motivo: Non fare post consecutivi: usa il tasto "Edita" per modificare i messaggi!

  16. #16
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    mmh in effetti il form dev'essere unico. Provalo così:

    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    <form action="<?= $_SERVER['PHP_SELF'] ?>" method="post"> <!-- è bene specificare l'action nell'action del form, e non traite js! -->
    <table>
    <tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart_new" id="barcodeart" size="10" value=""></td>
    <td><input type="submit" class="visto" name="visto"></td>
    </tr>
    </table>
    <?php
    include('connect.php');
    if(isset(
    $_POST['barcodeart_new']) && !empty($_POST['barcodeart_new']))
    $query = 'SELECT * FROM articoli WHERE Barcode=\''.mysql_real_escape_string($_POST['barcodeart_new']).'\''; //se i barcode sono interi, si possono evitare gli apici \'
    else if(isset($_POST['barcodeart_vecchi']))
    $query = 'SELECT * FROM articoli WHERE 0 '; //il WHERE 0 è una bruttura... se non funziona, si può cercar di far di meglio

    if(isset($_POST['barcodeart_vecchi']))
    foreach(
    $_POST['barcodeart_vecchi'] as $barcode)
    $query .= ' OR Barcode=\''.mysql_real_escape_string($barcode).'\' '; //se i barcode sono interi, si possono evitare gli apici \'
    if(isset($query))
    $result = mysql_query($query) or die('Query failed: ' . mysql_error() . "<br />");
    ?>
    <table>
    <?php
    if(isset($result))
    while(
    $righi=mysql_fetch_array($result))
    {
    //per ogni riga trovata, creo la sua "riga". Se il nuovo barcode immesso non esiste non mi interessa, perché non sarà tra i risultati
    echo '
    <tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart_vecchi[]" id="barcodeart" size="10" value="'
    .$righi['Barcode'].'"></td>
    <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="'
    .$righi['Descrizione'].'"></td>
    <td><input type="text" style="text-align:center" placeholder="Qnt" name="campo[]" id="quantita" size="3" value="1"></td>
    <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="'
    .$righi['Vendita'].'" ></td>
    <td><input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="3"></td>
    <td><input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="4"></td>
    <td><input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="6"></td>
    </tr>
    '
    ;
    }
    ?>
    </table>
    </form>
    </body>
    </html>
    Hai capito la logica?

    Ciao!
    Ultima modifica di alemoppo : 18-05-2013 alle ore 00.23.31

  17. #17
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    credo che sto per amarti.. detta in tutta sincerita...
    si ho capito come hai utilizzato il tutto.. ovviamente se gia è stato immesso quel barcode non viene rimessa la riga... Il che è anch'essa una buonissima cosa dato che ci sono le quantita per codici uguali.. Ora una domanda... Se io volessi recuperare tutti i dati per buttarli in un db... mi basta fare una for prima dei vari input??

  18. #18
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Sì: ti trovi un array di "barcodeart_vecchi[]" (che sarebbe il k-esimo "barcodeart"), un array di "descrizione[]", etc etc...

    Il k-esimo elemento corrisponde al k-esimo "prodotto (?)".

    Ciao!

  19. #19
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    si praticamente questa è una schermata dove si inseriscono i vari prodotti... io da qui recupero l'array di tutta la riga (barcode - descrizione - prezzo - quantita - scono - prezzo scontato) e li butto nel database...
    Una domanda... se io volessi stampare il tutto tramite pdf.. come si fa? ci sono link per capire come funziona? o devo fare un altro post?

  20. #20
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    oddio... io non ho mai generato un pdf con PHP.
    Prima di aprire un nuovo topic, fai una ricerca sia sul forum, sia su google (ad esempio, "generare PDF con PHP" o simili).

    Ciao!

  21. #21
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    Ho notato che se io sparo due volte lo stesso barcode non si genera una nuova riga... Ora la mia domanda è... è possibile fare in modo che lo spari piu volte? o altrimenti... è possibile fare in modo che se venga sparato due volte aumenti la colonna quantita??

  22. #22
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Prova a ragionarci... Non è molto soddisfacente usar script scritti da altri, no?
    Se non riesci, scrivi quello che hai pensato, oppure il codice modificato che però non funziona...

    Ciao!

  23. #23
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    Ho notato che tu usi barcode__new e barcode_vecchi... potrei fare in tutte e due le maniere.. nel senso...

    se io faccio una inf in cui controllo se il barcode inserito è presente nell'array barcode vecchi, ricrea la riga... Oppure potrei fare che..

    se il barcode inserito e presente aumenta la quantita della riga del barcode...


    è possibile? a me interesserebbe di piu la prima ipotesi... dato che sono transazioni è meglio una riga in più, piuttosto che una dimenticanza...

    Avevo pensato ad una cosa del genere... Potrebbe andare?

    Codice PHP:
    <?php
    if(($_POST['barcodeart_new']) == ($_POST['barcodeart_vecchi'])) {
    echo
    '
    <tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart_vecchi[]" id="barcodeart" size="10" value="'
    .$righi['Barcode'].'"></td>
    <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="'
    .$righi['Descrizione'].'"></td>
    <td><input type="text" style="text-align:center" placeholder="Qnt" name="campo[]" id="quantita" size="3" value="1"></td>
    <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="'
    .$righi['Vendita'].'" ></td>
    <td><input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="3"></td>
    <td><input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="4"></td>
    <td><input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="6"></td>
    </tr>
    '
    ;
    }

    // altrimenti continua con lo script... oppure questa la potrei mettere dove tu hai scritto che se non esiste non ci frega nulla...
    ?>

  24. #24
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    No... ho provato il codice e non funziona... è come se si verificasse sempre... Non capisco dove mettere l'istruzione... Alla fine deve fare la stessa cosa... Solamente che se li trova = deve cmq stampare la riga.. altrimenti andare avanti...

  25. #25
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Dovresti "cicalre" un array con tutti i barcode: se cicli (come ho fatto) i dati ottenuti dalla query, è normale che non siano doppi. Io farei un nuovo array ($barcodeart_vecchi[] + $_POST['barcodeart_new'] (se esiste) ). Quindi dovresti ciclare questo nuovo array, così hai anche righe doppie.

    Ciao!

  26. #26
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    per nuovo array di due array intendi array merge??
    Nel senso... Se devo confrontare i valori in due array devo unificare i due array e confrontare il valore inserito coi due array giusto???

    da ciò deduco che :

    Codice PHP:
    <?php
    $barcodetotali
    =(array_merge($barcodeart_vecchi[] ,$_POST['barcodeart_new']));
    $conta=count($barcodetotali);
    for(
    i=0;i<$conta;i++){
    if ((
    $barcode_vecchi |& $barcode_new) == $barcodeart)
    stampta la riga ugualmete;
    }
    Prosegui
    ?>
    Che dici può andar bene? non ho la minima idea di come strutturarlo...

  27. #27
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Occhio che array_merge() (almeno, in PHP 5) vuole in ingresso soltanto array. Quindi o effettui il cast, o non puoi usarla.

    Io più semplicemente intendevo una cosa del tipo (dopo aver verificato l'esistenza nel db di "$_POST['barcodeart_new']":

    Codice PHP:
    $barcodeart_vecchi[] = $_POST['barcodeart_new']; //aggiungo ai vecchi quello nuovo
    foreach($barcodeart_vecchi as $barcodeart)
    //stampa la riga usando "$barcodeart"
    -----

    Citazione Originalmente inviato da AdminTeclis Visualizza messaggio
    if (($barcode_vecchi |& $barcode_new) == $barcodeart)
    Cosa fa l'operatore |& ? Non l'ho mai visto prima.

    Ciao!

  28. #28
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    L'operazione |& significa and or... non l'ho mai usata ma esiste come operatore logico.... Ora provo come hai detto te... vediamo se va... In ogni caso come posso fare, oltre a come stiamo facendo, se volessi fare in modo che se già è nell'array aumenti solamente la quantita di uno? Potrebbe essere anche questa una cosa utile... Che ne dici?

  29. #29
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Citazione Originalmente inviato da AdminTeclis Visualizza messaggio
    In ogni caso come posso fare, oltre a come stiamo facendo, se volessi fare in modo che se già è nell'array aumenti solamente la quantita di uno? Potrebbe essere anche questa una cosa utile... Che ne dici?
    Tutto è possibile. Per fare ciò, potrebbe esserti di grande aiuto la funzione array_count_values().

    L'operazione |& significa and or... non l'ho mai usata ma esiste come operatore logico....
    Come non l'hai mai usata? L'hai scritta nell'ultimo codice Perché hai messo quell'operatore?
    E comunque non puoi lasciarmi così: adesso sono incuriosito di sapere cosa fa quell'operatore: hai qualche link dove lo spiegano? O almeno qual'é la tabella della verità? Io non son riuscito a trovar nulla.

    Ciao!

  30. #30
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    mhmh Voglio prima finire sto benedetto inserimento multiplo... Ho pensato di mettere quella riga e di copiarci all'interno il form da creato in questa maniera :

    Codice PHP:
    if(isset($_POST['barcodeart_vecchi']) == ($_POST['barcodeart_new'])) //aggiungo ai vecchi quello nuovo
    foreach($_POST['barcodeart_vecchi'] as $barcodeart)
    //stampa la riga usando "$barcodeart"
    $result = mysql_query($query) or die('Query failed: ' . mysql_error() . "<br />");
    Ma non mi funziona... Sto sucendo di testa....

    Per quanto riguarda invece l'operatore, è facile...
    Esempio
    if (a=4 &| a=5)
    echo "a inferiore a 6 e maggiore a 3"
    else
    Echo "a maggiore=4 e a <= 5"

    sono esempi banali ma praticamente dice solamente se a =4 E/O a =5
    etc etc

Pagina 1 di 4 123 ... UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •