• User Newbie

    Selezione record da modificare

    Salve ragazzi...premetto che sto lavorando da un po con PHP e sto scoprendo tutte le sue funzionalità...per arrivare subito al sodo,ho creato un pannello di inserimento news ed il mio problema risulta quando devo selezionare il record da modificare in quanto continuo ad ottenere,e quindi credo sia un problema del link che ho utilizzato per il tasto,in quanto ottengo in uscita la pagina con la variabile" modifica2.php?id=$id" e non il record scelto,ovvero "/modifica2.php?id=3"...vi posto il codice sperando mi possiate aiutare:

    [php]<?PHP

    $host="localhost"; // Host name
    $username="root"; // Mysql username
    $password="xxxxxx"; // Mysql password
    $db_name="offerte"; // Database nome
    $tbl_offerta="offerta"; // Tabella nome

    // Mi collego al database
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");

    //Query di inserimento

    $sql = "SELECT * FROM offerta ORDER BY id";
    $result = mysql_query($sql) or die(mysql_error());

    if(mysql_num_rows($result) > 0){
    while($row = mysql_fetch_assoc($result)){
    $id=$row['id'];

    echo'</p>
    <p> </p>
    <table width="200" border="0" align="center">
    <tr>
    <td width="65">ID:</td>
    <td colspan="2">'.htmlentities($row['id']).'</td>
    </tr>
    <tr>
    <td>TITOLO</td>
    <td colspan="2"><form id="form2" name="form2" method="post" action="">
    <label>
    <input name="titolo" type="text" id="titolo" value="'.htmlentities($row['titolo']).'" />
    </label>
    </form>
    </td>
    </tr>
    <tr>
    <td>NEWS:</td>
    <td colspan="2"><form id="form3" name="form3" method="post" action="">
    <label>
    <input name="news" type="text" id="news" value="'.strtoupper($row['news']).'" />
    </label>
    </form>
    </td>
    </tr>
    <tr>
    <td>FOTO:</td>
    <td colspan="2"><form id="form4" name="form4" method="post" action="">
    <label>
    <input name="foto" type="text" id="foto" value="'.htmlentities($row['foto']).'" />
    </label>
    </form>
    </td>
    </tr>
    <tr>
    <td>Operazioni</td>
    <td width="73"><a href="cancella.php?id=$link">elimina</a></td>
    <td width="82"><a href="modifica2.php?id=$id">Modifica</a>
    </tr>
    </table>
    ';
    }
    }else{
    echo'<table width="500" border="0" align="center">
    <tr>
    <td>Attualmente nessuna news</td>
    </tr>
    </table>';

    }

    ?>[/php]

    Attendo un vostro aiuto e vi ringrazio anticipatamente


  • User Attivo

    Prova ad invertire gli apici da "esempio" ad 'esempio' in tutto il codice html ed apri l'echo con i doppi apici.
    Non sò cos'altro possa essere. Il codice stà bene per quanto possa vadere

    CIAO


  • Consiglio Direttivo

    Buonasera ragazzi. 🙂

    Effettivamente il problema sorge proprio per il motivo indicato da mikslap, mi permetto una specifica del perché succede.

    Le variabili indicate tra apici ('$var') vengono trattate come stringhe e non per quello che sono. Scrivere: echo '$var'; restituirà $var e non il suo valore.
    Differente l'utilizzo dei doppi apici. Scrivendo: echo "$var"; otterrò l'esatto contenuto della variabile.

    [php]$var="benvenuto";

    echo 'un $var a pepputara'; // darà come output: un $var a pepputara

    echo "un $var a pepputara"; // darà come output: un benvenuto a pepputara[/php]Diciamo che per portabilità, pulizia di codice e una più facile modifica/verifica del codice è sempre consigliabile prendere la buona abitudine di richiamare le variabili fuori dagli spazi dedicati alle stringhe:
    [php]$var="benvenuto";

    echo 'un'.$var.' a pepputara'; // darà come output: un benvenuto a pepputara

    echo "un".$var." a pepputara"; // darà come output: un benvenuto a pepputara[/php]Utilizzando questo sistema avrai meno preoccupazioni (ndr: rogne :giggle:) sull'uso degli apici o doppi apici.

    Spero ti sia utile. 😉


  • User Newbie

    Grazie Samyon per la perfetta spiegazione..l'unica cosa,per richiamare le variabili fuori dagli apici vengono usati sempre due punti oppure vi sono altri modi?...un saluto e ancora grazie


  • Consiglio Direttivo

    Per quel che so io (e non sono un esperto di PHP intendiamoci :2: la distinzione viene fatta proprio attraverso i punti, ad esempio potresti trovare anche casi del genere:
    [php]echo $var1.$var2;

    echo 'testo'.$var;[/php]E via discorrendo. 😉

    Mi permetto un consiglio dato che nel tuo echo c'è molto più html che richiamo al php, anche per non incasinarti con l'utilizzo degli apici/doppi apici. Ogni volta che vuoi puoi interrompere l'interprete PHP (?>) e riaprirlo quando vuoi (<?php), cosa da non sottovalutare per avere un codice pulito e leggibile.
    Personalmente avrei fatto il tutto così:
    [php]<?php
    ..................
    ..................
    if(mysql_num_rows($result) > 0){
    while($row = mysql_fetch_assoc($result)){
    $id=$row['id'];
    ?>
    </p>
    <p> </p>
    <table width="200" border="0" align="center">
    <tr>
    <td width="65">ID:</td>
    <td colspan="2"><? echo htmlentities($row['id']); ?></td>
    </tr>
    <tr>
    <td>TITOLO</td>
    <td colspan="2"><form id="form2" name="form2" method="post" action="">
    <label>
    <input name="titolo" type="text" id="titolo" value="<? echo htmlentities($row['titolo']); ?>" />
    </label>
    </form>
    </td>
    </tr>
    <tr>
    <td>NEWS:</td>
    <td colspan="2"><form id="form3" name="form3" method="post" action="">
    <label>
    <input name="news" type="text" id="news" value="<? echo strtoupper($row['news']); ?>" />
    </label>
    </form>
    </td>
    </tr>
    <tr>
    <td>FOTO:</td>
    <td colspan="2"><form id="form4" name="form4" method="post" action="">
    <label>
    <input name="foto" type="text" id="foto" value="<? echo htmlentities($row['foto']); ?>" />
    </label>
    </form>
    </td>
    </tr>
    <tr>
    <td>Operazioni</td>
    <td width="73"><a href="cancella.php?id=<? echo $link; ?>">elimina</a></td>
    <td width="82"><a href="modifica2.php?id=<? echo $id; ?>">Modifica</a>
    </tr>
    </table>
    <?php
    }
    }
    else
    {
    ?>
    <table width="500" border="0" align="center">
    <tr>
    <td>Attualmente nessuna news</td>
    </tr>
    </table>
    <?php
    }
    ?>[/php]Utilizzando un editor con highlighting vedrai che ti risulterà di miglior lettura in questo modo. 😉


  • User Attivo

    @pepputara said:

    Grazie Samyon per la perfetta spiegazione..l'unica cosa,per richiamare le variabili fuori dagli apici vengono usati sempre due punti oppure vi sono altri modi?...un saluto e ancora grazie

    Le variabili, una volta definite, vanno bene sia con i punti che senza.
    Es.:

    echo "Testo $var1 $var2"; // TUTTO INCLUSO NEGLI APICI

    echo "Testo " . $var1 . " " . $var2; // FUORI DAGLI APICI