scrittura dati nel database

  • Creatore Discussione Creatore Discussione Fabio90
  • Data di inizio Data di inizio
Come ti ha gia risposto borgo è UPDATE no UDTATE, fatto questo aggiungi un or die(mysql_error()) finale e fammi sapere
 
lo avevo già corretto update cmq
PHP:
<?php 
 include 'config.php'; 
 include 'connect.php';     
if(!isset($_POST['aggiorna'])) { 
   echo "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"post\">";  
    $result = mysql_query("SELECT * FROM lettera_del_presidente")or die(mysql_error()); 
    while ($row = mysql_fetch_array($result)) { 
       echo "<textarea name=\"testo[".@$row['id']."]\" id=\"testo[".@$row['id']."]\">".$row['testo']."</textarea><br>";  
    }
    echo "<br/><input type=\"submit\" name=\"aggiorna\" value=\"aggiorna\" />";
    echo "</form> ";

}else{
    $test_array=$_POST['testo'];
    foreach($test_array as $chiave => $testo){
        $query=mysql_query("UPDTATE lettera_del_presidente SET testo='$testo' WHERE id=$chiave") or die(mysql_error());
    }
} 
?>

produce questo You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDTATE lettera_del_presidente SET testo='aretra sed risus. Duis elementum turpi' at line 1
 
hahahah si scusate ragazzi!!
cmq ora nessun errore ma non mi aggiorna lo stesso il DB

PHP:
<?php 
 include 'config.php'; 
 include 'connect.php';     
if(!isset($_POST['aggiorna'])) { 
   echo "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"post\">";  
    $result = mysql_query("SELECT * FROM lettera_del_presidente")or die(mysql_error()); 
    while ($row = mysql_fetch_array($result)) { 
       echo "<textarea name=\"testo[".@$row['id']."]\" id=\"testo[".@$row['id']."]\">".$row['testo']."</textarea><br>";  
    }
    echo "<br/><input type=\"submit\" name=\"aggiorna\" value=\"aggiorna\" />";
    echo "</form> ";

}else{
    $test_array=$_POST['testo'];
    foreach($test_array as $chiave => $testo){
        $query=mysql_query("UPDATE lettera_del_presidente SET testo='$testo' WHERE id=$chiave") or die(mysql_error());
    }
} 
?>
 
dovrebbe funzionare,

sicuro che il campo nel db si chiami 'id'?

metti

PHP:
 var_dump($_POST['testo']);

subito dopo l'else e vedi cosa stampa
 
ciao
l'ho provato e funzia.
devi verificare che i nomi dei campi della tabella corrispondano.
ho fatto due aggiunte per evitare la @ (meno si usa meglio è)
PHP:
<?php 
include 'config.php'; 
include 'connect.php';
$conn = @mysql_connect($host,$username,$password) or die (mysql_error());
$sel = @mysql_select_db($db) or die (mysql_error());
  
if(!isset($_POST['aggiorna'])) { 
   echo "<form action=\"" . htmlspecialchars($_SERVER['PHP_SELF']). "\" method=\"post\">";  
    $result = mysql_query("SELECT * FROM lettera_del_presidente")or die(mysql_error()); 
    if(mysql_num_rows($result)>0){
		while ($row = mysql_fetch_array($result)) { 
       		if($row['id'] !=""){
				echo "<textarea name=\"testo[".$row['id']."]\" id=\"testo[".$row['id']."]\">".$row['testo']."</textarea><br>";  
    		}
		}
	}
    echo "<br/><input type=\"submit\" name=\"aggiorna\" value=\"aggiorna\" />";
    echo "</form>";
}else{
    $test_array=$_POST['testo'];
    if(is_array($test_array)){
		foreach($test_array as $chiave => $testo){
        	$query=mysql_query("UPDATE lettera_del_presidente SET testo='$testo' WHERE id=$chiave") or die(mysql_error());
    	}
		echo "aggiornamento eseguito";
	}else{
		echo "non hai inviato testi";
	}
	echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
} 
?>
 
Ciao,
rileggendo la discussione ho notato questa affermazione di Fabio:

Cmq si è solo un testo da inserire

probabilmente il campo id nella tabella non esiste.

Tra l'altro il messaggio era chiaro: Undefined index: id on line 9

Se cosi come penso

1 soluzione:

aggiungi il campo id

2 soluzione

fai a meno dei cicli while e foreach
 
fantastico ragazzi mi funziona! grazie mille e scusate se vi ho fatti diventar matti! Il campo ID c'era solo che l'avevo scritto in maiuscolo!
 

Discussioni simili