scrittura dati nel database

  • Creatore Discussione Creatore Discussione Fabio90
  • Data di inizio Data di inizio

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
ciao ragazzi,
sto realizzando uno script che carica i dati da un database. Riguardo il caricamento non ho problemi e visualizzo tutto correttamente nella textarea.
Il problema invece è quando voglio modificare il testo estratto dal database e reinserirlo nuovamente aggiornato. Avete qualche suggerimento?
Posto il codice

PHP:
<link href="css/stile.css" rel="stylesheet" type="text/css" />

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

<?php 
}
	} else {
		
		//inserisci nel database
	}
?>
 
ciao
volevo farti una domanda:
quanti testi hai? uno o più, perche se uno solo potrebbe andar bene (come inizio) quello che stai facendo, me se sono più di uno te li ritrovi tutti nella stessa teextarea, quindi come fa php a distinguere quello che vuoi correggere
 
ciao
se non ho capito male, prova così (ho considerato più testi, ma se è anche uno dovrebbe andare bene)

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_arrai=$_POST['testo'];
	foreach($test_arrai as $chiave => $testo){
		$query=mysql_query("UDTATE lettera_del_presidente SET testo='$testo' WHERE id=$chiave");
	}
} 
?>
guarda che l'ho buttato giù così quindi sono da rivedere i vari nomi dei campi e... può darsi che non funzi comunque
 
Il compilatore mi da qualche errore borgo. Cmq si è solo un testo da inserire
Spiegandomi meglio l'obiettivo sarebbe questo
PHP:
<?php
 include 'config.php';
 include 'connect.php';	
 
 /*se non fai il submit caricami il testo dal campo 'testo' dalla colonna 'lettera_del_presidente' dal database nella textarea*/
 		if(!isset($_POST['submit'])) {
 			echo "<form action='' method='post'>
        		  <textarea>";
		 	$result = mysql_query("SELECT testo FROM lettera_del_presidente")or die(mysql_error());
		 		while ($row = mysql_fetch_array($result)) {
  	 	 			echo $row['testo']; 		 
  					echo "</textarea>
					<br/>
			<input type='submit' name='submit' value='aggiorna' />
			</form>";								

}   
	} else { /*al submit inserisci il testo aggiornato nel campo 'testo' ecc... */
		
		$sql = ""; 
	}
?>
 
Ultima modifica:
ciao
dimmi che errori faceva (uno l'ho visto UDTATE deve essere UPDATE)
comunqe sta attento che hai messo il tag textarea mezzo dentro e mezzo fuori dal while, poi come ho detto se i testi sono di più di uno devi cambiare nome ad ogni texarea, altrimenti come fa php a capire a quale si riferisce
 
capito.. cmq il compilatore si arrabbia a livello dei due echo. Deve essere una questione di apici
 
syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING on line 6 che sarebbe quella del primo echo
 
mi da errore solo alle echo in questo codice

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_arrai=$_POST['testo'];
    foreach($test_arrai as $chiave => $testo){
        $query=mysql_query("UDTATE lettera_del_presidente SET testo='$testo' WHERE id=$chiave");
    }
} 
?>
 
mancano anche gli apici

PHP:
echo "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"post\">";
 
grandeee prima echo risolta! Ora da problemi solo la seconda
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("UDTATE lettera_del_presidente SET testo='$testo' WHERE id=$chiave");
    }
} 
?>
 
Ti sei dimenticato il punto
PHP:
echo "<textarea name=\"testo[".$row['id']."]\" id=\"testo[".$row['id']."]\">".$row['testo']."</textarea><br>";
:jolly:
 
ottimo grazie mille!! ora però ce un altro problema..
Undefined index: id on line 9
 
potresti risolvere cosi:

PHP:
echo "<textarea name=\"testo[" . isset($row['id']) ? $row['id'] : "" . "]\" id=\"testo[" . isset($row['id']) ? $row['id'] : "" . "]\">" . isset($row['testo']) ? $row['testo'] : "" . "</textarea><br>";

un po macchinoso
 
Oppure potresti mettere una chiocciola (detto: operatore di silenzio) prima in modo da non dare errori anche se non sia dichiarata
PHP:
echo "<textarea name=\"testo[".@$row['id']."]\" id=\"testo[".@$row['id']."]\">".@$row['testo']."</textarea><br>";
 
Ultima modifica:
non si risolve e scompare la textarea
Ci volevano anche le parentesi:

PHP:
echo "<textarea name=\"testo[" . (isset($row['id']) ? $row['id'] : "") . "]\" id=\"testo[" . (isset($row['id']) ? $row['id'] : "") . "]\">" . (isset($row['testo']) ? $row['testo'] : "") . "</textarea><br>";

ancora più macchinoso
 
ottimo non ci sono più errori però al submit non mi aggiorna nel database il testo modificato...
ricordo che il contenuto dovrebbe andare nel campo testo della tabella lettera_del_presidente. Sono forse sbagliati gli INSERT?
 

Discussioni simili