Visualizzazione dei risultati da 1 a 5 su 5

Discussione: UPDATE form.

  1. #1

    UPDATE form.

    Ho una form i cui campi si popolano dei valori di una riga ben definita.
    Questa operazione di autocompletamento serve per guidare l'utente alla modifica dell'intera riga. L'istruzione viene passata via $_GET alla form per mezzo di questo link:
    codice:
    modifica
    Il browser a questo punto riceve per esempio:
    codice:
    index.php?pagina=aree/modifica_aree&tabella=aree&record=Area&riga=Stoccaggio materie prime
    Clickando sul link si viene reindirizzati alla form (modifica_aree.php) per la modifica della riga interessata:



    Codice PHP:
    <html>
    <?php 
    include 'config.php';  
    $tabella=$_GET["tabella"]; 
    $record=$_GET["record"]; 
    $riga=$_GET["riga"];  

    //Seleziona tutti i record della tabella dove nel campo è contenuto il valore che scelgo ($riga)
     
    $da_modificare="SELECT * FROM $tabella WHERE $record = '$riga'"

    $risultato=mysql_query($da_modificare);   
    if (!
    $risultato) {     
    die(
    "Errore nella query $query: " mysql_error()); 
    }  
    $da_modificare = array(); 
    while (
    $row mysql_fetch_assoc($risultato)) {    
    $da_modificare[] = $row;     
    ?>  

    <body> <div style="background-color:#F2F2F2">
    <fieldset> <legend>Modifica Aree</legend> 
    <form name="modifica_area" method="post" 
    action="http://localhost/MyScript/Tutorial/pagine aree/raccolta_dati_area.php?azione=modifica">  
    <?php foreach($da_modificare as $riga):?> <table width="200" border="0"> 
    <input type="hidden" name="tabella" value="aree" />   <tr>     
    <th align="left" scope="row"><span class="Stile3">Nome Area</span></th>     
    <td><input name="Area" type="text" size="50" maxlength="255" value="<?php echo $riga['Area']?>"></td></tr>    
    <tr><th align="left" scope="row"><span class="Stile3">Descrizione</span></th>     

    <td><textarea name="descrizione" cols="50" rows="5"><?php echo $riga['descrizione_area']?></textarea></td>   </tr>     
    <tr><th align="left" scope="row"><span class="Stile3">Superficie</span></th>
    <td><input name="superficie" type="text" size="50" 
    value="<?php echo $riga['superficie_area']?>"></td>   
    </tr>


    <input type="submit" name="modifica" value="Modifica area"></p>
    </fieldset>
    </div>
    <?php endforeach;
    mysql_close();
    La query in raccolta_dati_aree.php è questa:
    Codice PHP:
    if($azione=="modifica") {  
    $area=$_POST['Area']; 
    $descrizione_area=$_POST['descrizione']; 
    $query="UPDATE '$tabella' SET Area, descrizione_area, = '$area','$descrizione' WHERE '$record' = '$riga'";
     }   
    mysql_query($query) or die("aggiornamento fallito"); 
    Il problema è che all'invio dei dati non fa nulla a parte un refresh della pagina.

    Dove sbaglio?

  2. #2

  3. #3
    ok.. grazie per il consiglio.

    Non è che nel frattempo si possono avere delle indicazioni utili su come strutturare bene il processo?

  4. #4
    ok. mettiamola così:

    arrivo alla form da questo link:
    codice:
    index.php?pagina=aree/modifica_aree&azione=modifica&tabella=aree&record=Area&riga=Laboratorio
    La form per la modifica è questa. Voglio snocciolare l'array $_GET e portarmelo dietro per usarne i parametri nella query di modifica:
    Codice PHP:
    <html> 
    <?php  
    $azione 
    $_GET['azione']; 
    $tabella $_GET['tabella']; 
    $record $_GET['record']; 
    $riga $_GET['riga'];  
    ?> 
    <body> 
    <div> 
    <fieldset><legend>Modifica Aree</legend>
    [COLOR=orangered]//vorrei indicare all'action di portarsi dietro le variabili $_GET... ma attualmente non funziona//[/COLOR] 
    <form name="modifica" method="post" 
    action="index.php?pagina=azione_modifiche&azione=[COLOR=orangered]$azione[/COLOR]&tabella=[COLOR=orangered]$tabella[/COLOR]&record=[COLOR=orangered]$record[/COLOR]&riga=[COLOR=orangered]$riga[/COLOR]">
    <table> 
    <tr>
    <th>Nome Area</th>
    <td><input name="Area" type="text" size="50" maxlength="255"></td> 
    </tr>
    <tr>
    <th>Descrizione</th>
    <td><textarea name="descrizione" cols="50" rows="5"></textarea></td>
    </table>


    <input type="submit" name="modifica" value="Modifica area"></p>
    </fieldset>
    </div>
    Segue quindi azione_modifiche.php che mi restituisce un errore di sintassi nella query.. credo perchè non vengano valorizzate le variabili $_GET che dichiaro:
    Codice PHP:
    <?php
    include 'config.php';

    $azione $_GET['azione']; 
    $tabella $_GET['tabella']; 
    $record $_GET['record']; 
    $riga $_GET['riga'];  

    if (isset(
    $_POST['modifica'])) {   

    $area=$_POST['Area']; 
    $descrizione_area=$_POST['descrizione'];  
    }  

    $query="UPDATE $tabella SET Area = '$area', descrizione_area = '$descrizione_area
    WHERE '
    $record' =   '$riga'";     
    mysql_query($query
    or die(
    "aggiornamento fallito: "mysql_error());    

    exit;  

    echo 
    "'$tabella','$record','$riga','$area','$descrizione_area'";  

    ?>
    L'echo mi da solo i valori di $area e $descrizione_area che si trovano nel post. Per le prime tre variabili ($_GET) vedo inutilmente stampato il solo nome della variabile.
    Sarà una banalità.. ma proprio sto diventando matto!

  5. #5
    Ho risolto.

    Bastava scrivere così la action:
    codice:
    action="index.php?pagina=aree/raccolta_dati_area&azione=modifica
    &tabella=<?php echo $tabella?>
    &record=<?php echo $record ?>
    &riga=<?php echo $riga ?>">
    me ne sono accorto stampando le variabili passate dalla action usando questo metodo:

    print_r($_GET);
    echo "
    ----------------------------------------------
    ";
    print_r($_POST);
    echo "
    ----------------------------------------------
    ";
    print_r($_SERVER);

    :berto:

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.