Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    48

    aggiunta campo e interazione con php

    Ciao a tutti! Ho creato una pagina php in cui, ad ogni pressione del bottone, viene richiamata una funzione in javascript che mi aggiunge una riga con un menu a tendina.
    Se l'utente seleziona una voce dal menu a tendina e in seguito clicca sul bottone per aggiungere una nuova riga viene aggiunta una nuova riga con un menu a tendina, ma la voce selezionata in precedenza deve rimanere uguale. Per esempio se seleziono 3 in un menu a tendina, quando clicco sul bottone "inserisci" (per aggiungere un'altra riga) il numero 3 deve rimanere selezionato.
    Vi posto il codice non funzionante:
    Codice PHP:
    <html>
    <head>
    <script type="text/javascript">
        var arrInput = new Array(0);
        var arrInputValue = new Array(0);
        
        function add() { 
          arrInput.push(arrInput.length);
          arrInputValue.push("");
          display();
        }

        function display() {
          document.getElementById('prova').innerHTML="";
          for (intI=0;intI<arrInput.length;intI++) {
            document.getElementById('prova').innerHTML+=createInput(arrInput[intI], arrInputValue[intI]);
          }
        }

        function saveValue(intId,strValue) {
          arrInputValue[intId]=strValue;
        }

        function createInput(id,value) {
          return "<select name='prova"+ id +"' size='1' onChange='javascript:saveValue("+ id +",this.value)'><?php for($i=0;$i<=4;$i++){?><option value='<?php echo $i;?><?php if($i==?>"+ value +"<?php){ ?>selected='selected'<?php }?>><?php echo $i;?></option><?php }?></select>
    ";
        }

    </script>

    </head>
    <body>
    <form action="prova.php" method="post">

    <div id="prova"></div>


    <button onclick="javascript:add()">Inserisci</button>



    <input type="submit" name="cerca" value="cerca">
    </form>
    </body>
    </html>
    Qualcuno mi può aiutare? Non riesco a richiamare la variabile "value" in php!

  2. #2
    Utente di HTML.it L'avatar di joker06
    Registrato dal
    Dec 2006
    Messaggi
    782
    scusa ma x variabile indichi il campo submit?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    48
    No, mi riferivo all'if, voglio confrontare "i" e "value", ma mi da errore.

    Codice PHP:
    <?php if($i==?>"+ value +"<?php){ ?>selected='selected'<?php }?>

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    48
    up

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    48
    Vi prego, qualcuno mi può aiutare? Come faccio a recuperare il valore di value all'interno dell'if?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    48
    Ho provato anche così,ma niente:
    Codice PHP:
    <option value='<?php echo $i;?>' "+ if ( <?php echo $i;?> ==value ){ +" selected='selected' "+ } +"><?php echo $i;?></option>

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    innerHTML non e' buona cosa per fare quello che vuoi fare:
    ad ogni aggiunta tu sovrascrivi brutalmente il contenuto dell' intero contenitore
    rendendo piu' complesso del necessario il rilevamento e il settaggio delle opzioni precedentemente selezionate

    crea e appendi select e option con i metodi del DOM, createElement e appendChild
    http://javascript.html.it/guide/lezi...del-documento/
    cosi' il problema lo aggiri a monte
    o addirittura clona un' intera select

    inoltre tu usi php per scrivere in un js che a sua volta scrive cose che ad intuito andrebbero nel normale xhtml
    (le select di partenza)
    senza questo giro i dati presenti almeno nelle select di base restano accessibili, (potrebbe non servirti nel caso specifico ma...) ai motori e a javascript disabilitato

    un esempio di manipolazione con elementi di form la trovi per esempio qui
    http://forum.html.it/forum/showthrea...hreadid=848168
    anche se non vengono usate select il concetto e' identico

    ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    48
    Grazie mille! Ho solo un problema: nel menu a tendina non riesco a recuperare tutti i record di una tabella del db, recupero solo l'ultimo.
    Ho fatto così:
    Codice PHP:
    <html> 
    <?php
    require_once('connessione.php');
    ?>
    <head> 
    <script language="JavaScript" type="text/javascript">
    var num=0;
    function accoda(){
        if(document.createElement && document.getElementById && document.getElementsByTagName) {
            // crea elementi
            var oTr=document.createElement("TR");
            var oTd=document.createElement("TD");
            var oTd1=document.createElement("TD");
            var oField=document.createElement("SELECT");
            var oField2=document.createElement("OPTION");
            var oButt=document.createElement("INPUT");

            // setta attributi
              oField.setAttribute("name","tipo"+num);
            <?php 
            $sql
    ="select * from tipo";
            
    $ris=mysql_query($sql,$connessione);
            while(
    $row=mysql_fetch_array($ris))
            {
            
    ?>
            oField2.setAttribute("value","<?php echo $row['id'];?>");
            txt8 = document.createTextNode("<?php echo $row['tipo'];?>");
            <?php
            
    }
            
    ?>
            oButt.setAttribute("type","button");
            oButt.setAttribute("value","rimuovi");

            // setta gestore evento
            if(oButt.attachEvent) oButt.attachEvent('onclick',function(e){rimuovi(e);})
            else if(oButt.addEventListener) oButt.addEventListener('click',function(e){rimuovi(e);},false)

            // appendi al relativo padre
            oTd.appendChild(oField);
            oField2.appendChild(txt8);
            oField.appendChild(oField2);
            oTd1.appendChild(oButt);
            oTr.appendChild(oTd);
            oTr.appendChild(oTd1);
            document.getElementById('tabella').getElementsByTagName('TBODY')[0].appendChild(oTr);

            // incrementa variabile globale
            num++
        }
    }


    function rimuovi(e){
        if(document.removeChild && document.getElementById && document.getElementsByTagName) {
            if(!e) e=window.event;
            var srg=(e.target)?e.target:e.srcElement;

            // risali al tr del td che contiene l' elemento che ha scatenato l' evento
            while(srg.tagName!="TR"){srg=(srg.parentNode)?srg.parentNode:srg.parentElement}

            // riferimento al tbody
            var tb=document.getElementById('tabella').getElementsByTagName('TBODY')[0];
            
            // rimuovi
            tb.removeChild(srg);
        }
    }
    //-->
    </script>

    </head> 
    <body> 
    <form action="prova.php" method="post"> 
    <table id="tabella">
    <tbody>
    <tr>
    <td>
    <select name="tipo">
    <?php
    $sql
    ="select * from tipo";
    $ris=mysql_query($sql,$connessione);
    while(
    $row=mysql_fetch_array($ris))
    {
    ?>
    <option value="<?php echo $row['id'];?>"><?php echo $row['tipo'];?></option>
    <?php
    }
    ?>
    </td>
    </tr>
    </tbody>
    </table>

     
    <input type="button" onclick="accoda()" value="inserisci"/>
    </form> 
    </body> 
    </html>
    Come posso fare per risolvere?

  9. #9
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da kappa82
    non riesco a recuperare tutti i record di una tabella del db, recupero solo l'ultimo.
    e ci credo, crei una sola option!
    nel ciclo while devi:
    - creare un option, con un nome variabile che cambi (
    var oFieldValoreSempreDiversoQui=document.createElemen t("OPTION");
    )
    - settarne il value
    - creare il nodo di testo e appenderlo all' option
    - appendere il tutto alla select

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    48
    Grazie, chissà dove avevo la testa! Sarà stata la fame!
    Ciao!

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.