Pagina 2 di 4 PrimoPrimo 1234 UltimoUltimo
Visualizzazione risultati 31 fino 60 di 92

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

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

    Predefinito

    sto diventando deficente -.-

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

    Predefinito

    Codice PHP:
    if(isset($_POST['barcodeart_vecchi']) == ($_POST['barcodeart_new']))
    Stai confrontando un array con una variabile. Non capisco cosa stai cercando di fare...

    Ciao!

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

    Predefinito

    vorrei semplicemente fare in modo che se nell'array è gia presente quel barcode lo scriva cmq!!
    Uff... è tutt'oggi che ci sto sbattendo la testa...

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

    Predefinito

    avevo indicato qui una (possibile) via da seguire...

    Ciao!

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

    Predefinito

    Ho provato a seguire la tua via.. ma mi blocco... nel senso che... io faccio quel controllo sotto prima della while di $result... Solo che non capisco dopo la ricerca l'array cosa faccio? inserisco direttamente la while della query??

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

    Predefinito

    Prova a vedere una cosa del tipo:

    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))
    $barcodeart[$righi['Barcode']] = array('Descrizione'=>$righi['Descrizione'], 'Vendita'=>$righi['Vendita']); //creo un nuovo array dove salvo per ogni barcode, i dati.

    $barcodeart_da_mostrare = array();
    if(isset(
    $_POST['barcodeart_vecchi']))
    $barcodeart_da_mostrare = $_POST['barcodeart_vecchi']; //metto gli elementi vecchi realmente mostrati
    if(isset($_POST['barcodeart_new']))
    $barcodeart_da_mostrare[] = $_POST['barcodeart_new']; //aggiungo quello nuovo (prima bisognerebbe far il controllo per vedere se esiste nel db)

    foreach($barcodeart_da_mostrare as $k)
    echo
    '
    <tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart_vecchi[]" id="barcodeart" size="10" value="'
    .$k.'"></td>
    <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="'
    .$barcodeart[$k]['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="'
    .$barcodeart[$k]['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>
    Valgono le stesse considerazioni: non avendo il tuo db, non ho potuto provarlo.

    Ciao!

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

    Predefinito

    tu sei un genio... Sei il mio salvatore!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

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

    Predefinito

    Uhm... Ora però devo risolvere due problemi... Se il barcode è vuoto non deve fare una riga nuova... E poi, come hai scritto te devo cercare il barcode nuove se esiste e stamparlo eventualmente.. Avevo pensato...

    Per il barcode vuoto, prima della ricerca un if(barcodeart_new == "") nulla altrimenti continua

    Mentre per la ricerca del nuovo non ho ben capito quale è il valore del barcode sinceramente,,,

    Se ho capito bene potrei fare :

    $query = 'SELECT * FROM articoli WHERE Barcode='$barcodeart_da_mostrare[]'
    se esiste stampo i valori, altrimenti non fa nulla... Dico male?

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

    Predefinito

    mhmhmh ho provato in questa maniera ma non succede nulla... Nel senso che la query la effettua ma non controlla se effettivamente il barcode è vuoto e crea la linea ugualmente... idem se il prodotto in magazzino non è presente... ti posto la pagina intera coi relativi cambiamenti:

    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">
    <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'])&& !empty($_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))
    $barcodeart[$righi['Barcode']] = array('Descrizione'=>$righi['Descrizione'], 'Vendita'=>$righi['Vendita'],'UM'=>$righi['UM'],'Quantita'=>$righi['Quantita'],'Fornitore'=>$righi['Fornitore'],'Codice'=>$righi['Codice']); //creo un nuovo array dove salvo per ogni barcode, i dati.
    $barcodeart_da_mostrare = array();
    if(isset(
    $_POST['barcodeart_vecchi']))
    $barcodeart_da_mostrare = $_POST['barcodeart_vecchi']; //metto gli elementi vecchi realmente mostrati
    if(isset($_POST['barcodeart_new']))
    $query =mysql_query("SELECT * FROM articoli WHERE Barcode='$barcodeart_new'");
    $esiste=mysql_num_rows($query);
    //se $esiste == 0 non cè
    if($esiste > 0){//esiste
    $barcodeart_da_mostrare[] = $_POST['barcodeart_new']; //aggiungo quello nuovo (prima bisognerebbe far il controllo per vedere se esiste nel db)
    foreach($barcodeart_da_mostrare as $k)
    echo
    '
    <tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart_vecchi[]" id="barcodeart" size="10" value="'
    .$k.'"></td>
    <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="'
    .$barcodeart[$k]['Descrizione'].'"></td>
    <td><input type="text" style="text-align:center" placeholder="Qnt" name="quantita[]" id="quantita" size="3" value="1"></td>
    <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="'
    .$barcodeart[$k]['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>
    <td><input type="hidden" name="fornitore[]" id="fornitore" size="100" value="'
    .$barcodeart[$k]['Fornitore'].'"></td>
    <td><input type="hidden" name="codice[]" id="codice" size="100" value="'
    .$barcodeart[$k]['Codice'].'"></td>
    <td><input type="hidden" name="reparto[]" id="reparto" size="100" value="'
    .$barcodeart[$k]['Reparto'].'"></td>
    <td><input type="hidden" name="UM[]" id="UM" size="100" value="'
    .$barcodeart[$k]['UM'].'"></td>
    </tr>
    '
    ;
    }
    }
    ?>
    Se vuoi fare alcune prove l'indirizzo è : http://laviadellanima.com/pdf/altervista2.php

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

    Predefinito

    Codice PHP:
    $query =mysql_query("SELECT * FROM articoli WHERE Barcode='$barcodeart_new'");
    La variabile "$barcodeart_new" non esiste. Devi usare $_POST['barcodeart_new']:

    Codice PHP:
    $query =mysql_query("SELECT * FROM articoli WHERE Barcode='".mysql_real_escape_string($_POST['barcodeart_new'])."'");
    ----------

    Codice PHP:
    $esiste=mysql_num_rows($query);
    //se $esiste == 0 non cè
    if($esiste > 0){//esiste
    La variabile $esiste è inutile (più che altro rende più complicato la lettura del sorgente: potresti fare semplicemente:

    Codice PHP:
    if(mysql_num_rows($query)){//esiste
    Ciao!

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

    Predefinito

    Si infatti ho risolto facendo cosi... Ho anche sistemato il fatto che se inserivo un barcode inesistente cancellava tutto... mi rimane solo un errore da sistemare...Quando non metto barcode e premo lo stesso mi esce fuori :

    Codice:
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/laviadellanima.com/public_html/pdf/altervista2.php on line 39
    Ti posto l'intero script... :

    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">
    <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'])&& !empty($_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))
    $barcodeart[$righi['Barcode']] = array('Descrizione'=>$righi['Descrizione'], 'Vendita'=>$righi['Vendita'],'UM'=>$righi['UM'],'Quantita'=>$righi['Quantita'],'Fornitore'=>$righi['Fornitore'],'Codice'=>$righi['Codice']); //creo un nuovo array dove salvo per ogni barcode, i dati.
    $barcodeart_da_mostrare = array();
    if(isset(
    $_POST['barcodeart_vecchi']))
    $barcodeart_da_mostrare = $_POST['barcodeart_vecchi']; //metto gli elementi vecchi realmente mostrati
    if(isset($_POST['barcodeart_new'])&& !empty($_POST['barcodeart_new']))
    $query =mysql_query("SELECT * FROM articoli WHERE Barcode='".mysql_real_escape_string($_POST['barcodeart_new'])."'");
    //se $esiste == 0 non cè
    if(mysql_num_rows($query)){//esiste
    $barcodeart_da_mostrare[] = $_POST['barcodeart_new']; //aggiungo quello nuovo (prima bisognerebbe far il controllo per vedere se esiste nel db)
    }
    foreach(
    $barcodeart_da_mostrare as $k)
    echo
    '
    <tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart_vecchi[]" id="barcodeart" size="10" value="'
    .$k.'"></td>
    <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="'
    .$barcodeart[$k]['Descrizione'].'"></td>
    <td><input type="text" style="text-align:center" placeholder="Qnt" name="quantita[]" id="quantita" size="3" value="1"></td>
    <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="'
    .$barcodeart[$k]['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>
    <td><input type="hidden" name="fornitore[]" id="fornitore" size="100" value="'
    .$barcodeart[$k]['Fornitore'].'"></td>
    <td><input type="hidden" name="codice[]" id="codice" size="100" value="'
    .$barcodeart[$k]['Codice'].'"></td>
    <td><input type="hidden" name="reparto[]" id="reparto" size="100" value="'
    .$barcodeart[$k]['Reparto'].'"></td>
    <td><input type="hidden" name="UM[]" id="UM" size="100" value="'
    .$barcodeart[$k]['UM'].'"></td>
    </tr>
    '
    ;
    }
    ?>
    La riga 39 è quella riferita al "se esiste"....

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

    Predefinito

    Giustamente, se il barcode non esiste o è vuoto, non ha senso andar a vedere quanti ne ha trovati nel db... il tutto si dovrebbe risolvere con una graffa:
    Codice PHP:
    if(isset($_POST['barcodeart_new'])&& !empty($_POST['barcodeart_new']))
    {
    $query =mysql_query("SELECT * FROM articoli WHERE Barcode='".mysql_real_escape_string($_POST['barcodeart_new'])."'");
    if(
    mysql_num_rows($query))
    $barcodeart_da_mostrare[] = $_POST['barcodeart_new']; //aggiungo quello nuovo (prima bisognerebbe far il controllo per vedere se esiste nel db)
    }
    Ciao!

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

    Predefinito

    si effettivamente funziona tutto... Se io volessi prendere tutto e spedirlo ad un database mi basterebbe fare :

    Codice PHP:
    <?php
    $descrizione
    = $_POST['descrizione'];
    $codice= $_POST['codice'];
    $sconto = $_POST['scontoval'];
    $prezzo= $_POST['prezzo'];
    $quantita= $_POST['quantita'];

    $conta=count($descrizione);
    for (
    $i=0;$i<$conta;$i++) {
    $query2 ="INSERT INTO transazioni (
    id,descrizione,codice,sconto,prezzo,quantita)
    VALUES (NULL,'
    $descrizione[$i]','$codice[$i]','$prezzo[$i]','$quantita[$i]','$sconto[$i]')";
    }
    if (@
    mysql_query($query2)) {
    $conta=count($descrizione);
    for (
    $i=0;$i<$conta;$i++) {
    echo
    $descrizione[$i]."<br>";
    echo
    $prezzo[$i]."<br>";
    echo
    $quantita[$i]."<br>";
    echo
    $sconto[$i]."<br>";
    }
    ?>
    Oppure devo fare diversamente? a me praticamente salva ogni riga della descrizione codice etc, e il numero della transazione che glielo passo tramite query prima...
    Ho provato ma mi prende solamente l'ultima riga.. anche se le altre a video le vedo correttamente... Che sbaglio?

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

    Predefinito

    ovviamente ti inserisce soltanto l'ultima riga perché effettui soltanto una query: dentro la variabile "$query2" metti ogni volta una nuova query da eseguire, ma non la esegui! Poi, l'ultima ovviamente rimane dentro e la esegue in mysql_query().

    Occhio che per gli array, la sostituzione delle variabili andrebbe fatta tra le graffe, una cosa del tipo:
    Codice PHP:
    $query2 ="INSERT INTO transazioni (
    id,descrizione,codice,sconto,prezzo,quantita)
    VALUES (NULL,'
    {$descrizione[$i]}','{$codice[$i]}','{$prezzo[$i]}','{$quantita[$i]}','{$sconto[$i]}')";
    Anche se io non utilizzo mai quel sistema... So che in quel modo andrebbe fatto così, ma io non lo uso, quindi non ne son certo del suo funzionamento.

    In ogni caso, occhio alle sql injection! Tutti i valori prelevati dal form devi farli passare attraverso la mysql_real_escape_string() prima di metterli nelle query!

    Infine, immagino che il campo "id" sia autoincrement. Quindi non dovresti specificarlo nella query. Si setterà in automatico nel valore giusto.

    EDIT: ero convinto di avertelo già detto, ma in realtà non l'ho fatto: occhio che le funzioni mysql_*() sono deprecate! Dovresti usare le mysqli_*().

    Ciao!
    Ultima modifica di alemoppo : 28-05-2013 alle ore 17.16.40

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

    Predefinito

    non ho capito cosa intenti per "metti ogni volta variabile per "query2"... Inoltre...
    mysql_real_escape_string() come si usa sulle variabili???
    Grazie...

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

    Predefinito

    Citazione Originalmente inviato da AdminTeclis Visualizza messaggio
    non ho capito cosa intenti per "metti ogni volta variabile per "query2"
    Leggi commento:
    Codice PHP:
    for ($i=0;$i<$conta;$i++) {
    $query2 ="INSERT INTO transazioni (
    id,descrizione,codice,sconto,prezzo,quantita)
    VALUES (NULL,'
    $descrizione[$i]','$codice[$i]','$prezzo[$i]','$quantita[$i]','$sconto[$i]')";
    }

    //qui usi $query2. È ovvio che conterrà l'ultima query (nel ciclo si sovrascrivono). Quindi o concateni le query, o effettui ad ogni ciclo la mysql_query();
    ------
    Citazione Originalmente inviato da AdminTeclis Visualizza messaggio
    mysql_real_escape_string() come si usa sulle variabili???
    mysql_real_escape_string()
    L'avevo usata anche poco prima.

    Ciao!

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

    Predefinito

    Codice PHP:
    $conta=count($ubicazione);
    for (
    $i=0;$i<$conta;$i++) {
    $query2 ="INSERT INTO sedi (
    id,ubicazione,cap,citta,provincia,piva)
    VALUES (NULL,'
    $ubicazione[$i]','$cap_ubi[$i]','$citta_ubi[$i]','$provincia_ubi[$i]','$piva')";
    mysql_query($query2);
    }
    Me ne inserisce tre... due volte l'ultima e una la prima...
    Ultima modifica di AdminTeclis : 29-05-2013 alle ore 10.15.04

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

    Predefinito

    Inoltre aggiungo...
    mi sono letto il link che mi hai passato, riporto il loro esempio :

    Codice PHP:
    $query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
    mysql_real_escape_string($user),
    mysql_real_escape_string($password));
    Quindi significa che se volessi cambiare cosi la mia query sarebbe :

    Codice PHP:
    $query2 ="INSERT INTO sedi (
    id,ubicazione,cap,citta,provincia,piva)
    VALUES (NULL,'mysql_real_escape_string(
    $ubicazione[$i])','mysql_real_escape_string($cap_ubi[$i])','mysql_real_escape_string($citta_ubi[$i])','mysql_real_escape_string($provincia_ubi[$i])','mysql_real_escape_string($piva)')";
    è giusto quello che ho scritto???

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

    Predefinito

    Prova così:
    Codice PHP:
    $query2 ="INSERT INTO sedi (
    id,ubicazione,cap,citta,provincia,piva)
    VALUES (NULL,'"
    .mysql_real_escape_string($ubicazione[$i])."','".mysql_real_escape_string($cap_ubi[$i])."','".mysql_real_escape_string($citta_ubi[$i])."','".mysql_real_escape_string($provincia_ubi[$i])."','".mysql_real_escape_string($piva))."');";
    Comunque ripeto: se id è autoincrement, non ha senso specificarlo nella query.

    Ciao!

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

    Predefinito

    ok ora provo.. il problema rimane che inserisce 3 sedi, di cui 2 uguali e una no.. quando ne dovrebbe isnerire solo 2...

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

    Predefinito

    il problema lo ho come spiegato sopra.. le variabili sono giuste,,,

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

    Predefinito

    Non saprei aiutarti... è strano... Controlla quante volte esegui la query... Hai eliminato il comando "mysql_query()" dopo il for? (quello interno al for va bene. L'altro dovresti averlo già eliminato...).

    Ciao!

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

    Predefinito

    sisi chiaramente si... è giusto fare il count della variabile ubicazione? come indice del for intendo...

    la struttura ora è :

    Codice PHP:
    <?php
    $conta
    =count($ubicazione);
    for (
    $i=0;$i<$conta;$i++) {
    $query2 ="INSERT INTO sedi (
    id,ubicazione,cap,citta,provincia,piva)
    VALUES (NULL,'
    $ubicazione[$i]','$cap_ubi[$i]','$citta_ubi[$i]','$provincia_ubi[$i]','$piva')";
    mysql_query($query2);
    }
    if (@
    mysql_query($query2)) {
    $conta=count($ubicazione);
    for (
    $i=0;$i<$conta;$i++) {
    echo
    $ubicazione[$i]."<br>";
    echo
    $citta_ubi[$i]."<br>";
    echo
    $cap_ubi[$i]."<br>";
    echo
    $provincia_ubi[$i]."<br>";
    }
    ?>

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

    Predefinito

    Teoricamente qualsiasi array che prelevi va bene ($descrizione, $codice, $sconto, $prezzo....)...
    Perché hanno tutti la stessa dimensione, quindi quel che prendi prendi...

    Magari per "test" vedi se le dimensioni degli array sono uguali (ad esempio stampando a video le loro dimensioni)..

    Ciao!

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

    Predefinito

    ti posto la parte finale dello script... tanto la parte sopra è solamente l' $_POST delle variabili, quelle obbligatorie chiaramente incrementano una variabile che viene controllata da un if prima di fare le query etc... lo script è questo :

    Codice PHP:

    <?php
    if($a == 2 && $b == 2 && $c == 2 && $d == 2 && $e == 2 && $f == 2 && $g == 2){
    //INSERISCI NUOVO UTENTE NEL DATABASE
    $query = "INSERT INTO clienti ( id,ragione,indirizzo,cap,citta,provincia,telefono,mail,piva,telefono1,telefono2,fax,agente,telefono_agente,cellulare_agente)
    VALUES (NULL,'
    $ragione','$indirizzo', '$cap','$citta','$provincia','$telefono','$mail','$piva','$telefono1','$telefono2','$fax','$agente','$telefono_agente','$cellulare_agente')";
    $conta=count($ubicazione);
    for (
    $i=0;$i<2;$i++) {
    $query2 ="INSERT INTO sedi (
    id,ubicazione,cap,citta,provincia,piva)
    VALUES (NULL,'
    $ubicazione[$i]','$cap_ubi[$i]','$citta_ubi[$i]','$provincia_ubi[$i]','$piva')";
    mysql_query($query2);
    }
    if (@
    mysql_query($query2)) {
    $conta=count($ubicazione);
    for (
    $i=0;$i<$conta;$i++) {
    echo
    $ubicazione[$i]."<br>";
    echo
    $citta_ubi[$i]."<br>";
    echo
    $cap_ubi[$i]."<br>";
    echo
    $provincia_ubi[$i]."<br>";
    }
    } else {
    echo (
    "<div align=center class=testo> <b>Errore di inserimento cliente: ". mysql_error()
    .
    "</b></div>");
    }
    if (@
    mysql_query($query)) {
    echo (
    "<div align=center class=testo> <b> Cliente inserito con successo.</b></div>");
    } else {
    echo (
    "<div align=center class=testo> <b>Errore di inserimento cliente: ". mysql_error()
    .
    "</b></div>");
    }
    }
    ?>
    Non capisco dove caspita è l'errore *****... eppure l'echo stampa perfettamente tutto,,,
    Ultima modifica di alemoppo : 30-05-2013 alle ore 02.27.03 Motivo: linguaggio volgare

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

    Predefinito

    QUI:

    Codice PHP:
    if (@mysql_query($query2)) {
    Esegui proprio la query che dicevo sopra.
    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Hai eliminato il comando "mysql_query()" dopo il for? (quello interno al for va bene. L'altro dovresti averlo già eliminato...).
    Per controllare se le query sono eseguite correttamente, non ha senso rieseguirle (quindi ti salva altri dati).
    Fai una cosa del tipo:

    Codice PHP:
    $risultato_query = true;
    for (
    $i=0;$i<2;$i++) {
    $query2 ="INSERT INTO sedi (
    id,ubicazione,cap,citta,provincia,piva)
    VALUES (NULL,'
    $ubicazione[$i]','$cap_ubi[$i]','$citta_ubi[$i]','$provincia_ubi[$i]','$piva')";
    if(!
    mysql_query($query2))
    $risultato_query = false;
    }

    /*poi, controlli così:*/
    if($risultato_query)
    {
    //le query sono andate a buon fine
    }
    else
    {
    //errore
    }
    (lo stesso identico discorso per la query1).

    p.s: in questo forum non è tollerato il linguaggio volgare.

    Ciao!
    Ultima modifica di alemoppo : 30-05-2013 alle ore 02.31.21

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

    Predefinito

    Mannaggia la miseria hai perfettamente ragione.. sarà stata una distrazione dovuta all'ora... Sopratutto perchè ci perdevo tempo dalla mattina, e gli errori più banali vengono fuori sempre all'ultimo...

    Ho un altro problema relativo a quella schermata... Facendo le prove con pagine singole funziona tutto, mentre se unisco le due pagine non funziona...

    Come hai visto nelle righe che creo quando trovo il barcode, ci sono la riga sconto in percentuale, quella sconto in valore, e alla fine la riga riassuntiva prezzo scontato...
    Ho fatto una pagina di prova php riproponendo il tutto, in questa maniera :

    Codice PHP:
    <?php
    if(isset($_POST['subtotale'])){
    $prezzosconto=$_POST[prezzosconto];
    $prezzo=$_POST[prezzo];
    $scontoperc=$_POST[scontoperc];
    $scontoval=$_POST[scontoval];
    $quantita=$_POST[quantita];
    if(
    $quantita == null){
    $quantita=1;
    }
    if(
    $scontoperc == null && $scontoval == null){
    $scontoperc=0;
    $scontoval=0;
    $prezzosconto=$prezzo*$quantita;
    }
    if(
    $scontoperc == null){
    $scontoperc=0;
    $prezzosconto = (($prezzo*$quantita) - $scontoval);
    }elseif(
    $scontoval == null){
    $scontoval=0;
    $percentuale=(($prezzo*$scontoperc)/100);
    $prezzosconto = ($prezzo - $percentuale) ;
    $prezzosconto = ($prezzosconto * $quantita);
    }

    }
    ?>
    Ora però è sorto un problema... Io potrei avere più prezzi, e piu righi...

    Come faccio a fargli fare questa cosa per ogni singola riga? Avevo pensato agli array... Inoltre ho notato chhe se provo a inserire questa cosa, usando il form che creo se trova barcode, e il tasto in questa maniera :

    Codice HTML:
    <input type="submit" name="subtotale" onclick= "this.form.action='.$_SERVER['PHP_SELF'].'" value="Subtotale"></td> ';
    Non fa nulla e crea una riga nuova, come se andasse in conflitto con quello che abbiamo fatto precedentemente...Questo problema penso si possa risolvere mettendo queste righe in una funzione , dentro una nuova pagina, e richiamarla con require(); o include(); vero?

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

    Predefinito

    Per il primo problema, sì, devi usare gli array.... anche perché i dati $_POST[] sono comunque array (se non ho capito male).

    Per il secondo problema, prima di eseguire il codice che abbiamo fatto precedentemente, devi vedere se l'utente ha premuto il tasto giusto (adesso non ricordo il nome del submit): un po' come hai fatto qui:

    Codice PHP:
    if(isset($_POST['subtotale'])){
    ovvero:

    Codice PHP:
    if(isset($_POST['inserisci_barcode'])){
    //codice che abbiam fatto prima
    }

    if(isset(
    $_POST['subtotale'])){
    //codice che hai scritto adesso
    }
    Gli include/require non risolvono nulla, perché è come incollare il sorgente direttamente dove includi le pagine.

    Ciao!

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

    Predefinito

    quindi gli $_POST li tratto come un array? del tipo

    Codice PHP:
    <?php
    $prezzo
    =$_POST['prezzo']
    $quantita=$_POST['quantita']
    $sconto=$_POST['sconto']
    $conta=count($prezzo);
    for (
    $i=0;$i<$conta;$i++)
    il codice del tasto;
    chiudo for
    ?>
    Intendi una cosa del tipo?? ovviamente poi per esempio:

    $prezzofinale[$i]=$prezzo[$i]*$quantita[$i];

    Giusto??

    Per quanto riguarda la differenzazzione dei tasti, io gia faccio il tutto se viene premuto il tasto subtotale... devo metterlo direttamente dentro il form che abbiamo fatto per i barcode, senza inserire l'attributo onclick();???

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

    Predefinito

    Ok, ho modificato il codice, ma non l'ho provato perche ho problemi con i vari submit.. intanto ti posto il codice corretto secondo quanto ci siamo detti, vedi si potrebbe andare bene, quanto meno il codice e l'idea...

    Codice PHP:
    <?php
    if(isset($_POST['subtotale'])){
    $prezzosconto=$_POST[prezzosconto];
    $prezzo=$_POST[prezzo];
    $scontoperc=$_POST[scontoperc];
    $scontoval=$_POST[scontoval];
    $quantita=$_POST[quantita];
    if(
    $quantita == null){
    $quantita=1;
    }
    $conta=count($prezzo);
    for (
    $i=0;$i<$conta;$i++){
    if(
    $scontoperc[$i] == null && $scontoval[$i] == null){
    $scontoperc[$i]=0;
    $scontoval[$i]=0;
    $prezzosconto[$i]=$prezzo[$i]*$quantita[$i];
    }
    if(
    $scontoperc[$i] == null){
    $scontoperc[$i]=0;
    $prezzosconto[$i] = (($prezzo[$i]*$quantita[$i]) - $scontoval[$i]);
    }elseif(
    $scontoval[$i] == null){
    $scontoval[$i]=0;
    $percentuale[$i]=(($prezzo[$i]*$scontoperc[$i])/100);
    $prezzosconto[$i] = ($prezzo[$i] - $percentuale[$i]) ;
    $prezzosconto[$i] = ($prezzosconto[$i] * $quantita[$i]);
    }

    }
    }
    ?>

Pagina 2 di 4 PrimoPrimo 1234 UltimoUltimo

Regole di scrittura

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