Visualizzazione risultati 1 fino 2 di 2

Discussione: Aiuto per update in php-mysql

  1. #1
    Guest

    Exclamation Aiuto per update in php-mysql

    Ciao a tutti. Sono alle prime armi con la programmazione.
    In poche parole, dovrei fare un database per una di link. La tabella l'ho già creata con 3 colonne di nome id, nome, link.
    Il form per inserire, modificare ed eliminare è qui di seguito

    programma_preset.php:

    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf8"/>
    <meta http-equiv="cache-control" content="no-cache"/>
    <meta http-equiv="expires" content="0"/>
    <meta http-equiv="pragma" content="no-cache"/>
    <meta http-equiv="expires" content="-1"/>
    <meta name="robots" content="none,noindex"/>

    <script language="javascript" type="text/javascript">
    function addtext(txt)
    {
    var string = txt.replace(/(\r)/g, '\n') ;
    var string2 = string.split('|');
    var id = (string2[0]);
    var nome = (string2[1]);
    var codice = (string2[2]);
    document.getElementById("textaarea").value = codice;
    document.getElementById("id").value = id;
    document.getElementById("nome").value = nome;
    }
    </script>

    </head>

    <body>

    <center> <!-- Inizio centratura tabella contenitore modifica preset -->
    <table id="table_modifica_preset" border="1"> <!-- Inizio tabella contenitore modifica preset -->
    <tr>
    <td height="27px" align="center">
    <b>Modifica link nel database della tabella preset</b>
    </td>
    </tr>
    <tr>
    <td>
    <center> <!-- Inizio centratura tabella contenitore form modifica preset -->
    <table id="table_form_modifica_preset" border="1"> <!-- Inizio tabella contenitore form modifica preset -->
    <form name="form" id="form" action="modifica_preset.php" method="post"> <!-- Inizio form modifica preset -->
    <tr>
    <td width="105px" align="right">Lista Preset</td>
    <td align="left" width="200px">
    <select name="preset" onchange="addtext(this.value);">
    <option value="">-- Seleziona --</option>
    <?php
    include 'config.php';

    //Seleziona i record da aggiungere al menù di selezione
    $query = 'SELECT nome, codice, id FROM preset';

    $result = mysql_query($query, $connessione) or die (mysql_error ());

    //Popola le opzioni della select con i risultati
    while ($row = mysql_fetch_assoc($result))
    {
    if (
    $row['codice'] == $preset)
    {
    echo
    '<option value="' .$row['codice']. '">';
    }
    else
    {
    echo
    '<option value="' .$row['codice']. '">';
    }
    echo
    $row['nome']. '</option>';
    }
    ?>
    </select>
    </td>
    </tr>
    <tr>
    <td align="right">Nome&nbsp;</td>
    <td align="left">
    <input id="nome" type="text" name="nome">
    </td>
    </tr>
    <tr>
    <td align="right">Codice&nbsp;</td>
    <td align="left">
    <textarea id="textarea" name="codice" rows="3" cols="60"></textarea>
    </td>
    </tr>
    <tr>
    <td align="right"></td>
    <td align="left">
    <input type="reset" value="Cancella">
    <input type="submit" name="aggiungi" value="Aggiungi">
    <input type="submit" id="01" name="modifica" value="Modifica">
    <input type="submit" id="03" name="elimina" value="Elimina" onclick="return confirm('Vuoi realmente CANCELLARE ? \nIl processo &egrave; irreversibile! \n\nPensaci bene.');">
    </td>
    </tr>
    </form> <!-- Fine form modifica preset -->
    </table> <!-- Fine tabella contenitore form modifica preset -->
    </center> <!-- Fine centratura tabella contenitore form modifica preset -->
    </td>
    </tr>
    </table> <!-- Fine tabella contenitore modifica preset -->
    </center> <!-- Fine centratura tabella contenitore modifica preset -->

    </body>

    </html>
    Con una query e un while, ho popolato il menù di selezione. Nel campo value ho messo il link e tra i tag option il nome, così nella textarea viene visualizzato il link e nell'input nome il nome.

    Qui di seguito inserisco il file config.php:

    Codice PHP:
    <?php
    //Definisco:
    // Il nome dell'host (hostname) su cui si trova mysql
    $host = "localhost";
    // Il nome del nostro database
    $namedb = "my_database";
    // Il nostro nome utente (username)
    $username = "username";
    // La nostra password
    $password = "*****";
    //Mi connetto al server mysql
    $connessione = @mysql_connect($host, $username, $password) or die ("Impossibile stabilire una connessione");
    //Mi connetto al database specificato
    $data_base= @mysql_select_db($namedb, $connessione) or die ("Impossibile selezionare il database");
    // Impostiamo la codifica della connessione
    mysql_set_charset('utf8'); // attenzione è 'utf8' NON 'utf-8'
    ?>

    Ora viene la parte in cui mi blocco, cioè quella della modifica sia del nome che del link, che dovrebbero avvenire insieme, o uno o l'altro.

    modifica_preset.php:

    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf8"/>
    <meta http-equiv="cache-control" content="no-cache"/>
    <meta http-equiv="expires" content="0"/>
    <meta http-equiv="pragma" content="no-cache"/>
    <meta http-equiv="expires" content="-1"/>
    <meta name="robots" content="none,noindex"/>

    </head>

    <body>

    <center>
    <table border="1">
    <tr>
    <td><b>Esito operazione effettuata sulla lista preset</b></td>
    </tr>
    <tr>
    <td>
    <center>
    <table>
    <tr>
    <td>
    <?php
    // Connessione al database
    include('config.php');

    if(isset(
    $_POST['aggiungi']))
    {
    // Processo recupero dati
    $id = $_POST['id'];
    $nome = $_POST['nome'];
    $link = $_POST['link'];

    $query = "INSERT INTO preset (id, nome, link) VALUES (NULL , '$nome', '$id|$nome|$link')";

    if (@
    mysql_query($query, $connessione))
    {
    echo (
    "<b>Record inserito con successo.</b><br><br>Attendere 4 secondi per il reflesh automatico.");
    echo
    '<meta http-equiv="refresh" content="5;url=programma_modifica_preset.php">';
    }
    else
    {
    echo (
    "<b>Errore inserimento record: " .mysql_error(). "</b>");
    }
    mysql_close();
    }
    ?>

    <?php
    // Connessione al database
    include('config.php');

    if(isset(
    $_POST['modifica']))
    {
    // Processo recupero dati
    $id = $_POST['id'];
    $nome = $_POST['nome'];
    $link = $_POST['link'];

    $query = "UPDATE preset SET link='$link' WHERE nome='$nome'";

    if (@
    mysql_query($query, $connessione))
    {
    echo (
    "<b>Record modificato con successo.</b><br><br>Attendere 4 secondi per il reflesh automatico.");
    echo
    '<meta http-equiv="refresh" content="5;url=programma_modifica_preset.php">';
    }

    else
    {
    echo (
    "<b>Errore modifica record: " .mysql_error(). "</b>");
    }

    mysql_close();
    }
    ?>

    <?php
    // Connessione al database
    include('config.php');

    if(isset(
    $_POST['elimina']))
    {
    // Processo recupero dati
    $id = $_POST['id'];
    $nome = $_POST['nome'];
    $link = $_POST['link'];

    $query = "DELETE FROM preset WHERE id='$id' OR nome='$nome' OR link='$link'";

    if (@
    mysql_query($query, $connessione))
    {
    echo (
    "<b>Record cancellato con successo.</b><br><br>Attendere 4 secondi per il reflesh automatico.");
    echo
    '<meta http-equiv="refresh" content="5;url=programma_modifica_preset.php">';
    }
    else
    {
    echo (
    "<b>Errore eliminazione record: " .mysql_error(). "</b>");
    }
    mysql_close();
    }
    ?>
    </td>
    </tr>
    </table>
    </center>
    </td>
    </tr>
    </table>
    </center>

    </body>

    </html>
    Chiedo se possibile ricevere un aiuto per terminare questo form. Non riesco ad andare avanti.
    Metto a disposizione una pagina col form programma_modifica_preset.php
    Grazie anticipatamente a chi partecipa a questa discussione

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

    Predefinito

    Il codice è molto obsoleto. Rivedere il tag <center> mi ha fatto emozionare.
    Anche l'uso delle funzioni "mysql_*" bisognerebbe evitarlo, considerando invece l'uso di mysqli o PDO.

    In ogni caso, anche con sorgente obsoleto dovrebbe comunque funzionare.

    Alcuni consigli in generale: includi solo all'inizio il file "config.php", e poi fai un'unica chiusura alla fine di mysql_query(). Poi, occhio alle sql injection: tutti i dati che prendi dal form, prima devi filtrarli con la mysql_real_escape_string().

    Sicuro che la query:
    INSERT INTO preset (id, nome, link) VALUES (NULL , '$nome', '$id|$nome|$link')
    è corretta? Cioè, io farei:
    Codice:
    INSERT INTO preset (nome, link) VALUES ('$nome', '$link')
    Il campo "id" non lo metterei, perché visto che nel database è del tipo "AUTO_INCREMENT" (vero?), si setterà in automatico con il valore corretto.

    Altra cosa: per vedere alcuni errori, sarebbe bene evitare di non nasconderli tramite il carattere '@' prima delle varie funzioni.

    Ciao!
    Ultima modifica di alemoppo : 09-10-2013 alle ore 12.33.28

Regole di scrittura

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