Visualizzazione risultati 1 fino 22 di 22

Discussione: Non mi interpreta PHP

  1. #1
    provact non è connesso Utente giovane
    Data registrazione
    23-12-2009
    Messaggi
    40

    Predefinito Non mi interpreta PHP

    Ciao a tutti, ho un problema d'interpretazione in una pagina php, chiamata refresh.php.
    Sostanzialmente io richiamo una tabella:

    Codice PHP:
    $MySql = "SELECT * FROM Skill WHERE IDSkill = .$IDSkill.";
    $Result = mysql_query($MySql);
    E successivamente dovrei passare la variabile presso un altro link (una querystring, in sostanza).

    Codice PHP:
    [...]
    $n .="<a href='pag2.php?ID=<?php echo $IDSkill; ?>'>leggi qui la descrizione</a></FONT></td></tr></table>";
    Ecco, il PHP non mi riconosce questo comando e, di conseguenza, mi sta a video:

    Codice PHP:
    pag2.php?ID=<?php echo ; ?>
    Non capisco l'errore
    Posto qui sotto il codice delle parti più importanti.
    Sono devastato

    Codice 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);};

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

    include(
    'inc/controlloesilio.php');

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

    ?>
    Ultima modifica di provact : 03-11-2014 alle ore 15.15.39

  2. #2
    Guest

    Predefinito

    1. $MySql = "SELECT * FROM Skill WHERE IDSkill = .$IDSkill.";
    --> $MySql = "SELECT * FROM Skill WHERE IDSkill = '$IDSkill' ";

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

    ecc...

  3. #3
    provact non è connesso Utente giovane
    Data registrazione
    23-12-2009
    Messaggi
    40

    Predefinito

    Citazione Originalmente inviato da FormularioDiDrakensang Visualizza messaggio
    1. $MySql = "SELECT * FROM Skill WHERE IDSkill = .$IDSkill.";
    --> $MySql = "SELECT * FROM Skill WHERE IDSkill = '$IDSkill' ";

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

    ecc...
    Esattamente, è una cosa che avevo fatto, e me lo leggeva come

    pag2.php?ID=
    Non capisco perché non me lo interpreti, maledizione é.è

  4. #4
    Guest

    Predefinito

    intendo devi scriverlo così
    Sopra avevi fatto un frullato di linguaggi

  5. #5
    provact non è connesso Utente giovane
    Data registrazione
    23-12-2009
    Messaggi
    40

    Predefinito

    Sì sì, avevo inteso. Ahahahahahha :D
    Comunque l'ho fatto di nuovo e il risultato è sempre il medesimo. :?(
    Ho provato anche con un var_dump($IDSkill);
    E nulla.

  6. #6
    provact non è connesso Utente giovane
    Data registrazione
    23-12-2009
    Messaggi
    40

    Predefinito

    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:

    Codice PHP:
    Codice 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:


    Codice PHP:

    Codice 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:

    Codice PHP:
    Codice 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);
    }

  7. #7
    Guest

    Predefinito

    in tutto il codice che hai listato non ho visto una sola riga $IDSkill = $_GET['ID'];
    apparte questo eravamo rimasti a

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

    che non puoi scrivere cosi'

    ma cosi'

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

    in quanto $n ecc ecc sei gia' in un blocco php

    cos'altro non funziona del web game non l'ho capito
    Ultima modifica di FormularioDiDrakensang : 04-11-2014 alle ore 10.58.43

  8. #8
    provact non è connesso Utente giovane
    Data registrazione
    23-12-2009
    Messaggi
    40

    Predefinito

    Anche inserendo una variabile $_GET, e seguendo il tuo consiglio che mi era sfuggito, non viene comunque interpretato
    Sostanzialmente, la skill che ho lanciato nello stamp, ha un ID valore 43 (Nel database ce ne sono all'incirca 187).
    Il risultato, clikkando su "Leggi la descrizione", è questo:

    http://i57.tinypic.com/10n9nwi.png
    Ultima modifica di provact : 04-11-2014 alle ore 11.08.02

  9. #9
    Guest

    Predefinito

    tieni presente che $_GET['ID'] va anche in pag2.php affinchè riceva ID e carichi la descrizione della stessa

    e che $IDSkill devi inizializzarla prima di $n .="<a rel='nofollow' href='pag2.php?ID=$IDSkill'>leggi qui la descrizione</a></FONT></td></tr></table>";

    oltre a questo pag2.php sembra non esistere nel percorso dello screen
    Ultima modifica di FormularioDiDrakensang : 04-11-2014 alle ore 11.18.05

  10. #10
    provact non è connesso Utente giovane
    Data registrazione
    23-12-2009
    Messaggi
    40

    Predefinito

    pag2.php è già creata:

    Codice PHP:
    $IDSkill=$_GET['ID'];

    [...]

    <body>
    <?php

    $MySql
    = "SELECT * FROM Skill WHERE IDSkill = '$IDSkill'";
    $Result = mysql_query($MySql);
    $risu = mysql_fetch_array($Result);

    echo
    $risu['Descrizione'] . '<br> ' . $risu['DescrizioneLunga'];

    ?>
    </body>

  11. #11
    Guest

    Predefinito

    ok

    <? 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);};

    $IDSkill = <inizializzami>
    se ricevuta anche qui da link
    $IDSkill = $_GET['ID'];
    e nel caso protezione anti inj.

    $MySql = "SELECT * FROM Skill WHERE IDSkill = '$IDSkill'";
    $Result = mysql_query($MySql);
    Ultima modifica di FormularioDiDrakensang : 04-11-2014 alle ore 11.22.21

  12. #12
    provact non è connesso Utente giovane
    Data registrazione
    23-12-2009
    Messaggi
    40

    Predefinito

    Citazione Originalmente inviato da FormularioDiDrakensang Visualizza messaggio
    $IDSkill = <inizializzami>
    se ricevuta anche qui da link
    $IDSkill = $_GET['ID'];
    e nel caso protezione anti inj.
    Oddio perdonami, penso di non averti capito!
    Non è già inizializzata?

  13. #13
    Guest

    Predefinito

    se lo fai in uno di questi

    include ('inc/parametri.inc.php');
    include ('inc/controllo.php');
    include ('inc/open2.php');

    si, altrimenti non direi proprio e da quanto emerso dalla discussione propenderei per la seconda
    Ultima modifica di FormularioDiDrakensang : 04-11-2014 alle ore 11.33.46

  14. #14
    provact non è connesso Utente giovane
    Data registrazione
    23-12-2009
    Messaggi
    40

    Predefinito

    Direi che non è inizializzata lì. Per abbreviarti, ed esserne sicuro:

    controllo.php

    Codice PHP:
    <? $Login = $_SESSION['Login'];
    if (
    $Login == '') {
    echo
    "<center>Troppo tempo parcheggiato.<br><br><a href='inizio2.php' target='_top'>esci</a></center>";
    exit();
    };
    ?>
    open.php

    Codice PHP:
    <?
    $db
    = mysql_connect("localhost",$par_DbUser,$par_DbPassword) or die("<b>ERRORE DI ACCESSO AI DATI</B><br>L'errore di solito &egrave; dovuto a problemi di sovraccarico del server, &egrave; temporaneo e sparisce dopo qualche minuto.<br><a href='Javascript:location.reload()'>riprova</a>");
    mysql_select_db($par_Conn);
    function
    pars($var) {
    return
    addslashes($var);
    }
    ?>
    parametri

    Codice PHP:
    <?
    #Particella necessaria per far girare la city su altervista
    extract($_SESSION);
    import_request_variables('gpc');
    extract($_SERVER);
    #Parametri base per la configurazione del gioco

    Serie di parametri come url del gdr, email ecc ecc, come ad esempio

    $par_MessaggiNameSing
    = 'Sms'; #Nome in gioco dei messaggi al singolare

    $par_Flag_AdminExt = '1'; #Visualizzazione estesa delle informazioni nelle schede dei personaggi

    include "pass/password.inc.php"; #Valorizzazione variabili di accesso al database
    ?>
    <hr>

    La cosa che non ho capito è:

    Codice PHP:
    $IDSkill = <inizializzami>
    se ricevuta anche qui da link $IDSkill = $_GET['ID'];
    e nel caso protezione anti inj.

  15. #15
    Guest

    Predefinito

    per usare $IDSkill qualcuno deve scriverci
    altrimenti il suo valore è undef

    tanto per la query quanto per la generazione del link

    ovvero
    la query diventa $MySql = "SELECT * FROM Skill WHERE IDSkill = ''";
    e il link $n .="<a rel='nofollow' href='pag2.php?ID='>leggi qui la descrizione</a></FONT></td></tr></table>";

    che è proprio quello che succede a te
    Ultima modifica di FormularioDiDrakensang : 04-11-2014 alle ore 11.52.31

  16. #16
    provact non è connesso Utente giovane
    Data registrazione
    23-12-2009
    Messaggi
    40

    Predefinito

    Citazione Originalmente inviato da FormularioDiDrakensang Visualizza messaggio
    per usare $IDSkill qualcuno deve scriverci
    altrimenti il suo valore è undef

    tanto per la query quanto per la generazione del link

    ovvero
    la query diventa $MySql = "SELECT * FROM Skill WHERE IDSkill = ''";
    e il link $n .="<a rel='nofollow' href='pag2.php?ID='>leggi qui la descrizione</a></FONT></td></tr></table>";

    che è proprio quello che succede a te
    In realtà no!
    Le skill, che variano da utente a utente in base a quale acquisisci, vengono selezionate dentro input.php in questa parte qui sotto, e poi inviate all'interno della pagina refresh.php:

    Codice 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>
    (-> Stamp: http://i58.tinypic.com/69ly8g.png)

    Dunque, teoricamente, l'ID dovrebbe già esserci .-.

    O forse te intendevi un ciclo if, del tipo:

    If Tipo T è true, $Msql bla bla bla, else niente?
    Ultima modifica di provact : 04-11-2014 alle ore 21.50.39

  17. #17
    Guest

    Predefinito

    i beg to differ
    io ho commentato quello che ho visto è in quello che ho visto è cosi'

    comunque per accertarsene
    If (strtoupper($op) == 'ESCI') {header('Location: logout.php', false);};
    echo "ID è : $IDSkill";
    $MySql = "SELECT * FROM Skill WHERE IDSkill = '$IDSkill'";
    $Result = mysql_query($MySql);
    se dice ID è qualcosa è tutto ok, altrimenti ho visto giusto
    Ultima modifica di FormularioDiDrakensang : 04-11-2014 alle ore 21.52.55

  18. #18
    provact non è connesso Utente giovane
    Data registrazione
    23-12-2009
    Messaggi
    40

    Predefinito

    Avevi ragione tu xD
    Ahahahahhaa

    Quindi considerando che la stringa che legge questa cosa è:

    Codice PHP:
    switch ($rs['Tipo']) {

    case
    'T': #Skill
    $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=\"descab.php?ID=$IDSkill\">Leggi</a></FONT></td></tr></table>";
    break;
    Provo a fare come ho detto io, al contrario xD?
    Ultima modifica di provact : 05-11-2014 alle ore 00.24.54

  19. #19
    provact non è connesso Utente giovane
    Data registrazione
    23-12-2009
    Messaggi
    40

    Predefinito

    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:

    Codice 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 -> http://i58.tinypic.com/vn2wzn.png).
    L'ID, tuttavia, non ne vuole sapere
    Ultima modifica di provact : 05-11-2014 alle ore 00.39.01

  20. #20
    Guest

    Predefinito

    non devi mica 'indovinare' :)

    vai nello script che crea il riferimento e vedi se lo crea

    poi vai nello script di cui abbiamo discusso fino ad ora e vedi se lo riceve

    tutto qui

    in altri termini
    lo script di partenza deve creare ID (input type hidden, option ecc) e propagarlo via GET o POST o SESSION
    e l'altro lo riceve con $_GET/$_POST ecc. e poi esegue il resto
    Ultima modifica di FormularioDiDrakensang : 05-11-2014 alle ore 13.12.55

  21. #21
    provact non è connesso Utente giovane
    Data registrazione
    23-12-2009
    Messaggi
    40

    Predefinito

    Basta, ci ho rinunciato.
    Io continuo a valorizzare IDSkill ma nulla.
    Non capisco dove sbaglio, maledizione.

  22. #22
    Guest

    Predefinito

    credo che per venirne a capo prima di natale, converrebbe uno zip con i files coinvolti in questa discussione

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •