Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    problema passaggio variabili (principiante)

    Ciao a tutti, premetto che non sono proprio afferratissimo su php ma un minimo me la cavo...

    ho ripreso la guida http://freephp.html.it/guide/lezioni.asp?idguida=8 per inserimento e visualizzazione articoli...
    l'ho un po' modificato, ho tolto le date... ma per il resto funziona ... riesco a inserire i vari campi nella tabella (premetto che lavoro in locale con easyphp).

    Il mio problema e' questo:

    Notice: Undefined variable: id in c:\programmi\easyphp1-8\www\view.php on line 7


    il mio index.php :

    <?
    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,titolo FROM news ORDER BY id DESC LIMIT 0,5";
    $result = mysql_query($query, $db);

    // numero di righe da inserire

    while($row = mysql_fetch_array($result))
    {
    echo "<a href=\"view.php?id=$row[id]\">" . " [b].: $row[titolo]</a>

    ";
    }
    foot();
    ?>



    il mio view.php

    <? 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 titolo,testo,autore,mail FROM news WHERE id='$id'";
    $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);
    echo "$row[titolo]

    ";
    echo "$row[testo]

    ";
    echo "
    <a href=index.php>Torna alla pagina iniziale</a>
    ";
    echo "<a href=all.php>Visualizza tutti gli articoli</a>
    ";
    mysql_close($db);
    foot();
    ?>


    a quanto ho capito non riesco a fare il passaggio di variabile da il file index a quello view, infatti non riesco a visualizzare l'articolo...

    Grazie a tutti

    Ste

  2. #2
    non conosco easyphp ma secondo me (però potrei sbagliarmi) dipende dalle impostazioni di sicurezza PHP, se non ricordo male nelle ultime versioni è stata cancellata la possibilità di dichiarare le variabili direttamente dalle querystring.

    Pertanto visitare la pagina:

    pagina.php?var=ciccio&var2=ciccione

    non creerà sulla pagina le variabili "var" e "var2".
    Queste dovrebbero essere accessibili dall'array dedicato, il superglobal $_GET. Prova pertanto a scrivere prima della query:

    codice:
    ....
    if (isset($_GET["id"])) $id = $_GET["id"];
    else die("non hai selezionato l'articolo correttamente");
    ....
    se non funziona... beh ho scritto un mucchio di idiozie

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    Putroppo il tutorial che stai seguendo e' obsoleto e si riferisce a un comportamento del PHP fino alla versione 4 noto come "Register_globals=On" (che trovi nel file PHP.INI). Dalla versione 4 in poi questa impostazione e' stata cambiata (giustamente in "Register_globals=Off". Ti spiego brevemente a cosa serve.

    Supponi di chiamare una pagina PHP con il seguente URL (metodo GET):

    pagina.php?id=1

    Con register_globals=on, ti trovi automagicamente una variabile di nome "id" valorizzata a 1 nel tuo sorgente. Comodo, ma molto pericoloso. Con register_globals=Off, questo non accade e devi dichiarare esplicitamente quali variabili desideri prelevare dalla stringa di GET e delle variabili di POST, come segue:

    $id = $_GET['id'];

    In questo modo tu crei a mano una variabile di nome id e le assegni il valore della variabile della stringa di GET di nome id. Le variabili $_GET e $_POST (e la loro intersezione $_REQUEST) sono due array dove trovi l'insieme di coppie chiave=valore passate via get o via post rispettivamente.

    In due parole, devi modificare lo script in questione mettendo esplicitamente

    $id = $_GET['id'];

    Altrimenti la variabile $id non risultera' inizializzata.

    I motivi di sicurezza sopra citati te li riassumo in due righe; e' possibile con register_globals=On modificare a piacimento i valori di default delle variabili non inizializzate, e questo e' molto pericoloso.
    There are 10 types of people in the world - those who understand binary and those who don't.

  4. #4
    ragazzi, siete stati fantastici tutti e due sia perche' ora ho capito sia perche' non pensavo ci fosse qlc che mi rispondesse a quest'ora !!! FUNZIONA !

    MILLE GRAZIE !

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.