Problema per una query di aggiornamento record php

EffeElle

Utente Attivo
25 Set 2012
48
0
0
Salve ragazzi mi sono appena iscritto a questo forum per imparare qualcosa e fare qualche amicizia. Mi trovo difronte ad un piccolo blocco per una modifica di un record php mysql posto di seguito il codice...

PHP:
// richiamo il file di configurazione
     require 'connessione.php'; 
 // richiamo lo script responsabile della connessione a MySQL
     require 'config.inc';

      mysql_select_db("miodatabase");
      $id      =  $_POST["id"];
        

// preparo la query
 $query = "UPDATE miatabella SET titolo='$_POST[titolo]', testo='$_POST[testo]', numero='$_POST[numero]' WHERE id='$_POST[id]'";
      

// invio la query     
        $result = mysql_query($query);

  // controllo
     if (!mysql_query($query)) {
		  // se modifica NO
     echo "<h2>Errore, modifica news non riuscita</h2><BR>";
     echo "<BR><p><A HREF=\"modifica1.php\">Clicca qui per riprovare</p></A>";
        exit;
       } else {  

// Se modifica OK

     echo "<h2>News aggiornata</h2><BR>";
         echo "<p><A HREF=\"modifica0.php\">Clicca qui per modificare un'altra news</p></A>";
        }
   mysql_close();

In sostanza la query mi da errore e non riesco a formulare una query adottando la modifica diretta questa
$query ="UPDATE `miodatabase`.`miatabella` SET `titolo` = 'abcabcabc', `testo` = 'xxxxx', `data` = 'xxx' WHERE `articoli`.`id` =47";
riesco a modificare il record selezionato ma io voglio che il record viene modificato tramide il form che ho precedentemente costruito.. Su phpmyadmin per l'update del record mi da questa porzione di codice
UPDATE `miatabella` SET `id`=[value-1],`titolo`=[value-2],`testo`=[value-3],`data`=[value-4] WHERE 1
Spero che qualcuno riesca a risolvere il mio problema vi ringrazio anticipatamente....
 
Ultima modifica:
Se stampi il contenuto di $query cosa leggi?

effettua un controllo con:

PHP:
$result = mysql_query($query) or die (mysql_error());
 
Ciao eliox grazie per la risposta se la porzione di codice da te scritta la inserisco dopo la query mi aggiorna il record ma mi cancella il suo contenuto ovvero se io utilizzo la seguente query:

PHP:
$query = "UPDATE miatabella SET titolo='$_POST[titolo]', testo='$_POST[testo]', data='$_POST[data]' WHERE id='$_POST[id]'";
La query risulta ok ma non mi aggiorna il record ma me lo cancella in tutti i campi.
Con questa invece riesco a modificare il record secondo l'id stabilito
PHP:
$query ="UPDATE `miodatabase`.`miatabella` SET `titolo` = 'accademia', `testo` = 'xxxxx', `data` = 'xxx' WHERE `articoli`.`id` =47";
 
Ultima modifica:
probabilmente non hai valori nei POST

metti var_dump($_POST) a inizio pagina

e semmai posta anche il form che manda i dati a questa pagina
 
Criric allora i miei file sono composti cosi:
modifica.php
PHP:
<?php 
// richiamo il file di configurazione     
require 'connessione.php';  
// richiamo lo script responsabile della connessione a MySQL     
require 'config.inc';  
mysql_select_db("miodatabase"); 
$sql="SELECT * FROM articoli ORDER BY id DESC";  
$risultati_mysql=mysql_query($sql); 
$num_righe=mysql_num_rows($risultati_mysql);  
if  ( $num_righe == 0 ) { 
echo "Spiacente, non ci sono informazioni";
 } else { 
# abbiamo dei risultati 
# crea la tabella 
echo "<table width=\"50%\" border=\"0\"> 
  <br><br>
  <tbody>";
  echo "<tr><th>&nbsp;</th><th>Titolo</th></tr>";
  while ($riga=mysql_fetch_array($risultati_mysql))
{ 
$id=$riga["id"]; 
$titolo=$riga["titolo"]; 
echo "<TR><TD><A HREF=\"modifica-step2.php?riga_id=$id\" 
<TD>$id</TD> 
<TD>$titolo</TD> 
</TR>";
}  
echo "</tbody>"; 
echo "</table>";  
} # fine dell'else 
mysql_close(); 
?>

modifica-step2.php
PHP:
<?php 
// richiamo il file di configurazione
     require 'connessione.php';  
// richiamo lo script responsabile della connessione a MySQL
     require 'config.inc';
  mysql_select_db("miodatabase");
  $sql="SELECT * FROM articoli WHERE id=$_GET[riga_id]";  $risultati_mysql=mysql_query($sql); 
$num_righe=mysql_num_rows($risultati_mysql);
  if  ( $num_righe == 0 ) {
 echo "Spiacente, non ci sono informazioni";
 } else { 
# abbiamo dei risultati  
$risultati_mysql=mysql_query($sql); 
while ($riga=mysql_fetch_array($risultati_mysql)) 
{ 
 $id=$riga["id"];
 $titolo=$riga["titolo"];
  $testo=$riga["testo"];
 $data=$riga["data"];
} 
echo "<form METHOD=\"POST\" ACTION=\"modifica-step3.php\">";
  
  echo "Titolo<br> 
 <input name=\"Titolo\" type=\"text\"  size=\"50\" value=\"$titolo\"><br>";
  echo "Testo<br> 
 <input name=\"Testo\" type=\"text\" size=\"100\" value=\"$testo\"><br>";
 
 
  echo "Data:<br>
  <input name=\"Data\" type=\"text\"  size=\"10\" value=\"$data\"><br>";

   echo "<input type=\"hidden\" name=\"id\" value=\"$id\">";

     echo "<br>";
	 echo "<INPUT TYPE=SUBMIT VALUE=\"Modifica il record\"><br><br>";
	 echo "</form>";
} 
# fine dell'else 
mysql_close();  
?>

modifica-step3.php

PHP:
<?php 
// richiamo il file di configurazione
     require 'connessione.php'; 
 // richiamo lo script responsabile della connessione a MySQL
     require 'config.inc';

      mysql_select_db("miodatabase");
      $id      =  $_POST["id"];
        

// preparo la query
 $query ="UPDATE `miodatabase`.`miatabella` SET `titolo` = 'accademia informazione', `testo` = 'xxxxx', `data` = 'xxx' WHERE `articoli`.`id` =48";
      

// invio la query     
        $result = mysql_query($query);

  // controllo
     if (!mysql_query($query)) {
		  // se modifica NO
     echo "<h2>Errore, modifica news non riuscita</h2><BR>";
     echo "<BR><p><A HREF=\"modifica-step2.php\">Clicca qui per riprovare</p></A>";
        exit;
       } else {  

// Se modifica OK

     echo "<h2>News aggiornata</h2><BR>";
         echo "<p><A HREF=\"modifica.php\">Clicca qui per modificare un'altra news</p></A>";
        }
   mysql_close();
 ?>
 
metti var_dump($_POST) in modifica-step3.php all'inizio

per vedere se arrivano i dati
 
qui non serve che ripeti la query e non serve il ciclo while visto che il record dovrebbe essere uno solo da quanto ho capito
PHP:
$sql = "SELECT * FROM articoli WHERE id=$_GET[riga_id]";
$risultati_mysql = mysql_query($sql);
$num_righe = mysql_num_rows($risultati_mysql);
if ($num_righe == 0) {
    echo "Spiacente, non ci sono informazioni";
} else {
# abbiamo dei risultati  
    $risultati_mysql = mysql_query($sql);
    while ($riga = mysql_fetch_array($risultati_mysql)) {
        $id = $riga["id"];
        $titolo = $riga["titolo"];
        $testo = $riga["testo"];
        $data = $riga["data"];
    }
puoi semplicemente fare cosi
PHP:
$sql = "SELECT * FROM articoli WHERE id=$_GET[riga_id]";
$risultati_mysql = mysql_query($sql);
$num_righe = mysql_num_rows($risultati_mysql);
if ($num_righe == 0) {
    echo "Spiacente, non ci sono informazioni";
} else {
# abbiamo dei risultati  
    $riga = mysql_fetch_array($risultati_mysql);
    $id = $riga["id"];
    $titolo = $riga["titolo"];
    $testo = $riga["testo"];
    $data = $riga["data"];

se nell 'altra pagina il var_dump non ti restituisce i dati prova a vedere se qui ci sono
manda in echo le variabili o controlla il sorgente html dlla pagina
 
Allora togliendo il
PHP:
while ($riga = mysql_fetch_array($risultati_mysql)) {
non mi stampa il contenuto del record e mi da errore con questo codice mi legge il suo contenuto e il suo id
mentre mettendo var_dump($_POST) su modifica-step3.php mi stampa questo
array
'Titolo' => string 'xxx' (length=0)
'Testo' => string 'xxx' (length=0)
'Data' => string 'xxx' (length=3)
'id' => string '48' (length=2)
 
non mi stampa il contenuto del record e mi da errore
forse non hai tolto anche la chiusura del while }
cmq

xxx sono i valori che hai nel database?
 
il problema sta nella query UPDATE ecc se utilizzo questa
PHP:
$query ="UPDATE `miodatabase`.`miatabella` SET `titolo` = 'accademia informazione', `testo` = 'xxxxx', `data` = 'xxx' WHERE `articoli`.`id` =48";
la modifica avviene perfettamente ma sono io a inserire il testo dalla quesry stessa e non dal form in sostanza dovrei avere una query che mi legge il contenuto che inserisco nel form mi legge le variabili $titolo $testo $data e $id e mi apporta le modifiche in phpmyadmin per l'update del record mi da il seguente codice
PHP:
$query ="UPDATE `miatabella` SET `id`=[value-1],`titolo`=[value-2],`testo`=[value-3],`data`=[value-4] WHERE 1";
non riesco a formularla
 
se dal form non invii i dati giusti e per esempio $_POST['titolo'] è vuoto anziche avere il valore del titolo
l UPDATE non ti funzionera mai come vuoi

quello che volevo farti controllare è proprio se il form invia i dati correttamente

puoi anche stampare la query per verificarlo

in questo modo
PHP:
// preparo la query
 $query = "UPDATE miatabella SET titolo='$_POST[titolo]', testo='$_POST[testo]', numero='$_POST[numero]' WHERE id='$_POST[id]'";
// stampi la query
echo $query;
 
Utilizzando la query da te scritta e stampandola mi toglie tutto in sostanza mi cancella il contenuto di titolo testo e data mi resta solo l'id non so più cosa fare e da giorni che provo in tutti i modi i miei 3 file sono quelli che ho postato modifica.php modifica-step2.php e modifica-step3.php
 
puoi postare cosa ti ha stampato?

al massimo bolcca l'esecuzione per non star sempre li a ripristinare la tabella con die();
PHP:
 $query = "UPDATE miatabella SET titolo='$_POST[titolo]', testo='$_POST[testo]', numero='$_POST[numero]' WHERE id='$_POST[id]'";
// stampi la query
echo $query;  
die();
 
Mi da errore nella linea 69 che è quella della query e mi stampa
UPDATE articoli SET titolo='', testo='', data='' WHERE id='48'
 
come vedi i campi sono vuoti
questo vuol dire che probabilmente il problema sta in modifica-step2.php che non gli passa i dati

fai l echo della query e di tutte le varibili e posta

PHP:
$sql = "SELECT * FROM articoli WHERE id=$_GET[riga_id]";
// stampa la query
echo $sql;
$risultati_mysql = mysql_query($sql);
$num_righe = mysql_num_rows($risultati_mysql);
if ($num_righe == 0) {
    echo "Spiacente, non ci sono informazioni";
} else {
# abbiamo dei risultati  
    $risultati_mysql = mysql_query($sql);
    while ($riga = mysql_fetch_array($risultati_mysql)) {
        $id = $riga["id"];
        $titolo = $riga["titolo"];
        $testo = $riga["testo"];
        $data = $riga["data"];
        // stampale tutte 
        echo $id;
        echo $titolo;
        echo $testo;
        echo $data;
    }
 
questo codice lo devo inserire in modifica-step1.php giusto? dove ho la selezione dei dati
 
Il select non mi da risultati mamma mia sono in crisi con questo codice modifica.php modifica-step1.php funzionano corettamente il problema sta in step2 e nella query mi viene da piangere
 
Il select non mi da risultati
quale select?
hai stampato la query?

Stai facendo confusione non ha postato step1 ma step2 e step3

Cmq ricontrolla bene il passaggio dei dati da una pagina all'altra partendo dall'inizio Sicuramente te ne perdi uno
 
Scusami ma mi sono perso non so più cosa fare ti posto di nuovo tutti e tre i file
modifica.php
PHP:
 <?php 
// richiamo il file di configurazione     
require 'connessione.php';  
// richiamo lo script responsabile della connessione a MySQL     
require 'config.inc';  
mysql_select_db("miodatabase"); 
$sql="SELECT * FROM articoli ORDER BY id DESC";  
$risultati_mysql=mysql_query($sql); 
$num_righe=mysql_num_rows($risultati_mysql);  
if  ( $num_righe == 0 ) { 
echo "Spiacente, non ci sono informazioni";
 } else { 
# abbiamo dei risultati 
# crea la tabella 
echo "=\"50%\" border=\"0\"> 
  <br><br>
  <tbody>";
  echo "<tr><th>&nbsp;</th><th>Titolo</th></tr>";
  while ($riga=mysql_fetch_array($risultati_mysql))
{ 
$id=$riga["id"]; 
$titolo=$riga["titolo"]; 
echo "=\"modifica-step2.php?riga_id=$id\" 
<TD>$id</TD> 
<TD>$titolo</TD> 
</TR>";
}  
echo "</tbody>"; 
echo "</table>";  
} # fine dell'else 
mysql_close(); 
?>

modifica-step2.php
PHP:
<?php 
// richiamo il file di configurazione
     require 'connessione.php';  
// richiamo lo script responsabile della connessione a MySQL
     require 'config.inc';
  mysql_select_db("miodatabase");
  $sql="SELECT * FROM articoli WHERE id=$_GET[riga_id]";  $risultati_mysql=mysql_query($sql); 
$num_righe=mysql_num_rows($risultati_mysql);
  if  ( $num_righe == 0 ) {
 echo "Spiacente, non ci sono informazioni";
 } else { 
# abbiamo dei risultati  
$risultati_mysql=mysql_query($sql); 
while ($riga=mysql_fetch_array($risultati_mysql)) 
{ 
 $id=$riga["id"];
 $titolo=$riga["titolo"];
  $testo=$riga["testo"];
 $data=$riga["data"];
} 
echo "=\"POST\" ACTION=\"modifica-step3.php\">";
  
  echo "Titolo<br> 
 =\"Titolo\" type=\"text\"  size=\"50\" value=\"$titolo\"><br>";
  echo "Testo<br> 
 =\"Testo\" type=\"text\" size=\"100\" value=\"$testo\"><br>";
 
 
  echo "Data:<br>
  =\"Data\" type=\"text\"  size=\"10\" value=\"$data\"><br>";

   echo "=\"hidden\" name=\"id\" value=\"$id\">";

     echo "<br>";
     echo "=SUBMIT VALUE=\"Modifica il record\">

";
     echo "</form>";
} 
# fine dell'else 
mysql_close();  
?>

modifica-step3.php
PHP:
<?php 
// richiamo il file di configurazione
     require 'connessione.php'; 
 // richiamo lo script responsabile della connessione a MySQL
     require 'config.inc';

      mysql_select_db("miodatabase");
      $id      =  $_POST["id"];
        

// preparo la query
 $query ="UPDATE `miodatabase`.`miatabella` SET `titolo` = 'accademia informazione', `testo` = 'xxxxx', `data` = 'xxx' WHERE `articoli`.`id` =48";
      

// invio la query     
        $result = mysql_query($query);

  // controllo
     if (!mysql_query($query)) {
          // se modifica NO
     echo "<h2>Errore, modifica news non riuscita</h2><BR>";
     echo "

=\"modifica-step2.php\">Clicca qui per riprovare
";
        exit;
       } else {  

// Se modifica OK

     echo "<h2>News aggiornata</h2><BR>";
         echo "

=\"modifica.php\">Clicca qui per modificare un'altra news
";
        }
   mysql_close();
 ?>
 

Discussioni simili