Visualizzazione risultati 1 fino 14 di 14

Discussione: Form con lettura mysql

  1. #1
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito Form con lettura mysql

    Salve a tutti ho un problema che non so come risolvere

    Ho costruito un form con un select che legge i valori che ho nel database mysql

    Codice PHP:
    <td><select name="Terminale" required id="Terminale">
    <?php
    $query
    = mysql_query("SELECT * FROM Terminali_magazzino ORDER BY categoria ASC");
    while (
    $riga=mysql_fetch_array($query)){
    $telefono=$riga['telefono'];
    echo
    "<option value=\"$telefono\">$telefono</option>";
    }
    ?>
    </select></td>
    Fino a qui tutto bene, adesso mi occorre sapere come faccio ad interrogare il database in un altra Tabella
    con il valore selezionato nel select precedente

    Ad esempio: Seleziono Samsung, mi occorre che il sistema mi vada a leggere il costo che ho su un altra tabella o posso aggiungere un voce nella stessa tabella e me lo invi in un altro database mysql attraverso il form che ho gia costruito,

    Grazie a tutti anticipatamente

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

    Predefinito

    Quella select deve essere dentro un <form> (vedi qui). Quindi prelevi il dato ( se usi post, $_POST['Terminale']) ed utilizzi quel dato per effettuare le operazioni che vuoi.

    Ciao!

  3. #3
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    Il form tutto ok grazie, mi occorre sapere come faccio quando selezioni il terminale lui mi vada a vedere quanto costa, ad es.:

    Seleziono Il telefono Samusng
    Lui con un php va a cercare il telefono in un altra tabella mysql e mi metta il costo di quel telefono in un campo nel form.

    Grazie

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

    Predefinito

    Citazione Originalmente inviato da attenzion Visualizza messaggio
    mi occorre sapere come faccio quando selezioni il terminale lui mi vada a vedere quanto costa
    Una cosa del tipo:
    Codice:
    SELECT costo FROM terminali WHERE nome_terminale = $_POST['terminale']
    Ovviamente il tutto con gli opportuni controlli su $_POST['terminale']

    Comunque, ti consiglierei di utilizzare l'id piuttosto del nome del telefono (sempre che il campo id sia presente nella tabella), con il form del tipo:
    Codice PHP:
    $id=$riga['id'];
    $telefono=$riga['telefono'];
    echo
    "<option value=\"$id\">$telefono</option>";
    Quindi poi:
    Codice:
    SELECT costo FROM terminali WHERE id= $_POST['terminale']
    Ciao!
    Ultima modifica di alemoppo : 01-07-2018 alle ore 11.45.12

  5. #5
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    Niente non riesco a venire a capo, mi invia il form ma non mi aggiunge il costo
    Codice PHP:
    <?php
    $risultato32
    = mysql_query("SELECT Importo FROM Costo_Smartphone WHERE Terminale= $_POST.['Terminale'].");
    $risultato32 = $Costo
    ?>
    Ho messe costo perche nella riga sottostante ho questo codice, dove mi deve mettere nella colonna costo il costo che prende dal codice precedente

    Io ho una tabella mysql che si chiama Costo_Smartphone dove c'e' il nomi dei terminali e i relativi costi
    e una tabella magazzino dove ho tutti i telefono dove va aggiunto anche il costo che deve prende dall'altra tabella.

    Codice PHP:
    <?php

    // attraverso un if controlliamo che il form sia stato inviato

    if ( $_GET['inviodati'] == "ok" ) {

    // attraverso un if controlliamo che il campo seriale imei sia compilato


    if ($_POST['Seriale_Imei'])
    {

    // recuperiamo i dati inviati con il form

    $Punto_Vendita = $_POST['Punto_Vendita'];

    $Terminale = $_POST['Terminale'];

    $Inserimento_Manuale_terminale = ucwords($_POST['Inserimento_Manuale_terminale']);

    $Codice_Prodotto = strtoupper($_POST['Codice_Prodotto']);

    $Colore = ucwords($_POST['Colore']);

    $Seriale_Imei = $_POST['Seriale_Imei'];

    $data_consegna = date('d-m-Y');

    $scadenza = date('d-m-Y', $scadenza);

    // ora controlliamo che i campi siano stati tutti compilati

    mysql_query ("INSERT INTO Magazzino
    (id , Punto_Vendita , Terminale , Inserimento_Manuale_terminale , Codice_Prodotto , Colore, Seriale_Imei, data_consegna, scadenza, Costo )
    VALUES
    ('','
    $Punto_Vendita', '$Terminale', '$Inserimento_Manuale_terminale', '$Codice_Prodotto', '$Colore', '$Seriale_Imei', '$data_consegna', '$scadenza' , '$Costo' )") OR DIE(mysql_error());

    // messaggio da far visualizzare all'utente finale

    echo "";


    } else {


    }


    }



    ?>
    Comunque grazie di tutti sempre disponibili
    trovo un supporto ogni volta.
    Grazie

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

    Predefinito

    • Non dovresti usare le funzioni mysql ma mysqli (sono molto simili, vedi gli esempi qui); l'unica accortezza è di utilizzare sempre lo stesso stile: se utilizzi quello procedurale utilizza sempre quello; se utilizzi quello ad oggetti utilizza sempre ad oggetti
    • La query per selezionare dovrebbe essere una cosa del tipo:
      Codice PHP:
      "SELECT Importo FROM Costo_Smartphone WHERE Terminale=".$_POST['Terminale']
      (ricordo comunque gli opportuni controlli su $_POST['Terminale']
    • Una volta effettuata la SELECT, dovresti leggere i dati. Se fai:
      Codice PHP:
      $risultato32 = $Costo
      non va bene ed anzi invalidi la query precedente.
      Se vuoi usare il vecchio mysql (sconsigliato), vedi la mysql_fetch_assoc(); io ti consiglierei di usare invece (tutto il codice) mysqli, quindi vedi mysqli_fetch_assoc (volendo puoi usare anche PDO (PDO::fetchall)).


    Ciao!

  7. #7
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    Grazie e ancora grazie, adesso il codice sembra funzionare se selezioni il terminale mi esce la scritta con il prezzo,
    adesso come faccio a sostituire il echo con $costo per farlo andare ad inserire?

    Codice PHP:
    <?php
    $gente
    = $_POST['Terminale'];
    $query = "SELECT Importo FROM Costo_Smartphone WHERE Terminale='$gente'";
    $result = mysql_query($query) or die('Errore' . mysql_error());
    //contiamo il numero di record restituiti dalla query tramite la funzione mysql_num_rows
    while ($row = mysql_fetch_assoc($result)) {
    echo
    '€&nbsp;', $row['Importo'] , "\n";
    }
    ?>
    Con questo: echo '€&nbsp;', $row['Importo'] , "\n"; in basso mi esce il prezzo, ma a me non serve scriverlo nella pagina ma inserirlo nel dabatase.

    Grazie e buona giornata

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

    Predefinito

    Citazione Originalmente inviato da attenzion Visualizza messaggio
    Gin basso mi esce il prezzo, ma a me non serve scriverlo nella pagina ma inserirlo nel dabatase.
    Scusami ma c'è qualche che non mi torna: stai leggendo il valore dal database e vuoi salvarlo nel database? Ma non è già salvato?

    Ciao!

  9. #9
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    Ciao per l'ennesima volta ti ringrazzio

    Io voglio salvarlo nel database, cosi me lo fa solo vedere che a me non serve.
    Si il costo è gia salvato, ma quando seleziono il telefono lui con quel codice mi va a vedere il prezzo ma poi voglio che quando registro il form mi vada a salvare il prezzo

    Quindi io ho nel form:

    1° Mi fa scegliere il telefono da inserire

    Codice PHP:
    <td><select name="Terminale" required id="Terminale">
    <?php
    $query
    = mysql_query("SELECT * FROM Terminali_magazzino ORDER BY categoria ASC");
    while (
    $riga=mysql_fetch_array($query)){
    $telefono=$riga['telefono'];
    echo
    "<option value=\"$telefono\">$telefono</option>";
    }
    ?>
    </select></td>
    2° Mi fa "vedere", che a me non occorre ma serve salvare il prezzo del telefono selezionato nel PHP precedente

    Codice PHP:
    <?php
    $gente
    = $_POST['Terminale'];
    $query = "SELECT Importo FROM Costo_Smartphone WHERE Terminale='$gente'";
    $result = mysql_query($query) or die('Errore' . mysql_error());
    //contiamo il numero di record restituiti dalla query tramite la funzione mysql_num_rows
    while ($row = mysql_fetch_assoc($result)) {
    echo
    '€&nbsp;', $row['Importo'] , "\n";
    }
    ?>
    3° Ultimo passaggio è il salvataggio nel database del form inviato ma non mi salva il COSTO

    Codice PHP:
    <?php

    // attraverso un if controlliamo che il form sia stato inviato

    if ( $_GET['inviodati'] == "ok" ) {

    // attraverso un if controlliamo che il campo seriale imei sia compilato


    if ($_POST['Seriale_Imei'])
    {

    // recuperiamo i dati inviati con il form

    $Punto_Vendita = $_POST['Punto_Vendita'];

    $Terminale = $_POST['Terminale'];

    $Inserimento_Manuale_terminale = ucwords($_POST['Inserimento_Manuale_terminale']);

    $Codice_Prodotto = strtoupper($_POST['Codice_Prodotto']);

    $Colore = ucwords($_POST['Colore']);

    $Seriale_Imei = $_POST['Seriale_Imei'];

    $data_consegna = date('d-m-Y');

    $scadenza = date('d-m-Y', $scadenza);

    // ora controlliamo che i campi siano stati tutti compilati

    mysql_query ("INSERT INTO Magazzino
    (id , Punto_Vendita , Terminale , Inserimento_Manuale_terminale , Codice_Prodotto , Colore, Seriale_Imei, data_consegna, scadenza, Costo )
    VALUES
    ('','
    $Punto_Vendita', '$Terminale', '$Inserimento_Manuale_terminale', '$Codice_Prodotto', '$Colore', '$Seriale_Imei', '$data_consegna', '$scadenza' , '$Costo' )") OR DIE(mysql_error());

    // messaggio da far visualizzare all'utente finale

    echo "";


    } else {


    }


    }



    ?>

    Quindi quel secondo passaggio che mi fa vedere il prezzo non mi serve, a me serve salvarlo quel risultato che mi esce $COSTO

    Grazie
    Scusa per la confusione

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

    Predefinito

    Per le interazioni con il database devi usare le query.
    Nel caso del salvataggio, dovresti usare una INSERT per inserire il prezzo in una tabella.
    Non ho ben chiaro come è fatto il tuo database e come vorresti salvarlo (ancora non ho capito perché vorresti salvare una cosa che hai già nel database: se vuoi semplicemente effettuare un carrello, ti è sufficiente salvare l'id del prodotto che l'utente ha aggiunto al carrello, poi tramite l'id puoi ricavare tutte le informazioni che ti servono.)

    Ciao!

  11. #11
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    Perche va spostato da un database ad un altro

    Io praticamente ho un database che ci sono solo i telefoni con i relativi costi,e un altro invece e' proprio un magazzino che inserisco man mano che arrivano i telefoni nel negozio.

    Io quando seleziono dal form il telefono "database 1" mi serve che estrapoli il costo del telefono selezionato "sempre dal database 1" e l'aggiunga al database 2 che invio tramite il form

    Diciamo che con questo codice ho mezzo risolto perche mi scrive a video il relativo costo, ma a me serve che mi sposti quel risultato sull'altro database che invio tramite il form

    Codice PHP:
    <?php
    $gente
    = $_POST['Terminale'];
    $query = "SELECT Importo FROM Costo_Smartphone WHERE Terminale='$gente'";
    $result = mysql_query($query) or die('Errore' . mysql_error());
    //contiamo il numero di record restituiti dalla query tramite la funzione mysql_num_rows
    while ($row = mysql_fetch_assoc($result)) {
    echo
    '€&nbsp;', $row['Importo'] , "\n";
    }
    ?>

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

    Predefinito

    Considerando che su AlterVista hai a disposizione solamente un database, immagino che ti voglia copiare i contenuti in tabelle differenti, non database.

    Rimane valido tutto ciò che ho scritto sopra, queste cose andrebbero fatte copiando solamente gli id: quando arriva un telefonino aggiungi l'ID del database del dei telefonini, quindi tramite l'id (andando a cercare nella tabella dei telefonini) potrai ottenere tutte le informazioni di quel telefonino (prezzo, nome, etc).

    In ogni caso, sei liberissimo di fare come pensi: come detto prima se vuoi inserire il dato in un'altra tabella devi usare la INSERT.

    Ciao!

  13. #13
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    Risolto cosi:

    Codice PHP:
    <?php


    $gente
    = $_POST['Terminale'];

    // calcola le pagine totali
    $result = mysql_query("SELECT Importo FROM Costo_Smartphone WHERE Terminale='$gente'");
    $total_results = mysql_num_rows($result);
    $total_pages = ceil($total_results);
    $Costo = mysql_result ($result, 0, 'Importo') or die(mysql_error());

    ?>
    Un ultima cosa mi esce in basso:

    Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 10 in

    Cosa vuol dire come risolto

    Ancora grazie per la pazienza

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

    Predefinito

    Come mai utilizzi mysql_result e non mysql_fetch_assoc?
    Comunque controlla se $result non sia false.

    Ciao!

Regole di scrittura

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