Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Aiuto codice PHP.4

  1. #1

    Aiuto codice PHP.4

    Salve, qualcuno sa spiegarmi perché con questo codice, passando la variabile $nome con un pulsante nascosto invece di passare il valore selezionato dal menù a tendina, mi passa sempre l'ultimo elemento che compone il menù?

    Codice PHP:
    <?php
    include("test_connection.php"); 
    $sql "SELECT * FROM personale"
    $risultati mysql_query($sql,$connessione); 
    $num_righe mysql_num_rows($risultati); 
    if(
    $num_righe == 0) { 
    echo 
    "Spiacente, non ci sono record nella tabella 'personale'"
    } else { 
    echo 
    "<form method=GET action='join_2.php'>"
    echo 
    "Seleziona una persona dal menù: "
    echo 
    "<select name='ID_record'>"
    while(
    $riga mysql_fetch_array($risultati)) { 
    $nome $riga['nome']; 
    $ID $riga['ID'];
    echo 
    "<option value='$ID'>$nome";

    echo 
    "</select>

    "

    echo 
    "Seleziona un hobby dall'elenco: "
    echo 
    "<select name='hobby_ins'> 
    <option>Teatro
    <option>Tennis
    </select>

    "


    # echo $nome; 
    echo "

    <input type='hidden' name='nome' value='
    $nome'>";
    echo 
    "<input type='submit' value='Inserisci Hobby'>";
    echo 
    "<input type='reset' value='Cancella!'>";
    echo 
    "</form>";
    mysql_close($connessione);
    ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    guarda il sorgente generato: il campo hidden è valorizzato con l'ultimo elemento del menu a tendina... se vuoi recuperare il valore della SELECT devi leggere il campo 'ID_record'

  3. #3
    Ho provato infatti, ma ID_record mi restistuisce un numero e non il nome del menù.
    Non capisco...

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    perchè i tag OPTION non hanno un attributo value, dovresti avere per ciascuna opzione qualcosa come:

    codice:
    <option value="Teatro">Teatro</option>
    (chiudendo anche il tag!)

  5. #5
    perche' l'input hidden e' fuori dal ciclo while e quindi ti dara' soltanto l'ultimo inserito.

    Dovrebbe essere il value del select

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Gusto, ma se a me servono entrambi? Cioè sia l'ID che il Nome vero e proprio, come li recupero sempre mantenendo un menu del genere?
    Se io sostituisco 'value = $ID' con 'value=$nome' il select mi passa il nome vero e proprio s $ID_record, ma perdo l'ID che mi serve per inserire il dato nella tabella.
    Infatti me li inserisce tutti con ID = 0
    Io avrei bisogno dell ID per l'inserimento del record e per il recupero dei dati, in una terza pagina, dove mostro tutti gli HOBBY relativi a quel NOME con la query:
    codice:
    "SELECT hobby,nome FROM personale,passatempi WHERE personale.ID=ID_nome AND ID='$ID_record'"
    Ma nella seconda pagina mi serve il nome per mostrarlo con un pulsante tipo: "controlla gli hobby di $nome".

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non ho ben capito... cmq se per una selezione ti servono due valori puoi passarli in due campi o unendoli, p.es.:

    codice:
    <option value="key|value">VALUE</option>
    che poi in php recuperi con:
    Codice PHP:
    list($key$value) = explode('|'$_POST['nomecampo']); 

  8. #8
    Originariamente inviato da caramelleamare
    Gusto, ma se a me servono entrambi? Cioè sia l'ID che il Nome vero e proprio, come li recupero sempre mantenendo un menu del genere?
    Se io sostituisco 'value = $ID' con 'value=$nome' il select mi passa il nome vero e proprio s $ID_record, ma perdo l'ID che mi serve per inserire il dato nella tabella.
    Infatti me li inserisce tutti con ID = 0
    Io avrei bisogno dell ID per l'inserimento del record e per il recupero dei dati, in una terza pagina, dove mostro tutti gli HOBBY relativi a quel NOME con la query:
    codice:
    "SELECT hobby,nome FROM personale,passatempi WHERE personale.ID=ID_nome AND ID='$ID_record'"
    Ma nella seconda pagina mi serve il nome per mostrarlo con un pulsante tipo: "controlla gli hobby di $nome".
    l'id del record serve proprio ad identificare il record in modo univoco. Piuttosto la tua e' una inner join senza riferimento tra tabelle. la query teoricamente dovrebbe essere:

    codice:
    SELECT hobby,nome 
    FROM personale,passatempi 
    WHERE personale.ID=passatempi.ID 
    AND ID='$ID_record' //oppure il nome 
    ma non si capisce "cosa" vorresti fare ... dato un nome in una select con value = ID e dato in altra select un hobby (perche' non estrai dal db gli hobby disponibili?) dovrebbe essere l'associazione tab1.id = tab2.id AND tab2.hobby = '$hobby'

    ma siccome tu avresti una relazione molti a molti su due tabelle ecco che ti manca la relazione di unione tra la tabella personale e tabella passatempi. Mi spiego meglio: sicuramente ogni persona potra' avere piu' hobbies e gli gli stessi hobbies potranno essere a loro volta scelti da piu' persone. Ti serve una tabella che "unisca" le scelte tra le due tabelle.

    tab1 = nomi
    tab2 = hobbies
    tab3 = id_nome, id_hobby

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Intanto premetto che sto studiando PHP da solo due mesi senza aver mai avuto a che fare con la programmazione e questo che sto facendo è un esercizio.

    l'id del record serve proprio ad identificare il record in modo univoco.
    Ok, e essendo il 'name' del select assume valore numerico se value=ID oppure stringa se value=$nome.

    ma non si capisce "cosa" vorresti fare
    Allora, ho due tabelle solamente:
    1) personale - che contiene i campi 'ID' e 'nome' ed altri
    2) passatempi - con campi 'ID_nome(numerico univoco)' ed 'hobby' che viene via via aggiornata con le selezioni dal menù select.

    Cosa vorrei fare:
    Pagina1 - form di selezione(name=ID_record) con i nomi di 'personale' e una serie di hobby(inseriti da codice perché è solo uno studio).
    Pagina2 - inserisco le due coppie key-value nella tabella 'passatempi' in modo che l'ID_nome=ID con la query
    Codice PHP:
    $sql "INSERT INTO passatempi(ID_nome,hobby) VALUES('$ID_record','$hobby_ins')"
    creo pulsante di navigazione verso la terza pagina e nel testo voglio visualizzare il 'nome' al quale è stato aggiunto un hobby(quindi mi serve anche 'nome' oltre a 'ID').
    Pagina3 - Visualizzazione del nome che corrisponde all'ID(e quindi anche a ID_nome) ed i suoi vari hobby.

    Il mio problema è che se con select-name passo value=ID mi manca il nome nella seconda pagina, se invece passo value=nome, nella tabella personale i record vengono inseriti tutti con ID_nome=0, quindi perdo la funzione di collegamento fra gli ID delle due tabelle.
    Devo aggiungere una query su pagina2 e recuperare 'nome'?

    Pagina2 ('$nome' stampa l'ultimo nominativo del menu select di pagina1)
    Codice PHP:
    $ID_record $_GET['ID_record'];
    $hobby_ins $_GET['hobby_ins'];
    $nome $_GET['nome'];
    include(
    "test_connection.php");
    $sql_2 "SELECT * FROM passatempi WHERE ID_nome='$ID_record' AND hobby='$hobby_ins'";
    $risultati mysql_query($sql_2,$connessione);
    $num_righe mysql_num_rows($risultati);
    if(
    $num_righe == 0) {
    echo 
    "Nessun doppione trovato: 
    "
    ;
    $sql "INSERT INTO passatempi(ID_nome,hobby) VALUES('$ID_record','$hobby_ins')";
    if(!
    mysql_query($sql,$connessione)) {
    echo 
    "Errore, non posso connettermi al database
    "
    ;
    echo 
    "
    <hr>
    [url='join.php']Indietro[/url]"
    ;
    exit;
    } else {
    echo 
    "Tabella aggiornata:[" .mysql_affected_rows() ."] record inserito
    "
    ;
    }
    } else {
    echo 
    "Record già esistente!";
    echo 
    "
    <hr>
    [url='join.php']Indietro[/url]"
    ;
    exit;
    }
    echo 
    "
    Se vuoi vedere tutti gli altri hobby di [b]
    $nome[/b] clicca sotto:
    "
    ;
    echo 
    "
    <form method=GET action='join_show.php'>
    <input type='hidden' name='ID_record' value='
    $ID_record'>
    <input type='submit' value='Controlla gli Hobby!'>
    </form>"

    Pagina3 ('$nome' stampa correttamente il nome selezionato dal menu di pagina1)
    Codice PHP:
    include("test_connection.php");
    $ID_record $_GET['ID_record'];
    $sql "SELECT hobby,nome FROM personale,passatempi WHERE personale.ID=ID_nome AND ID='$ID_record'";
    $risultati mysql_query($sql,$connessione);
    $num_righe mysql_num_rows($risultati);
    if(
    $num_righe == 0) {
    echo 
    "Spiacente, non trovo informazioni";
    exit;
    } else {
    echo 
    "<table border=1 bgcolor='#CCDDDD'><tr><th> Hobby </th></tr>";
    while(
    $riga mysql_fetch_array($risultati)) {
    $nome $riga['nome'];
    $hobby $riga['hobby'];
    echo 
    "<tr align=center><td> $hobby </td></tr>";
    }
    echo 
    "</table>";
    echo 
    "
    <table border=1><tr><th> Nome </td></tr> <tr><td> 
    $nome </td></tr>";
    echo 
    "</table>";


  10. #10
    ...fino ad adesso c'era un BAD GATEWAY 502

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.