Newsgroup: it.comp.www.php
Titolo: db update

come è già emerso in altri post, sono estremamente poco pratico di
php... quindi, per favore, non linciatemi quando vi chiederò:
per iniziare ad impratichirmi con il db mysql e imparare qualche
fondamentale del php, ho creato uno script per la gestione delle news:
dovrebbe consentire di aggiungere, visualizzare, cancellare e
modificare gli articoli inseriti.
sono riuscito a fare tutte le sezioni.., tranne quella di modifica!
quando cerco di cambiare il contenuto di un articolo mi viene mostrato
il form, ccambio tutti i campi e clicco su aggiorna ma... viene
riscontrato un errore: non avrei definito correttamente la variabile
$newsid
la pagina viene chiamata da un'altra pag attravarso il link
                             edit_news.php?newsid=2
nel caso l'id dell'articolo sia 2
questo è il codice della pag edit_news.php
<?php
include("config/config.php");
$newsid = $_GET["newsid"];
if (isset($_POST['action']) && $_POST['action'] == 'submitted') {
	$title = mysql_real_escape_string($_POST['title']);
    $summary = mysql_real_escape_string($_POST['summary']);
    $body = mysql_real_escape_string($_POST['body']);
	   if(!$title OR !$summary) {
			echo "Some fields are empty! Please fill them.";
			exit();
	   }
	$result = mysql_query("UPDATE news SET title='$title',
summary='$summary', body='$body' WHERE newsid='$newsid' ",$connect);
	echo "News updated successfully! You'll be redirected in 4 seconds";
    echo "<meta http-equiv=Refresh content=4;url=admin.php>";
} else {
	$result = mysql_query("SELECT * FROM news_sidebar WHERE
newsid='$newsid' ",$connect);
	while($myrow = mysql_fetch_assoc($result)) {
		$title = $myrow["title"];
		$summary = $myrow["summary"];
		$body= $myrow["body"];
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
	<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
		<tr>
			<td align="right">Title:&nbsp;</td>
			<td><input type="text" name="title" value="<? echo $myrow["title"];
?>" /></td>
		</tr>
		<tr>
			<td valign="top" align="right">Summary:&nbsp;</td>
			<td><textarea name="summary" rows="5" cols="35"><? echo
$myrow["summary"]; ?>"</textarea></td>
		</tr>
		<tr>
			<td valign="top" align="right">Body:&nbsp;</td>
			<td><textarea name="body" rows="10" cols="35">"<? echo $body;
?>"</textarea></td>
		</tr>
		<tr>
			<td>&nbsp;</td>
			<td><input type="hidden" name="action" value="submitted" /><input
type="submit" name="submit" value="Update News" /></td>
		</tr>
	</form>
</table>
<?
	}
}
?>
qualcuno può spigarmi dove sbaglio e perchè?
grazie gg

summary='$summary', body='$body' WHERE newsid='$newsid' ",$connect);
Aggiungi:
if(!$result) {
echo "Errore nella query UPDATE ->".mysql_error();
exit();
}
Mysql ti dirà se ci sono errori. Credo che sia dovuto alle virgolette
che hai inserito per $newsid. Essendo un intero non sono necessarie e
inoltre, setta (per la sicurezza) la variabile $newsid all'inizio:
$newsid = intval($_GET($newsid ));
Così sei sicuro che passeranno solo interi dal GET.
Dantom

 
Sbaglio oppure stai mescolando get e post?
	Francesco

 $newsid = intval($_GET($newsid ));
Notice: Array to string conversion
Fatal error: Call to undefined function: array()
entrambi segnalano come riga quella che contiene $newsid =
intval($_GET($newsid ));
devo cambiare le parentesi tonde con delle quadre? o il problema è un
altro?
L'errore che mi segnalava all'inizio (prima di chiedere aiuto qui), che
mi sono dimenticato di inserire è
Notice: Undefined index: newsid
nella riga contenente   $newsid = $_GET["$newsid"];
a presto e grazie


in che senso?
ciao

GG ha scritto:

Nella querystring hai $title e $body che derivano dall'array _POST 
mentre $newsid deriva da _GET. Come fai ad avere nel solito momento POST 
e GET?
	Francesco

> }
Oltre all'ottimo consiglio di Dantom, aggiungi anche l'echo dell'sql (da 
togliere quando hai finito il debug) così vedi l'istruzione sql completa 
e capisci meglio l'eventuale errore
$sql ="UPDATE.....";
$res = mysql_query($sql) or die("Errore query: " . $sql . "\n" . 
mysql_error());
	Francesco

 POST e GET?
Č possibile utilizzando un form con il metodo POST e appendendo altri
parametri all'indirizzo inserito nell'attributo action. Per esempio:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>?id=3" method="post">
<input type="hidden" name="campo_nascosto" value="123" />
<input type="submit" name="submit_button" value="Avanti..." />
</form>
<pre>
<?php
if (!empty($_GET)) { echo '$_GET '; print_r($_GET); }
if (!empty($_POST)) { echo '$_POST '; print_r($_POST); }   
?>
</pre>
Naturalmente solo GG puň dirci se ha fatto proprio cosě, oppure no.
Ciao. 
-- 
Federico

 parametri all'indirizzo inserito nell'attributo action. Per esempio:
Piccola (grande) svista: mi sono perso, nel post originale, tale 
dettaglio (l'echo di action con $_SERVER['PHP_SELF']), scusate!
Resta tuttavia da valutare i vantaggi/svantaggi di tale mix
	Francesco

 if (!empty($_POST)) { echo '$_POST '; print_r($_POST); }  ?
grazie e scusate l'ignoranza-....

 	Francesco
sai dirmi quali sono?
ciao gg

 	Francesco
aggiunta!

> if (!empty($_POST)) { echo '$_POST '; print_r($_POST); }  ?
A visualizzare i superglobal array $_GET e $_POST solo quando
contengono qualcosa.
Ciao.
-- 
Federico

Il 01/11/06 14:23, Francesco F ha scritto:

A me non piace molto utilizzarli contemporaneamente, ma non ci vedo
particolari svantaggi. È anche vero che non c'ho mai ragionato su
granché...
Ciao.
-- 
Federico

 contengono qualcosa.
capito
grazie ciao


darò un'occhiata a 
php.net
 per approfondire...
a presto!