• Super User

    select by query mysql

    Ciao a tutti. Ecco una piccola difficoltà che ho incontrato, che ricordo di aver risolto in passato, ma adesso riemerge.
    Ecco il caso.

    Inserimento articoli in database così formato


    id | nome | categoria

    123 | casa | 2

    124 | libro | 5

    Quando inserisco ok, non c'è problema. Quando vado a modificare l'articolo, invece, mettiamo il caso che vorrei passare l'id '123' e quindi 'casa' da categoria '2' a '3' tramite una select. Come potrei fare?


  • ModSenior

    UPDATE tabella SET categoria = '3' WHERE id = '123'
    la query dovrebbe essere cosi...


  • Super User

    Forse mi sono spiegato male. So come fare le query. Faccio un esempio:

    [PHP]
    $modifica = mysql_query("SELECT * FROM primo WHERE id = $id LIMIT 1");
    if (@mysql_num_rows($modifica) == 1) {
    echo '
    <form name="modifica" method="post" action="./modarticolo.php">
    <table width="100%">
    <tr><td><font class="articolo">ID:</font></td><td><input name="id" size="5" class="articolo" readonly="readonly" value="' .mysql_result($modifica,$a,'id') .'"></td></tr>
    <tr><td><font class="articolo">Titolo:</font></td><td> <input name="titolo" class="articolo" size="70" value="' .mysql_result($modifica,$a,'titolo') .'"></td></tr>
    <tr><td><font class="articolo">Categoria:</font></td><td> <input name="sottotitolo" size="70" class="articolo" value="' .mysql_result($modifica,$a,'categoria') .'"></td></tr>
    ';

                    if (mysql_result($modifica,$a,'categoria')=="1") { 
              echo '
                 <option SELECTED value="1">Auto</option>
                     <option value="2">Moto</option>
               <option value="3">Casa</option>
              ';
    
    
                    if (mysql_result($modifica,$a,'categoria')=="2") { 
              echo '
                 <option value="1">Auto</option>
                     <option SELECTED value="2">Moto</option>
               <option value="3">Casa</option>
              ';
                  }
    

    [/PHP]
    etc...
    Esiste un altro modo più semplice di fare ciò senza andare a fare il confronto per ogni tipo di categoria presente?, anche perchè esiste un'altra tabella che si chiama 'categoria', quindi prendo la lista da li


  • ModSenior

    Scusa stable forse ho capito male io.. ma non potresti usare un ciclo while caricando tutte le categorie nella select e controllare -per il selected- soltanto all'interno del ciclo in questo modo

    [php]
    while($obj = mysql_fetch_array($result))
    {
    $txt = '<option value="%d" %s>%s</option>';
    if ($obj['id_categoria'] == $id_categoria_che_stai_modificando)
    {
    $option = sprintf($txt, $obj['id_categoria'], 'selected', $obj['categoria'];
    }
    else
    {
    $option = sprintf($txt, $obj['id_categoria'], '', $obj['categoria'];
    }
    print $option;
    }
    [/php]


  • Super User

    Ciao mister.jinx, ti ringrazio per il contributo ma sinceramente non lo so adattare al mio esempio pratico...
    sapresti darmi una mano in tal senso?