Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146

    Come aggiornare un campo di un record senza modificare gli altri?

    Salve,

    devo realizzare una pagina in php che mi permetta di modificare un certo numero di campi, dipende dai casi, di un record.

    Con il codice che ho scritto io riesco a modificare i campi che voglio ma il problema è che mi cancella gli altri campi!

    ecco il codice, ho fatto un form che invia i dati in un'altra pagina php. Questo è il form

    Codice PHP:
    <html>  <body>    <form method="get" action="update1.php">    In quale Tabella vuoi operare?
      <
    select name="tabella">  <option value="telefilm">Telefilm</option>  <option value="hd">Film HD</option>  </select>    

        
    Inserisci ID del Film o Telefilm che vuoi modificare:
      <
    input type="text" size="40" name="id" />  

        
    Indica Cosa Vuoi Modificare:

        
    Titolo:  <input type="text" size="40" name="titolo" />    &#160;  Nazione:  <input type="text" size="40" name="nazione" />       Anno:  <input type="text" size="40" name="anno" />  

        
    Genere:  <input type="text" size="40" name="genere" />  &#160;    Stagione:  <input type="text" size="40" name="stagione" />       Puntate:  <input type="text" size="40" name="puntate" />  

        
    DurataMinuti:  <input type="text" size="40" name="durataminuti" />  &#160;    Ideatore:  <input type="text" size="40" name="ideatore" />           HD:  <input type="text" size="40" name="hd" />  

        
    NumeroCampana:
      <
    input type="text" size="40" name="numerocampana" />  

        
    Commenti:
      <
    input type="text" size="40" name="commenti" />  

        
    Risoluzione:  <input type="text" size="40" name="risoluzione" />  

      
    Visto  <input type="text" size="40" name="visto" />  

      
    Voto S:  <input type="text" size="40" name="votos" />  Voto F:  <input type="text" size="40" name="votof" />  

        <
    input type="submit" value="Aggiorna" />  </form>    </html>  </body
    ecco la pagina update1.php che deve eseguire il lavoro sporco

    Codice PHP:
    <?  include("top_foot.inc.php");  include("config.inc.php");  top();          $Id=$_REQUEST['id'];  $Tabella=$_REQUEST['tabella'];  $Titolo=$_REQUEST['titolo'];  $Nazione=$_REQUEST['nazione'];  $Anno=$_REQUEST['anno'];  $Genere=$_REQUEST['genere'];  $Stagione=$_REQUEST['stagione'];  $Puntate=$_REQUEST['puntate'];  $DurataMinuti=$_REQUEST['durataminuti'];  $Ideatore=$_REQUEST['ideatore'];  $Hd=$_REQUEST['hd'];  $NumeroCampana=$_REQUEST['numerocampana'];  $Commenti=$_REQUEST['commenti'];  $Anno=$_REQUEST['anno'];  $Risoluzione=$_REQUEST['risoluzione'];  $Visto=$_REQUEST['visto'];  $VotoS=$_REQUEST['votos'];  $VotoF=$_REQUEST['votof'];        if ($Id == "" OR $Tabella == "")  {    $err1=1;    echo "I campi Id e Tabella devono essere riempiti!";  }    $db mysql_connect($db_host$db_user$db_password);    if ($db == FALSE)      die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");      mysql_select_db($db_name$db)      or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");              //query...    /*if($err1==1) {  echo $err1;      }  else  {        */  echo $Tabella;  echo $Id;    if($Tabella==hd)  $query = "UPDATE $Tabella SET Titolo='$Titolo', Genere='$Genere', Anno='$Anno', Risoluzione='$Risoluzione', Visto='$Visto', VotoS='$VotoS', VotoF='$VotoF' WHERE Id='$Id'";  else  $query = "UPDATE $Tabella SET Titolo='$Titolo', Nazione='$Nazione', Anno='$Anno', Genere='$Genere', Stagione='$Stagione', Puntate='$Puntate', DurataMinuti='$DurataMinuti', Ideatore='$Ideatore', HD='$HD', NumeroCampana='$NumeroCampana', Commenti='$Commenti' WHERE Id='$Id'";      if (mysql_query($query, $db))      echo "Database aggiornato!";    else      echo "Errore durante l'inserimento";     //}    mysql_close($db);    foot();  ?>
    fatemi sapere che ne pensate. Premetto che ho poche conoscenze di php, sto seguendo e modificando una guida di questo magnifico sito. il sito in questione è di pura fantasia, serve per fare un po di pratica sul php e i database sql

  2. #2
    puoi costruire la query in modo dinamico

    $query="UPDATE $Tabella SET";

    if($titolo!="") $query.=" titolo=$titolo";
    if($genere!="") $query.=" , genere=$genere";
    if($anno!="") $query.=" , anno=$anno";

    ficca dentro un controllo per differenziare la prima entrata con le altre, alle altre aggiungi la virgola (come genere e anno) mentro alla prima no.

    http://www.trustweb.it - Web Development - Design 2D/3D - SEO & SEM

    Twitter http://twitter.com/#!/TrustWeb
    LinkedIn http://it.linkedin.com/in/trustweb

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    Mamma Mia che cosa ho combinato!

    Ho distrutto con una query tutto il contenuto di una tabella! Praticamente ho provato a modificare il nome e il genere del record con id=53 della tabella HD. Il risultato è stata un'unica tabella dove nome e genere sono uguali per tutti i records, il resto invece è rimasto come prima

    Ecco il codice php che ha fatto la strage di records

    Codice PHP:
    <?  include("top_foot.inc.php");  include("config.inc.php");  top();          $Id=$_REQUEST['id'];  $Tabella=$_REQUEST['tabella'];  $Titolo=$_REQUEST['titolo'];  $Nazione=$_REQUEST['nazione'];  $Anno=$_REQUEST['anno'];  $Genere=$_REQUEST['genere'];  $Stagione=$_REQUEST['stagione'];  $Puntate=$_REQUEST['puntate'];  $DurataMinuti=$_REQUEST['durataminuti'];  $Ideatore=$_REQUEST['ideatore'];  $Hd=$_REQUEST['hd'];  $NumeroCampana=$_REQUEST['numerocampana'];  $Commenti=$_REQUEST['commenti'];  $Anno=$_REQUEST['anno'];  $Risoluzione=$_REQUEST['risoluzione'];  $Visto=$_REQUEST['visto'];  $VotoS=$_REQUEST['votos'];  $VotoF=$_REQUEST['votof'];        if ($Id == "" OR $Tabella == "")  {    $err1=1;    echo "I campi Id e Tabella devono essere riempiti!";  }    $db mysql_connect($db_host$db_user$db_password);    if ($db == FALSE)      die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");      mysql_select_db($db_name$db)      or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");              //query...    /*if($err1==1) {  echo $err1;      }  else  {        */  echo $Tabella;  echo $Id;    if($Tabella==hd)  //$query = "UPDATE $Tabella SET Titolo='$Titolo', Genere='$Genere', Anno='$Anno', Risoluzione='$Risoluzione', Visto='$Visto', VotoS='$VotoS', VotoF='$VotoF' WHERE Id='$Id'";  {      if($Titolo!="") $query.=" Titolo='$Titolo'";  if($Genere!="") $query.=" , Genere='$Genere'";  if($Anno!="") $query.=" , Anno='$Anno'";  if($Risoluzione!="") $query.=" , Risoluzione='$Risoluzione'";  if($Visto!="") $query.=" , Visto='$Visto'";  if($VotoS!="") $query.=" , VotoS='$VotoS'";  if($VotoF!="") $query.=" , VotoF='$VotoF'";    $query="UPDATE $Tabella SET ". $query;    echo $query;    }    else  $query = "UPDATE $Tabella SET Titolo='$Titolo', Nazione='$Nazione', Anno='$Anno', Genere='$Genere', Stagione='$Stagione', Puntate='$Puntate', DurataMinuti='$DurataMinuti', Ideatore='$Ideatore', HD='$HD', NumeroCampana='$NumeroCampana', Commenti='$Commenti' WHERE Id='$Id'";      if (mysql_query($query, $db))      echo "Database aggiornato!";    else      echo "Errore durante l'inserimento";     //}    mysql_close($db);    foot();  ?>

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    Credo di aver risolto, mancava un pezzo di query.

    Ecco il codice esatto:

    $querywhere=" WHERE Id='$Id'";
    $query="UPDATE $Tabella SET ". $query . $querywhere;

    E' rimasto il problema della virgola, cioè, se voglio aggiornare il campo anno del record con ID=55 della tabella HD ottengo il un errore per cheè dopo di set cè una virgola...:

    UPDATE hd SET , Anno='1987' WHERE Id='55'

    devo fare qualche controllo, ma non ho idea. Help please

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    potrei obbligare ad inserire anche il primo campo, cioè il titolo, ma ci deve essere una soluzione piu elegante...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    Risolto anche questo problema anche se in modo molto rozzo. Ho inserito alla fine della query un altro pezzetto chiamato fine query che esegue un'operazione inutlie (va a sovrascrivere l'id ), ma che mi permette di risolvere il problema

    $finequery="Id='$Id'";

    if($Titolo!="") $query.=" Titolo='$Titolo'";
    if($Genere!="") $query.="Genere='$Genere' , ";
    if($Anno!="") $query.="Anno='$Anno' , ";
    if($Risoluzione!="") $query.="Risoluzione='$Risoluzione' , ";
    if($Visto!="") $query.="Visto='$Visto' , ";
    if($VotoS!="") $query.="VotoS='$VotoS' , ";
    if($VotoF!="") $query.="VotoF='$VotoF' , ";

    $querywhere=" WHERE Id='$Id'";
    $query="UPDATE $Tabella SET ". $query . $finequery . $querywhere;

  7. #7
    si ovvio che ci va un WHERE

    ti consiglio di stampare la query tutte le volte che fai delle prove quando la costruisci al volo

    scusa non sono stato precisissimo, saluti dall'India
    http://www.trustweb.it - Web Development - Design 2D/3D - SEO & SEM

    Twitter http://twitter.com/#!/TrustWeb
    LinkedIn http://it.linkedin.com/in/trustweb

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    eh si, sono ancora all'inizio, e di php non ne ho idea

    Grazie per avermi dato l'input per risolvere il problema.

    Che ne pensi del fatto che vado a sovrascrivere sempre l'id?. C'è un'altra soluzione?

    Ma soprattutto, che ci fai in India?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.