[PHP-MySql] Update che non mi funziona

  • Creatore Discussione Creatore Discussione Dian
  • Data di inizio Data di inizio

Dian

Nuovo Utente
7 Ott 2009
5
0
0
Salve,
spero che questa sia la sezione esatta.
Ho fatto un piccolo sito da associare ad un gioco di ruolo in cui gli utenti possono creare un loro diario anche se non sono molto esperta di php.
Il problema viene fuori quando voglio modificare il messaggio scritto, a volte lo cancella, a volte lo modifica, a volte non gliene importa un bel niente.
Non so più da che parte sbattere la testa per far funzionare il tutto.

Vi inserisco i tre files, sperando che mi possiate aiutare (gli originali sono su http://www.waiheke.co.nz/php/db/index.htm)

moddiariox.php
Codice:
<link rel="stylesheet" href="http://diari.altervista.org/stile.css" type="text/css">

<html><TD WIDTH="29%" HEIGHT="60">

<form method=POST action="update.php" name="fname">
<INPUT TYPE="hidden" NAME="customerid" VALUE="<?php echo $_REQUEST['customerid']; ?>">

<?php
// Show simple format of the records so person can choose the reference name/number
// this is then passed to the next page, for all details

$db = mysql_connect("localhost", "diari", "****");
mysql_select_db("my_diari",$db) or die ('Unable to connect to database');

$q="SELECT
      *
    FROM 
      diari,
      mesi,
      visibile,
      lingue
    WHERE
      diari.mese=mesi.id_mese AND
      diari.visibilita=visibile.id_visibile AND
      diari.lingua=lingue.id_lingua AND
      id_utente = ".$_REQUEST['customerid']."
    ORDER BY
      `anno` DESC,
      `mese` DESC,
      `giorno` DESC";

$result = mysql_query( $q, $db )
or die(" - Failed More Information:<br><pre>$q</pre><br>Error: " . mysql_error());

function troncaTesto($testo, $caratteri) {
if (strlen($testo) > $caratteri) {
$nuovo = substr_replace($testo, ”, $caratteri);
$testo = $nuovo.”…”;
}
return $testo;
}

$num_rows = mysql_num_rows($result);
if ($myrow = mysql_fetch_array($result)) {
$radio = $myrow["id_messaggio"];

echo "<table border=1 width=\"100%\">\n";
echo "<tr><td><b>Data</b></td><td><b>Messaggio</b></td><td><b>Visibile</b></td><td><b>Lingua</b></td></tr>\n";
do {
printf("<tr><td width=\"120\">%s</td><td>%s</td><td width=\"120\">%s</td><td width=\"120\">%s</td></tr>\n", $myrow["giorno"]." ".$myrow["nome_mese"]." ".$myrow["anno"], "<a href=\"testo/moddiario1.php?customerid=".$_REQUEST['customerid']."&amp;record=".$myrow["id_messaggio"]."\">".troncaTesto($myrow["messaggio"], 250)."</a>", "<a href=\"visibilita/moddiario1.php?customerid=".$_REQUEST['customerid']."&amp;record=".$myrow["id_messaggio"]."\">".$myrow["nome_visibile"]."</a>", $myrow["nome_lingua"]);
} while ($myrow = mysql_fetch_array($result));
echo "</table>\n";
} else {
echo "Non sono presenti messaggi"; 
}

mysql_free_result($result);
mysql_close($db);
?></DIV></TD></form></html>

testo/moddiario1.php
Codice:
<link rel="stylesheet" href="http://diari.altervista.org/stile.css" type="text/css">
<?PHP
session_start();

$record = $_REQUEST['record'];
$customerid = $_REQUEST['customerid'];

$host = "localhost";
$login_name = "diari";
$password = "****";

//Connecting to MYSQL
MySQL_connect("$host","$login_name","$password");

//Select the database we want to use
mysql_select_db("my_diari") or die("Could not find database");

$result=mysql_query(" SELECT * 
                      FROM 
                        diari
                      WHERE
                        id_messaggio='$record'");
$num=mysql_num_rows($result);
$i=0;
while ($i < $num) {


// collect all details for our one reference
$thumb=mysql_result($result,$i,"messaggio");
$id_lingua=mysql_result($result,$i,"id_lingua");

$f='<font face=Verdana,Arial,Helvetica size=2 Color=Blue';

//next we display only the details we want to allow to be changed in a form object
// the other details that we won't allow to be changed can be echoed to the screen
//note the hidden input line 3 below. We don't need to echo it to the screen
?>

<FORM ACTION="moddiario2.php" METHOD="post"> 
<P ALIGN="LEFT">
<INPUT TYPE="hidden" NAME="ud_id" VALUE="<? echo "$record"; ?>"> 
<P ALIGN="LEFT">Messaggio:<BR> <textarea NAME="ud_thumb" cols="80" rows="20"><?php echo $thumb;?></textarea><br>
<BR><BR> 
<INPUT TYPE="Submit" VALUE="Aggiorna la nota" NAME="Submit"> </P></FORM>
Lingua:
<?php
$result1 = mysql_query("
             SELECT *
             FROM 
                 diari,
                 lingue 
             WHERE
                 diari.lingua=lingue.id_lingua AND
                 id_messaggio = ".$_REQUEST['record']);

if ($row = mysql_fetch_array($result1)){
$lingua = $row['nome_lingua'];
echo $lingua;}else{echo '';}
?>
<?
++$i;
}
?><br>
Non usare l'html. Per andare a capo, andare semplicemente a capo

testo/moddiario2.php
Codice:
<link rel="stylesheet" href="http://diari.altervista.org/stile.css" type="text/css">
<?PHP
session_start();
?>

<?php

$ud_id=$_POST['ud_id'];
$ud_thumb=$_REQUEST['ud_thumb'];

if ($ud_id == "") echo "! No identifier retrieved";
else
echo "Amending record $ud_id";

$host = "localhost";
$login_name = "diari";
$password = "****";

//Connecting to MYSQL
MySQL_connect("$host","$login_name","$password");

//Select the database we want to use
mysql_select_db("my_diari") or die("Could not select database");

mysql_query(" UPDATE
                diari
              SET
                messaggio='".$ud_thumb."'
              WHERE
                id_messaggio='".$ud_id."'");

echo "<BR>Record $ud_id <-- Aggiornato<BR><BR>";
echo "<textarea cols=\"60\" rows=\"20\">".$ud_thumb."</textarea><br>";
echo $ud_visibile;
?>
 
Ultima modifica:
Ho capito l'inghippo ^.^"
in pratica, se mettevo l'apostrofo semplice non mi funziona, se lo metto così: \' sì
 
un piccolo consiglio, filtra le variabili prima di utilizzarle per le query,
PHP:
$record = $_REQUEST['record'];
$customerid = $_REQUEST['customerid'];
lo script ci guadagna in sicurezza.

Poi non inserire il codice per la connessione al db in tutti i file, creati un file per la connessione e includilo in quelli in cui serve
 

Discussioni simili