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

    menu tendina modifica dati su database

    Ciao a tutti, chiedo gentilmente qualche suggerimento in quanto sono bloccato....
    il mio obbiettivo:
    1) visualizzo i dati recuperati da tabella 'school' in DB MySQL = OK
    2) click sul pulsante modifica vicino ad ogni riga = OK
    3) passo il valore selezionato a nuova pagina 'modifica.php' con tutti i parametri che mi interessano = OK (ogni tupla viene visualizzata correttamente, ogni cella del DB viene inserita nella propria input type="text") = OK
    4) modificare i dati nelle singole celle e scriverli nuovamente nel DB = OK

    sarebbe tutto OK se l'utente scrive liberamente il testo nelle celle, quando invia il contenuto della form viene correttamente salvato nel DB.

    Io vorrei però che nella pagina 'modifica.php' i dati fossero presentati in base a menu a tendina che recuperano le informazioni da altre tabelle nel DB; ovvero vicino al dato passato come parametro comparisse il relativo menu per la selezione di eventuale dato nuovo da modificare ed inviare al DB.

    esempio di pagina 'modifica.php' desiderata:
    +-----------------------+-----------------------+
    |__'valore attuale' __|__'menu valori' ___|
    +------------------------|----------------------- |
    |________X______|"tendina per scelta"_|
    +------------------------|----------------------- |

    il valore che l'utente seleziona in "tendina per scelta" dovrebbe essere passato alla pagina che poi scrive i dati in DB. (come detto la terza pagina 'modifica_dati.php' - per scrivere- funziona già).

    il codice che ho scritto è :

    'tabella.php'


    codice:
    <?php
    $leggi=mysql_query("SELECT * FROM student"); 
    ?>
    <table >
    <th>
    ...
    </th>
    <?php
      while($tempbox=mysql_fetch_array($leggi)){ 
        $id=$tempbox['id']; 
        $titolo=$tempbox['nomebiblio']; 
        $tipo=$tempbox['tipo']; 
        $autore=$tempbox['utente']; 
        $contatore=$tempbox['contatore']; 
    //visualizza la tabella dei dati di 'student'
    echo "
        <tr>
          <td>
              $id
            </td>
            <td>
              $tipo 
            </td> 
            <td>
              $titolo
            </td> 
            <td>
              $contatore
            </td> 
            <td>
        <a href=modifica.php?contatore=$contatore;>modifica</a>
            </td>
    </tr>   "; 
    } 
      ?> 
    </table>
    'modifica.php'

    codice:
    <?php 
    include('connect.php'); 
    
    echo ' 
    
    <h1>Modifica questo record</h1></br> 
    '; 
    $sql = "SELECT * FROM student WHERE contatore='$_GET[contatore]'"; 
    $res = mysql_query($sql, $connessione); 
    $row = mysql_fetch_array($res); 
     if (@mysql_query($sql)){ 
    echo ' 
    <form action="modifica_dati.php" method="POST">  
    nomebiblio:
     
    <input type="text" maxlength="20" name="nomebiblio" value="' . $row['nomebiblio'] . '" />
    
    
     
    tipo:
     
    <input type="text" maxlength="15" name="tipo" value="' . $row['tipo'] . '"/>
    
     
    utente:
     
    <input type="text" maxlength="15" name="utente" value="' . $row['utente'] . '"/>
    
     
    Nr record:
     
    <input type="text" maxlength="15" name="id" value="' . $row['id'] . '"/>
    
     
    <input type="submit" value="modifica" /> 
    </form> 
    '; 
    } 
    else { 
    echo "Errore: Non posso eseguire la modifica!"; 
    } 
    ?>
    fino a qui andrebbe tutto bene....
    io voglio inserire il menu a tendina vicino ad ogni <input ..... />
    il codice ad esempio per creare il menu relativo al campo 'nomebiblio' sarebbe:

    codice:
    $nomeBib = mysql_query('SELECT nomebiblio FROM biblioteche', $connessione);
    
    while ($riga = mysql_fetch_array($rs))
    {
    echo "<option value='$riga[nomebiblio]'>\r";
    echo $riga['nomebiblio'];
    echo "</option>\r";
    }
    ma qui mi perdo completamente.....
    qualcuno può darmi qualche dritta gentilmente
    grazie in anticipo
    RM

  2. #2
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao, potresti fare questo

    Codice PHP:
    $nomeBib mysql_query('SELECT idbiblio,nomebiblio FROM biblioteche'$connessione); //immagino tu abbia un idbiblio che identifica numericamente il record di ogni nome biblioteca
    echo "<select name='selectbiblio'>";
    while (
    $riga mysql_fetch_array($rs))
    {
    echo 
    "<option value='".$riga["idbiblio"]."'>\r";
    echo 
    $riga['nomebiblio'];
    echo 
    "</option>\r";
    }
    echo 
    "</select>"
    Quindi una volta creatasi la select, nella pagina modifica_dati.php ti troverai un $_POST["selectbiblio"] che al suo interno avrà l'idbiblio della biblioteca scelta dall'utente. A questo punto ti viene molto semplice conservarti questa informazione in db, con una normale query di insert. Inoltre così colleghi il tutto attraverso le chiavi esterne, come un normale relazione uno a molti o molti a molti, senza usare ogni volta il nome dell'attributo.

  3. #3
    grazie per la risposta.
    ho dovuto modificare leggermente il codice in quanto mi visualizzava il menu completamente vuoto, ma ora funziona (parzialmente)

    Codice PHP:
    $query="SELECT * FROM biblioteche";
    $result mysql_query ($query);
    echo 
    "<select name=nomebiblio value=''>nomebiblio</option>";
    while(
    $nt=mysql_fetch_array($result)){
    echo 
    "<option value=$nt[nomebiblio]>$nt[nomebiblio]</option>";
    }
    echo 
    "</select>"
    mi fa vedere il menu corretto, ma quando invio il contenuto della pagina mi scrive un valore VUOTO nel DB, e scompare il riferimento alla biblioteca appunto

    il tag form è :

    codice:
    <form method="POST" action="modifica_dati.php">
    la variabile in 'modifica_dati.php' è :

    Codice PHP:
    $nomebiblio $_POST["selectbiblio"]; 
    la parte sql è :

    Codice PHP:
    $sql"UPDATE student SET nomebiblio='$nomebiblio', tipo='$tipo', utente='$utente' WHERE id='$id' "
    mysql_query($sql); 
    temo di sbagliare ancora qualcosa.... credo che sia legato a dove metto la parte di codice di $query="SELECT * FROM biblioteche";
    si trova in 'modifica.php' ma non riesco proprio a metterla all'interno di
    Codice PHP:
     if (@mysql_query($sql)){ 
    echo 

    <form action="modifica_dati.php" method="POST">  
    nomebiblio:
     
    <input type="text" maxlength="20" name="nomebiblio" value="' 
    $row['nomebiblio'] . '" />


     
    tipo:
     
    <input type="text" maxlength="15" name="tipo" value="' 
    $row['tipo'] . '"/>

     
    utente:
     
    <input type="text" maxlength="15" name="utente" value="' 
    $row['utente'] . '"/>

     
    Nr record:
     
    <input type="text" maxlength="15" name="id" value="' 
    $row['id'] . '"/>

     
    <input type="submit" value="modifica" /> 
    </form> 
    '

    se la metto fuori come detto prima mi cancella il dato nel DB...
    grazie

  4. #4
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    probabilmente dal codice che hai postato è un problema di virgolette...
    Codice PHP:
    $query="SELECT * FROM biblioteche";
    $result mysql_query ($query);
    echo 
    "<select name=nomebiblio value=''>nomebiblio</option>";
    while(
    $nt=mysql_fetch_array($result)){
    //echo "<option value=$nt[nomebiblio]>$nt[nomebiblio]</option>"; ** devi inserire le virgolette nel value
    echo "<option value='".$nt["nomebiblio"]."'>".$nt["nomebiblio"]."</option>";
    }
    echo 
    "</select>"
    Prova pure a fare dei controlli sulla query...magari riestituisce un recordo vuoto già all'inizio.

  5. #5
    grazie, purtroppo non cambia nulla.... sempre inserimento VUOTO nel DB.
    Posto tutta la pagine in quanto so di aver castronato :


    Codice PHP:
    <html>
    <body>
    <head>
    </head>
    <form method="POST" action="modifica_dati.php">
    <?php 
    $nomeutente 
    $_SESSION['nomeutente'];
    // CONNESSIONE AL DATABASE 
    include('connect.php'); 

    $query="SELECT * FROM biblioteche"
    $result mysql_query ($query); 
    echo 
    "<select name=nomebiblio value=''>nomebiblio</option>"
    while(
    $nt=mysql_fetch_array($result)){ 
    //echo "<option value=$nt[nomebiblio]>$nt[nomebiblio]</option>"; ** devi inserire le virgolette nel value 
    echo "<option value='".$nt["nomebiblio"]."'>$nt[nomebiblio]</option>"

    echo 
    "</select>";

    ?>
    </form> 
    <?php
    echo 
    <h1>Modifica questo record</h1></br> '

    $sql "SELECT * FROM student WHERE contatore='$_GET[contatore]'"
    $res mysql_query($sql$connessione); 
    $row mysql_fetch_array($res); 
     if (@
    mysql_query($sql)){ 
    echo 

    <form action="modifica_dati.php" method="POST">  
    nomebiblio:
     
    <input type="text" maxlength="20" name="nomebiblio" value="' 
    $row['nomebiblio'] . '" />


     

    tipo:
     
    <input type="text" maxlength="15" name="tipo" value="' 
    $row['tipo'] . '"/>

     
    utente:
     
    <input type="text" maxlength="15" name="utente" value="' 
    $row['utente'] . '"/>

     
    Nr record:
     
    <input type="text" maxlength="15" name="id" value="' 
    $row['id'] . '"/>


     


    <input type="submit" value="modifica" /> 
    </form> '


    else { 
    echo 
    "Errore: Non posso eseguire la modifica!"

    ?>  
    </select>
    </body>
    </html>

  6. #6
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Codice PHP:
    <html>
    <head>
    </head>
    <body>
    <?php 
    $nomeutente 
    $_SESSION['nomeutente'];
    // CONNESSIONE AL DATABASE 
    include('connect.php'); 

    echo 

    <h1>Modifica questo record</h1></br> '

    $sql "SELECT * FROM student WHERE contatore='$_GET[contatore]'"
    $res mysql_query($sql$connessione); 
    $row mysql_fetch_array($res); 
     if (@
    mysql_query($sql)){ 
    echo 

    <form action="modifica_dati.php" method="POST">  
    nomebiblio:
     
    <input type="text" maxlength="20" name="nomebiblio" value="' 
    $row['nomebiblio'] . '" />


     '
    ;

    //***************** Creazione della select con le biblioteche *******************
    $query="SELECT * FROM biblioteche"
    $result mysql_query ($query); 
    echo 
    "<select name=nomebiblio value=''>nomebiblio</option>"
    while(
    $nt=mysql_fetch_array($result)){ 
    echo 
    "<option value='".$nt["nomebiblio"]."'>$nt[nomebiblio]</option>"

    echo 
    "</select>";
    //******************************************************************

    echo 'tipo:
     
    <input type="text" maxlength="15" name="tipo" value="' 
    $row['tipo'] . '"/>

     
    utente:
     
    <input type="text" maxlength="15" name="utente" value="' 
    $row['utente'] . '"/>

     
    Nr record:
     
    <input type="text" maxlength="15" name="id" value="' 
    $row['id'] . '"/>


    <input type="submit" value="modifica" /> 
    </form> '


    else { 
    echo 
    "Errore: Non posso eseguire la modifica!"

    ?>  
    </select>
    </body>
    </html>
    C'erano parecchi errori di logica ti creavi due form che puntavo alla stessa pagina di modifica, di cui il primo, proprio quello che conteneva i dati delle biblioteche, non veniva mai passato, visto che il submit button era solo all'interno del secondo form dove c'erano tutti gli input.

  7. #7
    grazie per l'aiuto, sto imparando il PHP .....
    il fatto è che scrive ancora VUOTO....

  8. #8
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ma la select viene popolata con i campi?

  9. #9
    Si entrambe le SELECT sono corrette;
    nel frattempo ho risolto, non creavo da nessuna parte nella pagina 'modifica.php' la variabile $contatore.
    Grazie 1000 per l'aiuto

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.