• User Newbie

    [PHP+mysql] modificare i dati tabella

    Ciao a tutti. Sono nuovo del PHP vi posto il codice di una pagina che ho fatto. Mi fa visualizzare i dati del db in una tabella.A destra ho messo 2 iconcine una per cancellare e mi funziona e per la modifica. Volevo far sì che quando clicco sull'inconcina modifica mi si apra una pagina in cui ci sono dei form che mi riprendono i dati della tabella che ho nel mio db e si possano moficare e salvarli sul db. Non so se mi sono spiegato bene! Chiedo scusa se non l'ho fatto..

    [php]

    <html>
    <head>
    <title>EMAIL BONET LEPSCHY & ASSOCIATI</title>
    </head>
    <body text="#990000" link="#990000" vlink="#990000" alink="#990000">
    <font FACE="VERDANA">
    <?php
    require 'conn.php';
    if($_POST)
    {
    $ids = isset($_POST['cod']) ? $_POST['cod'] : array();
    elimina_record($ids);
    }
    elseif(isset($_GET['cod']))
    {
    elimina_record(array($_GET['cod']));
    }
    else
    mostra_lista();

    function mostra_lista()
    {
    // mostro un eventuale messaggio
    if(isset($_GET['msg']))
    echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';

    // preparo la query   
    $query = "SELECT cod,rag_soc_1,rag_soc_2,E_mail_1,E_mail_2,E_mail_3 FROM email";   
    
    // invio la query   
    $result = mysql_query($query);   
    
    // controllo l'esito   
    if (!$result) {   
        die("Errore nella query $query: " . mysql_error());   
    }   
    
    echo '   
    
    <table border="1 px" bordercolor="#006633" align="center" CELLSPACING="0" frame="box">
    

    <tr bgcolor="#EAEAEA">
    <td NOWRAP align="center">Cod</td>
    <td NOWRAP align="center">Cognome</td>
    <td NOWRAP align="center">Nome</td>
    <td NOWRAP align="center">Email 1</td>
    <td NOWRAP align="center">Email 2</td>
    <td NOWRAP align="center">Email 3</td>
    <td NOWRAP align="center"></td>
    <td NOWRAP align="center"></td>
    </tr>';

    while ($row = mysql_fetch_assoc($result))  
    {  
        $cod       =htmlentities($row['cod']);
        $rag_soc_1 =htmlentities($row['rag_soc_1']);
        $rag_soc_2 =htmlentities($row['rag_soc_2']);
        $E_mail_1  =htmlentities($row['E_mail_1']);
        $E_mail_2  =htmlentities($row['E_mail_2']);
        $E_mail_3  =htmlentities($row['E_mail_3']);  
    
        // preparo il link per la modifica dei dati del record  
        $link = $_SERVER['PHP_SELF'].'?cod=' . $row['cod'];  
    

    $bgcolor = $bgcolor == '#ffffff' ? '#EAEAEA' : '#ffffff';

        echo "
          <tr bgcolor=$bgcolor>  
            <td NOWRAP><font size=\"1\">$cod</font></td>  
            <td NOWRAP><font size=\"1\">$rag_soc_1</font></td>  
            <td NOWRAP><font size=\"1\">$rag_soc_2</font></td> 
            <td NOWRAP><font size=\"1\">$E_mail_1</font></td>  
            <td NOWRAP><font size=\"1\">$E_mail_2</font></td>  
            <td NOWRAP><font size=\"1\">$E_mail_3</font></td>
            <td NOWRAP ><a href=\"\"><img src=\"mod.png\" alt=\"modifica\" border=\"0\"></a></td>
    
            <td NOWRAP ><a href=\"$link\"><img src=\"del.gif\" alt=\"cancella\" border=\"0\"></a></td>  
            </tr>";  
    }  
    
    echo '</table>   
        <br />   
       ';  
    
    // libero la memoria di PHP occupata dai record estratti con la SELECT  
    mysql_free_result($result);  
    
    // chiudo la connessione a MySQL  
    mysql_close();  
    

    }

    function elimina_record($ids)
    {
    // verifico che almeno un id sia stato selezionato
    if(count($ids) < 1)
    {
    $messaggio = urlencode("Nessun record selezionato!");
    header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
    exit;
    }

    // per precauzione converto gli ID in interi  
    $ids = array_map('intval',$ids);  
    
    // creo una lista di ID per la query  
    $ids = implode(',',$ids);  
    
    // preparo la query  
    $query = "DELETE FROM email WHERE cod IN ($ids)";  
    
    // invio la query  
    $result = mysql_query($query);  
    
    // controllo l'esito   
    if (!$result) {   
        die("Errore nella query $query: " . mysql_error());   
    }   
    

    // conto il numero di record cancellati
    $num_record = mysql_affected_rows();

    // chiudo la connessione a MySQL   
    mysql_close();  
    

    $messaggio = urlencode("Numero record cancellati: $num_record");
    header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);

    }

    ?>
    </font>
    </body>
    </html>

    [/php]

    A e poi volevo sapere se si può far si che mi venga un popup prima di cancellare la riga per chiedere se si è sicuri o meno. Se si cancella se non ritorna indietro


  • Super User

    Ciao gotiche e benvenuto nel forum GT.
    Prova a fare così (sostituisci la parte di codice interessata):
    [php]
    session_start();
    $_SESSION[cod]=$cod;
    $_SESSION[rag_soc_1]=$rag_soc_1;
    $_SESSION[rag_soc_2]=$rag_soc_2;
    $_SESSION[E_mail_1]=$E_mail_1;
    $_SESSION[E_mail_2]=$E_mail_2;
    $_SESSION[E_mail_3]=$E_mail_3;
    $link = 'modifica.php?cod=' . $row['cod']; [/php]Poi in modifica.php metti:
    [php]
    if(isset($_GET[cod])){
    session_start();
    // codice per form e modifiche
    }[/php]Ora per recuperare le variabili impostate dalla pagina precedente usa la variabile globale $_SESSION.
    Ad esempio per stampare la variabile $rag_soc_1 impostata precedentemente usa:
    [php]echo $_SESSION[rag_soc_1];[/php]Per la modifica dei campi usa la sintassi mysql UPDATE.

    Per la seconda richiesta fai così (sempre sostituendo):

    [php]

    elseif(isset($_GET['cod']))
    {
    echo "
    <SCRIPT LANGUAGE="JavaScript">
    action = confirm('Premi ok per procedere o cancel per annullare');
    if (action==true)
    parent.self.location.href = '?elim=1';
    </script>";

    }if($_GET[elim]=1){ elimina_record(array($_GET['cod']));
    }
    [/php]
    Ciao! 😉


  • User Newbie

    ora provo!grazie!


  • Super User

    Di niente,facci sapere 😉


  • User Newbie

    con questa parte di codice non riesce più a connettersi al DB...

    [php]

    elseif(isset($_GET['cod']))
    {
    echo "
    <SCRIPT LANGUAGE="JavaScript">
    action = confirm('Premi ok per procedere o cancel per annullare');
    if (action==true)
    parent.self.location.href = '?elim=1';
    </script>";

    }if($_GET[elim]=1){ elimina_record(array($_GET['cod']));
    }
    [/php]

    e con questo non mi tire fuori più i dati... =(
    [php]
    session_start();
    $_SESSION[cod]=$cod;
    $_SESSION[rag_soc_1]=$rag_soc_1;
    $_SESSION[rag_soc_2]=$rag_soc_2;
    $_SESSION[E_mail_1]=$E_mail_1;
    $_SESSION[E_mail_2]=$E_mail_2;
    $_SESSION[E_mail_3]=$E_mail_3;
    $link = 'modifica.php?cod=' . $row['cod'];
    [/php]


  • User Newbie

    nessu'altro suggerimento? 😢