[mysql] non funziona UPDATE tab SET etc.

  • Creatore Discussione Creatore Discussione elgabs
  • Data di inizio Data di inizio

elgabs

Nuovo Utente
11 Apr 2005
11
0
0
aiuto aiuto!

sto facendo un - credo - stupidissimo pannellino di amministrazione news, composto da due tabelle mysql (autori e news); iquando inserisco le notizie non dà nessun problema, si connette al database tranquillamente e le aggiunge immediatamente.

Quando poi voglio modificarne una carico la pagina (modifi.php) in cui si vedono tutti gli articoli inseriti e si sceglie quello da modificare, si va allora in una pagina che contiene una form (change.php) che è tale e quale a quella che contiene la form di inserimento di una nuova notizia; apporto le modifiche necessarie e mi compare il mio bravo avviso che l'articolo è stato modificato correttamente, a seguito della query:

$query="UPDATE news SET titolo='$_POST[titolo]', testo='$_POST[testo]', data='$_POST[data]', nome='$_POST[autore]' WHERE id='$_POST[id]'";



In realtà i campi della tabella news sui quali l'update dovrebbe operare non vengono minimamente intaccati...

quale potrebbe essere il problema? C'entra l'avere una vecchia versione di php (4.2.3.)? oppure sbaglio sintassi?

grazie a chiunque mi dia anche solo un indizio!!!
elisa
 
mannaggia...

niente da fare...

mi dà l'avviso che l'articolo è stato modificato correttamente ma nulla... è come se non andasse proprio a toccare il db..
è possibile che il problema sia nel resto del codice? (credo sia strano, lo sto riadattando da un manuale...)

___________________________________________________

<? include("top_foot.inc.php");
include("config.inc.php");
top();
if ($pass != $password):
echo "Password errata";

elseif (trim($_POST[titolo]) == "" OR trim($_POST[testo]) == ""):
echo "I campi Titolo e Testo devono essere riempiti";

else:
$_POST[titolo] = addslashes(stripslashes($_POST[titolo]));
$_POST[autore] = addslashes(stripslashes($_POST[autore]));
$_POST[mail] = addslashes(stripslashes($_POST[mail]));
$_POST[testo] = addslashes(stripslashes($_POST[testo]));

$_POST[titolo] = str_replace("<", "&lt;", $_POST[titolo]);
$_POST[titolo] = str_replace(">", "&gt;", $_POST[titolo]);
$_POST[autore] = str_replace("<", "&lt;", $_POST[autore]);
$_POST[autore] = str_replace(">", "&gt;", $_POST[autore]);
$_POST[testo] = str_replace("<", "&lt;", $_POST[testo]);
$_POST[testo] = str_replace(">", "&gt;", $_POST[testo]);
$_POST[testo] = nl2br($_POST[testo]);

$_POST[data] = mktime("0", "0", "0", $mese, $giorno, $anno);


$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");


$titolo=$_POST['titolo'];
$testo=$_POST['testo'];
$data=$_POST['data'];
$autore=$_POST['autore'];
$id=$_POST['id'];

$query="UPDATE news SET titolo='$titolo', testo='$testo',data='$data',nome='$autore' WHERE id='$id'";


if (mysql_query($query, $db))
echo "L'articolo è stato modificato correttamente";
else
echo "Erorre durante l'inserimento
$query";
endif;
foot();
?>


scusami se ti assillo , ma sono tre giorni che mi arrabbatto...
grazie di nuovo
elisa
 
occhei capo!

mmm interessante!

credo che farò queste modifiche anche agli altri script che ho scritto!!

grazie di nuovo
elisa
 
dunque...

niente da fare finora, ho apportato le modifiche che mi hai sugggerito,ma nulla!!!

temo di aver commesso qualche casino allora nella pagina che contiene la form...

scusami se te la posto, ma vedo che hai un occhio attentissimo (e non lo dico per lisciarti :dipser: ... ma perché sono un pò incasinata e ad ogni aiuto mi ci appiglio ... :lunatico: )

________________________________________________
//pagina con form per modifica notizia - change.php
<?
include ("config.inc.php");
include ("top_foot.inc.php");

//intestazione
top();
?>

<form method=post action=changeit.php>
Titolo:<br>
<input type=text size=40 name=titolo><br>
<br>
Data:<br>
<select name=giorno>
<?
for ($i=1; $i<=31; $i++)
echo "<option value=$i>$i";
?>
</select>
<select name=mese>
<option value=1>Gennaio
<option value=2>Febbraio
<option value=3>Marzo
<option value=4>Aprile
<option value=5>Maggio
<option value=6>Giugno
<option value=7>Luglio
<option value=8>Agosto
<option value=9>Settembre
<option value=10>Ottobre
<option value=11>Novembre
<option value=12>Dicembre
</select>
<select name=anno>
<option value=2005>2005
<option value=2006>2006
</select><br>
<br>
Autore:<br>
<input type=text size=40 name=autore><br>
<br>
E-mail:<br>
<input type=text size=40 name=mail><br>
<br>
Testo:<br>
<textarea cols=40 rows=30 name=testo></textarea><br>
<br>
Password:<br>
<input type=password size=40 name=pass><br>

<br> <input type=submit value=Invia> </form>
<?
// chiusura pagina
foot();
?>
____________________________________________________

a questo punto, visto che ti scoccio 30, ti scoccio 31!!

ti mando anche la pagina che mostra tutti gli articoli inseriti e porta alla pagina con la form
____________________________________________________
//pagina che estrae dal db tutti gli articoli e permette di scegliere quello da modificare

<?
include("top_foot.inc.php");
include("config.inc.php");
top();

$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 = "SELECT id, data, titolo FROM news ORDER BY data";

$result = mysql_query($query, $db);
while ($row = mysql_fetch_array($result))
{ echo "<a href=\"change.php?id=$row[id]\">" . date("j/n/y", $row[data]) . " - $row[titolo]</a><br>"; }

echo "<a href=search.php>Cerca negli articoli</a>";
foot();
?>
___________________________________________________

Detto ciò, ti chiedo veramente scusa per la sfrontatezza, e ti ringrazio per l'attenzione (credimi, in genere lancio urla disperate nei forum solo per rassegnazione... :byebye: )

elisa
 
ancora nulla però

ciao open-think!
ancora e sinceramente grazie per l'aiuto! ho fatto tutte le modifiche e ancora non riesco a "scrivere" sul database.

Sto cercando un pò in giro altri script per la gestione delle news e ho visto che intanto sono molto più complessi di ste quattro righe di codice che non riesco a far funzionare (evabbé... :ister: ), ma soprattutto ho notato una cosa.

In tutti i vari pannelli di amministrazione quando si clicca sulla sezione "modifica new" succede questo: compare la stessa form di quando si inserisce per la prima volta un articolo ma nei campi da modificare compare il testo da modificare. In pratica mi sembra che la form estragga dal database i dati attuali e li mostra all'utente nei campi della form per essere così modificati.

Credi che questa sia una discriminante del non-funzionamento dello script?

Inoltre ho notato che le modifiche che tu mi hai consigliato sono per un codice più corretto rispetto a quello usato da me (e tu dirai: bella scoperta, e sennò mica te le dicevo... :jolly: ), tuttavia le pagine che inseriscono nuovi articoli nel db sono scritte nello stesso vecchio modo che tu mi hai corretto (e che io ho subito imparato...) e funzionano, nel senso che la notizia viene effettivamente inserita nel db.

Perché non riesco a modificarle, allora?

Ti ringrazio di nuovo per l'attenzione (e anche e soprattutto per quello che sto imparando... gh!!)

elisa
 
che dire...

eccolo qua il mio pastroochio...

(graziegraziegrazie!!!)

allora, la cartella è così composta:
insert contiene la form per inserire un nuovo articolo e viene elaborata da save;

config.inc contiene i dati per la connessione al db e install esegue la creazione del db

all visualizza tutti gli articoli presenti

search e result si riferiscono a una ricerca nel db (ma non mi funzionano..)

___________________________________________________

i file che ti ho elencato sopra sono quelli che ho ripreso dal manuale; quelli che ti indico di seguito sono invece quelli che ho creato io basandomi su quegli stessi file e cambiando sostanzialmente le query...:

modifi visualizza tutti gli articoli da modificare (l'ho copiato biecamente da all) e porta a change, in cui compare una form tale e quale a insert :dipser:

changeit elabora - o almeno dovrebbe - change e ho cercato di ricalcare save...

tutto qua! è strano, credevo fosse una cosa più semplice, visto che le istruzioni necessarie sono proprio la base dell'interazione tra php e mysql...

thanks again (ormai non so più in quale lingua stupefarmi per la tua disponibilità... e non siamo neanche a natale!!! 0:) )

elisa
 

Allegati

mannaggia!!

ciao open-think!

a dire il vero ho già provato praticamente tutti i link che mi hai segnalato... il fatto è che alcuni sono fin troppo elaborati per le mie esigenze, ma soprattutto mi piacerebbe imparare davvero come funzionano i vari script di interazione con mysql, oltre ad acquisire una certa sintassi...

(Php mi piace molto e lo sto studiando per lavorarci in modo serio...Il manuale che ho comprato - oltre ad essere abbastanza costoso - è anche vecchiotto (2001), è quello di David Tansley, ma non ricordo l'edizione; ho seguito finora le indicazioni là contenute... mah!)

Ad ogni modo immagino di aver combinato un bel casino visto il suggerimento che mi hai dato!!! :dipser:

Posso chiederti cosa è andato storto nello script? Anzi, c'è qualcosa che va bene nello script :jolly: ???

ehehe

A parte gli scherzi, non voglio assolutamente portarti via ancora più tempo di quello che già mi hai dedicato... Per cui se mi dici che è veramente da buttar via mi lancerò allo studio degli script che già si trovano online! Sai però la cosa che più mi da fastidio? E' che credevo di aver capito tutto almeno a grandi linee dei procedimenti base per interagire con Mr.Database... e quindi non mi capacito delperché non mi funziona! Mah!
scusa lo sfogo, e grazie di cuore per quello che hai fatto finora!!!

Elisa
 
uau

uau! mi gaso perché alla fine mi è venuto anche a me in mente che il problema era nel passaggio dell'id quando si seleziona una notizia da modificare...

(capisco che per te magari era scontato, ma per me vedere che anche tu la pensi cos' mi sembra una certa conquista...)

che strada mi consigli per cercare il problema, manuali, tutorial, php.net?

grazie di nuovo

elisa
 
$query="UPDATE news SET titolo='".$_POST[titolo]."',eccc..WHERE id='".$_POST[id]."'";

Attento agli apici
ciao
 

Discussioni simili