Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2013
    residenza
    Genova
    Messaggi
    5

    Problema sovrascrittura di una variabile session

    Ciao ragazzi, ho un problema..nel mio db ho la tabella biografia, con la biografia tradotta nelle diverse lingue... nella pagina di gestione biografie faccio apparire i nomi delle lingue contenute nel db, e cliccandoci sopra mi aprono un form in modo da poter modificare la biografia e risalvarla nel db.

    Il mio problema sta nel passare il contenuto dell'attributo "descrizione" dentro il quale ci sta la lunga biografia, attraverso una variabile $_SESSION, perche con $_GET sarebbe molto brutto...

    funziona tutto, a parte il fatto che la variabile $_SESSION mi si sovrascrive ed esce sempre il testo in inglese (che è l'ultimo in ordine di righe nella tabella del db) ...questo perchè il codice è scritto male ma non riesco a capire dove posso mettere la variabile $_SESSION per far si che non venga sovrascritta mentre faccio il mysql_fetch_array!

    Qui c'è il codice...è commentato nel punto dove so che è sbagliato, ma non riesco a tirarmici fuori..date un occhiata se riuscite a darmi una mano grazie!!!

    Codice PHP:
            <h2><i>Scegli lingua della biografia che vuoi modificare:</i></h2> 
               <?php                
    @include 'config.php';                
    @include 
    'connessione_db.php';
                                    
    $lingue_bio = @mysql_query("SELECT id_bio, descrizione, lingua FROM biografia, lingue WHERE id_lingua=lingue.id");                
    if (!
    $lingue_bio) {                    
    exit(
    '<p>Errore nel caricamento delle lingue!<br />' 'Errore: ' mysql_error() . '</p>');                
    }                                
    while (
    $lingue mysql_fetch_array($lingue_bio)) {                    
    $nome_lingua $lingue['lingua'];                    
    $testo $lingue['descrizione'];                    
    $biografia $lingue['id_bio'];                   
    $_SESSION['testo']=$testo;            /*NON VA BENE PERCHE SOVRASCRIVE LA PRIMA VARIABILE! */                    
    echo     "<a href=\"biografia.php?linguanome=$nome_lingua&bio=$biografia\">$nome_lingua</a><br />";                    
    }            
    ?>
                
    <?php            
    if(isset($_GET['linguanome'])){                
    $descrizione = ($_SESSION['testo']);                
    $language= ($_GET['linguanome']);                
    $biografyid = ($_GET['bio']);            
    ?> 

    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">            
    <?php                
    echo "<h2><i>Biografia in $language:</i></h2>";                
    echo 
    "<div id=\"formbio\"><textarea class=\"formfont\" name=\"biografia\" cols=\"79\" rows=\"30\">$descrizione</textarea></div>";                
    echo 
    "<input name=\"bioid\" type=\"hidden\" value=\"$biografyid\"></input>";                
    echo 
    "<input type=\"submit\" name=\"Submit\" class=\"invio\" value=\"Invia\" class=\"pulsante\">";            
    }            
    unset(
    $descrizione);            
    ?>            
    </form>

  2. #2
    Se vuoi usare per forza la SESSION e questo approccio , o tene crei una per lingua $_SESSION['it'], $_SESSION['fr'] oppure dividi i vari testi con qualcosa tipo un separatore.

    Usare male la session per usarla, a sto punto fai qualcosa del genere $_SESSION[$nome_lingua]=$testo


    [PHP]
    <h2><i>Scegli lingua della biografia che vuoi modificare:</i></h2>
    <?php

    while ($lingue = mysql_fetch_array($lingue_bio)) {
    $nome_lingua = $lingue['lingua'];
    $testo = $lingue['descrizione'];
    $biografia = $lingue['id_bio'];
    $_SESSION[$nome_lingua]=$testo; /*NON VA BENE PERCHE SOVRASCRIVE LA PRIMA VARIABILE! */
    echo "<a href=\"biografia.php?linguanome=$nome_lingua&bio=$ biografia\">$nome_lingua</a><br />";
    }
    ?>

    però, se posso darti un consiglio:

    Creati un'area dove inserire la descrizione per lingua.

    Cioè una text area per italiano, una per francese, una per inglese, etc... nascondi quella che non ti interessa con javascript, di volta in volta, e poi passi tutto con $_POST.

    E anche questa non è il massimo dell'eleganza, ma è un minimo più interessante.
    Poi, dato che ci sei, documentati sulla pdo, le funzioni che usi per scrivere e leggere su db sono a scadenza...

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.