PHP - Non interpreta codice

  • Creatore Discussione Creatore Discussione miagy
  • Data di inizio Data di inizio

miagy

Utente Attivo
2 Nov 2014
83
1
8
Buonasera, ho un problema decennale che non riesco a comprendere.
Ho un file, chiamato "refresh.php", che non mi bypassa il pezzo al server e, di conseguenza, non me lo interpreta.
Richiamando infatti una tabella:

PHP:
$MySql = "SELECT * FROM Skill WHERE IDSkill = .$IDSkill.";
$Result = mysql_query($MySql);

E poi aggiungendo questo:

PHP:
[...]
                                $n .="<a href='pag2.php?ID=<?php echo $IDSkill; ?>'>leggi qui la descrizione</a></td></tr></table>";

Il link è letteralmente:

PHP:
pag2.php?ID=<?php echo ; ?>

Come mai? :confused:

Nel dubbio, posto il codice nella sua interezza:

PHP:
<? session_start();
include ('inc/parametri.inc.php');
include ('inc/controllo.php');
include ('inc/open2.php');

function Tempo($tim) {
  return(strftime("%H:%M", strtotime($tim)));
}

If (strtoupper($op) == 'ESCI') {header('Location: logout.php', false);};

$MySql2 = "SELECT * FROM Skill WHERE IDSkill = .$IDSkill.";
$Result2 = mysql_query($MySql2);
$result_Skill =  mysql_query($MySql2);
$IDSkill = mysql_fetch_array($result_Skill);

include('inc/controlloesilio.php');
?>
<HTML><HEAD><SCRIPT language="JavaScript">
function doRefresh() {
// refresh della pagina corrente
document.location.reload();
}
// imposto il timeout per il prossimo refresh
// espresso in millisecondi (1000 = 1 secondo)
window.setTimeout("doRefresh();" , 15000);
</SCRIPT><link rel="stylesheet" href="mainchat.css" TYPE="text/css"></HEAD><body><?

$MySql = "SELECT * FROM Chat WHERE (Stanza = '".pars($Stanza)."' OR Tipo = 'G') AND ID > ".$LastTime." AND DATE_ADD(Ora, INTERVAL 180 MINUTE)  >= NOW()";
$MySql .= " ORDER BY ID DESC LIMIT 0, 20";
$Result = mysql_query($MySql);

if ($LastTime == 0) {
        $Testata .= "<HEAD><link rel=\"stylesheet\" href=\"mainchat.css\" TYPE=\"text/css\"></HEAD><BODY>";
}
while ($rs = mysql_fetch_array($Result)) {

    if ($rs['ID'] > $LastTime) {
            $_SESSION['LastTime'] = $rs['ID'];
            $LastTime = $_SESSION['LastTime'];
            };
        #{
                switch ($rs['Tipo']) {
                    
                                                 case 'T': #Abilità
                                $n = "<table><tr><td align=justify><FONT FACE=Verdana SIZE=1><FONT COLOR='white'>".$rs['Mittente']."</FONT> utilizza <FONT COLOR='#00CC66'>".$rs['Locazione']."</FONT> di ".$rs['Testo']."";
                                $n .="<a href='pag2.php?ID=<?php echo $IDSkill; ?>'>leggi qui la descrizione</a></FONT></td></tr></table>";
                               break;
                       
		};
    	
        $newchat = $n.$newchat;
        $n = '';
        
    #};

}
$newchat = $Testata.$newchat;
$newchat = str_replace("\\", "\\\\", $newchat);
$newchat = str_replace("'", "\\'", $newchat);

?>

<script>
parent.chattesto.document.write('<?= $newchat ?>');
var h = 0;
try {h = parent.chattesto.document.body.offsetHeight + 1000;} catch(e) {h = 0};
parent.chattesto.scroll (0, h);
</script>

<SCRIPT language="JavaScript">
// verifico il refresh della pagina
var msg = "Questa pagina è stata letta" +
  "<BR><B>" + Date() + "</B>";
document.write(msg);
</SCRIPT>
</body></html>
 
C'è un errore di copiatura, scusate:

PHP:
$MySql = "SELECT * FROM Skill WHERE IDSkill = .$IDSkill."; 
$Result = mysql_query($MySql);
 
Perché apri tag php all'interno di php :D:D:D:D:D

Sostituisci con
PHP:
[...]
$n .="leggi qui la descrizione";

Inviato con Tapatalk 2 da Android
 
Ultima modifica:
Nel senso, tu indendi di fare una cosa tipo:

PHP:
$n = "<table><tr><td align=justify><FONT FACE=Verdana SIZE=1><FONT COLOR='white'>".$rs['Mittente']."</FONT> utilizza <FONT COLOR='#00CC66'>".$rs['Locazione']."</FONT> di ".$rs['Testo']." <a href='pag2.php?ID=<?php echo $IDSkill; ?>'>"; 
                                $n .="leggi qui la descrizione";
$n. = "</a></FONT></td></tr></table>";

Perché in questo caso non mi legge nulla.
Ho provato anche con:

PHP:
$MySql = "SELECT * FROM Skill WHERE IDSkill = '$IDSkill' ";

[...]

$n .="<a href='pag2.php?ID=$IDSkill'>leggi qui la descrizione</a></FONT></td></tr></table>";

Ma nulla.
Il risultato che mi da è:

HTML:
pag2.php?ID=

Ho provato persino a stamparlo con un echo, ma nulla. Il risultato è sempre a vuoto.
(Scusate, non trovo il tasto modifica ahahahahha)
 
Ultima modifica:
PHP:
$n = "<table><tr><td align=justify><FONT FACE=Verdana SIZE=1><FONT COLOR='white'>".$rs['Mittente']."</FONT> utilizza <FONT COLOR='#00CC66'>".$rs['Locazione']."</FONT> di ".$rs['Testo']." <a href='pag2.php?ID=<?php echo $IDSkill; ?>'>"; 
                                $n .="leggi qui la descrizione";
$n. = "</a></FONT></td></tr></table>";

Tu hai inserito <?php echo $IDSkill; ?> all'interno di codice già php. Hai inserito il tag php dentro già codice php. Sostituendo con questo funziona se la variabile $IDSkill contiene qualcosa ovviamente:

PHP:
$n = "<table><tr><td align=justify><FONT FACE=Verdana SIZE=1><FONT COLOR='white'>".$rs['Mittente']."</FONT> utilizza <FONT COLOR='#00CC66'>".$rs['Locazione']."</FONT> di ".$rs['Testo']." <a href='pag2.php?ID=$IDSkill'>"; 
                                $n .="leggi qui la descrizione";
$n. = "</a></FONT></td></tr></table>";


Inviato con Tapatalk 2 da Android
 
Tu hai inserito <?php echo $IDSkill; ?> all'interno di codice già php. Hai inserito il tag php dentro già codice php. Sostituendo con questo funziona se la variabile $IDSkill contiene qualcosa ovviamente:

PHP:
$n = "<table><tr><td align=justify><FONT FACE=Verdana SIZE=1><FONT COLOR='white'>".$rs['Mittente']."</FONT> utilizza <FONT COLOR='#00CC66'>".$rs['Locazione']."</FONT> di ".$rs['Testo']." <a rel='nofollow' href='pag2.php?ID=$IDSkill'>"; 
                                $n .="leggi qui la descrizione";
$n. = "</a></FONT></td></tr></table>";


Inviato con Tapatalk 2 da Android

Sì, lì era per vedere se buttandoci un echo anche lì mi dava un risultato ><
Nel modo in cui mi hai consigliato, non mi legge nulla, nulla, nulla.
Maledizione. E' una tortura :gun:

E ho testato anche con:

PHP:
$n = "<table><tr><td align=justify><FONT FACE=Verdana SIZE=1><FONT COLOR='white'>".$rs['Mittente']."</FONT> utilizza <FONT COLOR='#00CC66'>".$rs['Locazione']."</FONT> di ".$rs['Testo']."";
$n .="<a href=\"pag2.php?ID=$IDSkill\">"; 
                                $n .= "leggi qui la descrizione";
$n .= "</a></FONT></td></tr></table>";  
break;

Niente. Continua a non valorizzarvi il campi IDSkill (che esiste) :hammer:
 
Ultima modifica:
Se non legge nulla significa che la variabile non contiene niente
Per verificare ciò inserisci var_dump($IDSkill); e guarda il risultato

Inviato con Tapatalk 2 da Android
 
No no, te lo assicuro.
Esiste!

E nulla, inserendo var_dump($IDSkill);, il risultato è pressoché identico.
Voglio morire y.y

$MySql = "SELECT * FROM Skill WHERE IDSkill = '$IDSkill' ";
$Result = mysql_query($MySql);
var_dump($IDSkill);
 
Ultima modifica:
Per verificare ciò inserisci var_dump($IDSkill); e guarda il risultato

Fai comunque questa verifica e scrivimi il risultato



Inviato con Tapatalk 2 da Android
 
Perfetto, ancora nulla :dipser:
Allora, partiamo dalla base. La pagina refresh.php è una messa a stampa di una frase che viene creata dall'utente. L'utente sceglie cosa scrivere (o in questo caso che SKILL inviare) mediante un'altra pagina chiamata input.php.
Facendoti uno stamp, il risultato è questo:

http://i62.tinypic.com/308yuqd.png

Nella pagina INPUT.PHP, la parte relativa a SKILL (che effettivamente vengono stampate, sono le scritte verdi) sono queste:

PHP:
[...]

elseif ($ogg == "2") {
            $Locazione = $_POST['Lcz'];
$Lcz = $Locazione; } elseif ($ogg == "3") {
            $Dest = $_POST['Lcz'];
$Lcz = $Locazione; }  else {

 $Locazione = stripslashes(trim($Locazione));
$Lcz = $Locazione;
                     $LczDefault = $Lcz;
}

if ($Msg != "") {

[...]

if ($ogg == "2") {
                $Msg = htmlspecialchars($Msg);
                $Tipo = "T";
        }

E questa:


PHP:
<? } elseif ($mod == "ab") {

  ?>

<form name=invio action="input.php?ogg=2" method=POST>
<table cellpadding=0 cellspacing=1 border=0 align=center>
<tr><td align=left>Skill</td><td></td><td></td></tr>
<tr>
<td valign=middle cellspacing=2>
<select name="Lcz">
<?


$MySql = "SELECT * FROM ClgPersonaggioSkill LEFT JOIN Skill ON Skill.IDSkill = ClgPersonaggioSkill.IDSkill WHERE ClgPersonaggioSkill.Nome = '$Login'";
    #echo $MySql;

    $Result = mysql_query($MySql);
    while ($rs = mysql_fetch_array($Result)) {

?>

<option><?=$rs['Descrizione']?></option>

<?
 } ?>

</select>
&nbsp;&nbsp;&nbsp;</td>
 
Ovviamente il tutto viene stampato con:

PHP:
        $MySql = "INSERT INTO Chat (Stanza, Mittente, Destinatario, Ora, Testo, Sesso, ImgGilda, DescGilda, ImgRazza, DescRazza, Tipo)";
        $MySql .= "VALUES ('".addslashes($Stanza)."', 'System Op', '".addslashes($Login)."', NOW(), '".$Msg."', '$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'S')";
        mysql_query($MySql);
}
 
Ok, ho provato a fare un'altra prova, questa volta leggermente diversa.
Ho creato un'altra pagina affinché possa fare la query ed è uscito un risultato abbastanza curioso:

PHP:
<? 

[...]

$IDSkill = $_POST['Abi'];

?>

<form name=invio action="ab.php" method=POST>
[...]

<select name="Abi">
<?


$MySql = "SELECT * FROM ClgPersonaggioSkill LEFT JOIN Skill ON Skill.IDSkill = ClgPersonaggioSkill.IDSkill WHERE ClgPersonaggioSkill.Nome = '$Login'";
    #echo $MySql;
       $result=mysql_query($MySql) or die ("Non hai skill da usare");

while($rs=mysql_fetch_array($result)){
?>

<OPTION name="Abi"><?=$rs['Descrizione']?></OPTION>

<?
    }
    $rs->close;
?>

</select>

[...]

<input name=invio type=submit value="Usa" class=ares></td>
</form>

<?

if ($invio == true) {

$query = "SELECT IDSkill FROM Skill WHERE IDSkill = '$IDSkill'";
$risulto = mysql_query($query);

$MySql = "INSERT INTO Chat (Stanza, Mittente, Destinatario, Ora, Testo, Sesso, ImgGilda, DescGilda, ImgRazza, DescRazza, Tipo)";
$MySql .= "VALUES ('".addslashes($Stanza)."', '$Login', '$Login', NOW(), '<font color=\"#0000FF\"><strong>prende";
$MySql .= "<a rel='nofollow' href=\"descab.php?Abi=$IDSkill\">";  
$MySql .= "$Abi</strong>"; 
$MySql .= "</a>";
$MySql .= "</font>', '$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'A')";
mysql_query($MySql);
}
?>

Ho notato che se mettessi $IDSkill = $_POST['Abi']; la query verrebbe parzialmente letta (Letta NON con l'ID ma con la Descrizione). > stamp > http://i58.tinypic.com/vn2wzn.png
L'ID, tuttavia, non ne vuole sapere
 
Ultima modifica:

Discussioni simili