no, è solo un errore di scrittura il codice completo è questo:
funzione che aggiorna
Codice PHP:
<?
function edit_ticket($id)
{
//clean up HTML tags
$frm_description = strip_html($_POST['frm_description']);
$frm_affected = strip_html($_POST['frm_affected']);
$frm_scope = strip_html($_POST['frm_scope']);
$frm_owner = $_POST['frm_owner'];
$frm_status = $_POST['frm_status'];
$frm_severity = $_POST['frm_severity'];
//do automatic action reporting
echo "
id-> ".$id;
echo "
oggetto-> ".$frm_scope;
echo "
titolo-> ".$frm_affected;
echo "
descrizione-> ".$frm_description ;
echo "
mittente-> ".$frm_owner;
echo "
stato-> ".$frm_status;
echo "
livello-> ".$frm_severity;
if ($frm_severity!="" && $frm_status!="" && $frm_owner!="" && $frm_description!="" && $frm_affected!="" && $frm_scope!="" && $id!="") {
//update ticket
$query = "UPDATE tabella SET campo='$frm_affected', campo='$frm_owner', campo='$frm_description', campo='$frm_status', campo='$frm_severity', campo='0', campo='0', campo='30' WHERE campo='$id'";
$result = mysql_query($query) or die('edit.php::update_ticket');
/* show updated ticket */
print "<center><FONT CLASS=\"header\">Il Ticket $id è stato modificato</FONT>
";
show_ticket($id);
add_footer($id);
notify_user($id,1);
//notify_user(298,$NOTIFY_TICKET);
}
else {
echo "valori vuoti";
echo "
id-> ".$id;
echo "
oggetto-> ".$frm_scope;
echo "
titolo-> ".$frm_affected;
echo "
descrizione-> ".$frm_description ;
echo "
mittente-> ".$frm_owner;
echo "
stato-> ".$frm_status;
echo "
livello-> ".$frm_severity;
}
}
?>
nello stesso file la pagina che si visualizza:
Codice PHP:
<?
$id = $_GET['id'];
if ($_GET['action'] == 'update')
{
//echo "entro qui perche devo aggiornare lo stato";
/* update ticket */
if ($id == '' OR $id <= 0 OR !check_for_rows("SELECT * FROM tabella WHERE campo='$id'"))
print "<FONT CLASS=\"warn\">Ticket ID non valido: '$id'</FONT>";
else
edit_ticket($id);
}
//delete ticket
else if ($_GET['delete'])
{
if ($_POST['frm_confirm'])
{
//verifico se esiste l'allegato
if (verificaAllegato($id)) // se si entro e cancello tutto dalla tabella allegati, altrimenti vado sotto
{
deldir($dir=("allegati/codice_".$id)); //elimino la cartella e il suo contenuto
//elimino il ticket dal db
//seleziono tutti gli id azioni per andare successivamente a cancellarli
$query=mysql_query("SELECT campo FROM tabella WHERE campo='$id'") or do_error('edit.php::remove_ticket(ticket)', 'mysql_query() failed', mysql_error());
while($row = mysql_fetch_array($query))
{
//echo $id." n° di ticket";
//echo $row[campo]." n° di azione";
//cancello dalla tabella allegati gli id action
$result = mysql_query("DELETE FROM tabella WHERE campo='$row[campo]' AND campo='1' ") or do_error('edit.php::remove_ticket(ticket)', 'mysql_query() failed', mysql_error());
//cancello da allegati gli id ticket
$result = mysql_query("DELETE FROM tabella WHERE campo='$id' AND campo='0' ") or do_error('edit.php::remove_ticket(ticket)', 'mysql_query() failed', mysql_error());
}
} //se il controllo restituisce false cancello solo le tabelle di ticket ed action e non allegati, perchè vuota
//$nome="allegati/codice_".$id;
@rmdir("allegati/codice_".$id);
$result = mysql_query("DELETE FROM tabella WHERE campo='$id'") or do_error('edit.php::remove_ticket(ticket)', 'mysql_query() failed', mysql_error());
$result = mysql_query("DELETE FROM tabella WHERE campo='$id'") or do_error('edit.php::remove_ticket(action)', 'mysql_query() failed', mysql_error());
$result = mysql_query("DELETE FROM tabella WHERE campo='$id' AND campo='0' ") or do_error('edit.php::remove_ticket(ticket)', 'mysql_query() failed', mysql_error());
print "<center><FONT CLASS=\"header\">Il Ticket '$id' è stato cancellato.</FONT>
";
list_tickets();
}
else//confirm deletion
echo "<FORM METHOD=\"post\" ACTION=\"edit.php?id=$id&delete=1&go=1\">
<table widht=\"780\" align=\"center\" CLASS=\"header\">
<FONT CLASS=\"header\">Confermare la cancellazione del tickets</font>
<INPUT TYPE=\"checkbox\" NAME=\"frm_confirm\" VALUE=\"1\">Cancella Ticket #$id<INPUT TYPE=\"Submit\" VALUE=\"Elimina\"></FORM></table>";
}
else
{
/* sanity check */
if ($id == '' OR $id <= 0 OR !check_for_rows("SELECT * FROM tabella WHERE campo='$id'"))
{
print "<center>[b]Ticket '$id' non valido[/b]
";
} else {
$result = mysql_query("SELECT *,UNIX_TIMESTAMP(date) AS campo FROM tabella WHERE campo='$id'") or do_error('edit.php::show_ticket', 'mysql_query() failed', mysql_error());
$row = mysql_fetch_array($result);
?>
<TABLE width="780" BORDER="0" align="center">
<FORM METHOD="post" ACTION="edit.php?id=<? echo $id;?>&action=update">
<tr><td colspan="2" ALIGN="left" class="titolo_ticket">Modifica Ticket</td>
<td width="130"></td></tr>
<tr><TD bgcolor="#f5f5f5" align="left" CLASS="td_label">Titolo:</TD>
<TD align="left" ><INPUT TYPE="text" SIZE="48" NAME="frm_affected" VALUE="<? echo $row[campo];?>" ></TD></TR>
<TR><TD bgcolor="#f5f5f5" align="left" CLASS="td_label">Obiettivo:</TD>
<TD align="left" ><INPUT TYPE="text" NAME="frm_scope" SIZE="48" VALUE="<? echo $row[campo];?>" readonly=""></TD></TR>
<?
//lookup owners
if (get_variable('restrict_user_add') && !(is_administrator()) || $_SESSION['level'] != $GLOBALS['LEVEL_ADMINISTRATOR'])
print "<INPUT TYPE=\"hidden\" NAME=\"frm_owner\" VALUE=\"$row[campo]\">";
else
{
print "<TR><TD bgcolor=\"#f5f5f5\" align=\"left\" CLASS=\"td_label\">Utente:</TD>
<TD align=\"left\" widht=\"\">";
$result2 = mysql_query("SELECT campo,campo FROM tabella") or do_error('edit.php::lookup_owner', 'mysql_query() failed', mysql_error());
print "<SELECT NAME=\"frm_owner\">";
while ($row2 = mysql_fetch_array($result2))
{
if (get_owner($row['campo']) == $row2['campo'])
print "<OPTION VALUE=\"$row2[campo]\" SELECTED>$row2[campo]</OPTION>";
else
print "<OPTION VALUE=\"$row2[campo]\">$row2[campo]</OPTION>";
}
print "</SELECT></TD></TR>";
}
?>
<TR><TD bgcolor="#f5f5f5" align="left" widht="" CLASS="td_label">Priorità:</TD>
<TD align="left" widht=""><SELECT NAME="frm_severity">
<OPTION VALUE="<?=$GLOBALS['SEVERITY_NORMAL'];?>" <?=($row[campo]==$GLOBALS['SEVERITY_NORMAL']) ? "SELECTED" : "";?>><?=get_severity($GLOBALS['SEVERITY_NORMAL']);?></OPTION>
<OPTION VALUE="<?=$GLOBALS['SEVERITY_MEDIUM'];?>" <?=($row[campo]==$GLOBALS['SEVERITY_MEDIUM']) ? "SELECTED" : "";?>><?=get_severity($GLOBALS['SEVERITY_MEDIUM']);?></OPTION>
<OPTION VALUE="<?=$GLOBALS['SEVERITY_HIGH'];?>" <?=($row[campo]==$GLOBALS['SEVERITY_HIGH']) ? "SELECTED" : "";?>><?=get_severity($GLOBALS['SEVERITY_HIGH']);?></OPTION>
</SELECT></TD></TR>
<TR><TD bgcolor="#f5f5f5" align="left" widht="" CLASS="td_label">Stato:</TD>
<TD align="left" widht=""><SELECT NAME="frm_status"><OPTION VALUE="2">Aperto</OPTION><OPTION VALUE="1">Chiuso</OPTION></SELECT></TD></TR>
<TR><TD bgcolor="#f5f5f5" align="left" widht="" CLASS="td_label">Descrizione:</TD>
<TD align="left" widht=""><TEXTAREA NAME="frm_description" COLS="100%" ROWS="8"><?=$row['campo'];?></TEXTAREA></TD></TR>
<? print "<tr><td align=\"left\" colspan=\"2\">".getNoLinkAllegato($id,0)."
</td></tr>";?>
<!-- questi li passavo per prova nel caso inviavo due volte<INPUT TYPE="hidden" NAME="frm_affected_default" VALUE="<?=$row['campo'];?>">
<INPUT TYPE="hidden" NAME="frm_scope_default" VALUE="<?=$row['campo'];?>">
<INPUT TYPE="hidden" NAME="frm_owner_default" VALUE="<?=$row['campo'];?>">
<INPUT TYPE="hidden" NAME="frm_severity_default" VALUE="<?=$row['campo'];?>">
<INPUT TYPE="hidden" NAME="frm_status_default" VALUE="<?=$row['campo'];?>">
<INPUT TYPE="hidden" NAME="frm_status_description" VALUE="<?=$row['campo'];?>"> -->
<?
/* list actions belonging to ticket */
$result = mysql_query("SELECT *,UNIX_TIMESTAMP(date) AS campo FROM tabella WHERE campo='$id' ORDER BY date") or do_error('edit.php::action', 'mysql_query() failed', mysql_error());
$i=0;
while ($row = mysql_fetch_array($result))
{
//if reporting action, skip
if ($row[campo] != $GLOBALS[ACTION_COMMENT]) continue;
if (!$no_action)
print "<TABLE width=\"780\" BORDER=\"0\" align=\"center\">";
print "<TR><TD bgcolor=\"#CCCCCC\" align=\"canter\" widht=\"\" colspan=\"2\">[b]Azioni effettuate:[/b]</td></tr>";
print " <tr><TD bgcolor=\"#f5f5f5\" ALIGN=\"left\" widht=\"\">Data Inserimento: [B]".format_date($row[date])."[/B]
da: [b]".get_owner($row[campo])."[/b]
";
if (get_variable('abbreviate_affected'))
if (strlen($row['campo']) > get_variable('abbreviate_affected')) $row['description'] = substr($row['campo'],0,get_variable('abbreviate_affected')).'...';
print "$pre_tag".custom_tags($row[campo])." $pre_tag_closed ".getNoLinkAllegato($row[id],1)."
[<A HREF=\"action.php?ticket_id=$id&id=$row[campo]&action=edit\">Modifica</A>| <A HREF=\"action.php?id=$row[campo]&ticket_id=$id&action=delete\">Elimina</A>]</TD></TR>
<TR><TD>
</TD></TR>";
$no_action = 1; /* simple cosmetics fix */
$i++;
}
print "<tr><td colspan=\"2\" align=\"left\"><INPUT TYPE=\"submit\" VALUE=\"Modifica\"></td></tr>
</TABLE>";
}
echo "</FORM></table>";
}
Questa è tutta la pagina che mi dava quel problema... e non solo... ho dovuto modificare tutti gli UPDATE con un controllo come questo prima di effettuare la query:
if ($variabile1!="" &&$variabile2!=""...) {
$query="udate tabella set campi1=variabile1, capmpo2=variabile2...."
mysql_query....
}
in modo che se le variabili sono vuote non fa nesusn danno!!
Però sta cosa è strana un bel pò.. con la versione vecchia di firefox non mi dava nesusn problema... e ne sono sicurissimo, perchè questo programma lo fatto (modificato/ampliato) 6-7 mesi fà, e con la vecchia relaese di firefox funzionava bene!!