Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    36

    Dropdown Multiplo da MySQL

    Salve ragazzi!
    ho un problema di questo tipo,
    nella mia applicazione PHP ho la necessità di creare due campi che si comportano in questo modo:

    Campo 1: Cliente (Prende i dati dalla campo client_id dalla tabella apparecchi)
    Campo 2: Apparecchio (Prende i dati dai campi Marca, Modello, dalla tabella Apparecchi) [Utilizzo la funzione sanitize per formattare il campo]

    Funzionamento:
    quando il campo 1 è selezionato su "Mario Rossi" ad esempio (Questi dati ovviamente li prende dal database e questo funziona senza problemi), il campo 2 deve mostrarmi solamente gli apparecchi dalla stessa tabella, che sono associati a mario rossi, e il tutto alla fine deve essere salvabile nel database, e quello penso sia il meno in quanto lui va a scrivere soltanto l'id del cliente e dell'apparecchio nella tabella riparazioni, quindi quello penso sia il meno
    il problema grosso è che non riesco ad impostare questi due DropDown per fargli fare questa cosa! se non usare un dropdown sarebbe ancora meglio un tipo livesearch (Typing con suggerimenti presi dai campi del database).

    Qualcuno può darmi qualche dritta??

    Grazie Mille!

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    ajax
    oppure eseguire il refresh dell'intera pagina ad evento onchange della select con ovvia procedura di popolamento della seconda select.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    36
    Pensavo anche io ad Ajax... stavo guardando questo esempio dalla w3school...
    http://www.w3schools.com/php/php_ajax_database.asp però questo fa apparire una tabella e l'elenco dei "clienti" lo prende direttamente dallo script, il mio deve fare quasi totalmente il contrario! e sul web non ho trovato neanche uno straccio di script simile da cui prendere spunto...

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    1- imposti evento onchange nellla prima select e lo colleghi all'oppurtuna funzione con la chiamata ajax.
    2- visualizza un loader che testimonia l'operazione in corsto
    3- recuperi i dati in formato json dal server
    4- popoli la select 2 con i nuovi dati
    5- spegni il loader.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    36
    Mmm non hai un esempio pratico da farmi vedere?

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    sottomano no cmq

    codice:
    <select name="sel1" onchange="aggiorna(this)">
    la funzione js

    codice:
    function aggiorna(select)
    {
          // ricava i dati
          var selVal = select[ select.selectedIndex ].value ;
          
          // ottieni form
          var form = select.form ;
    
          // segnala
          $("#messaggio").html("Aggiornamento dati in corso") ;
    
          // esegui ajax
          jQuery.ajax({
                url : "script.php",
                cache : false ,
                data : "id="+selVal ,
                dataType : "json" ,
                type : "post" ,
                success : function(response)
                {
                      // Gestisci response e popola select 2
    
                      // aggiorna messaggio
                      $("#messaggio).html("Fatto") ;
    
                },
                error : function(response){ alert("ERRORE:"+response.responseText) }
          })
    }

    Ovviamente la aprte php te la devi arrangiare.
    Pero' insomma almeno un po' di impegno ..... sono soluzioni std che trovi in qualsiasi guida jquery.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    36
    Niente, neanche con le dritte che mi avete dato riesco a far funzionare la cosa... vi posto lo script della pagina...

    Codice PHP:
    <?php break;?> <?php case"add":?> <?php if($user->userlevel == 5): print Filter::msgInfo(lang('PROJ_NOPERM'), false); return; endif;?> <?php $ptype $content->getProjectTypes();?> <?php $userlist $user->getUserList(1);?> <?php $marcalist $content->getMarca();?> <?php $tipoapp $content->getTipoApp();?> <h1>[img]../images/projects.png[/img]<?php echo lang('PROJ_TITLE1');?></h1> <p class="info"><?php echo lang('PROJ_INFO1') . lang('REQFIELD1') . required() . lang('REQFIELD2');?></p> <div class="block-border"> <div class="block-content"> <form action="" method="post" id="admin_form" name="admin_form"> <table cellspacing="0" cellpadding="0" class="forms"> <thead> <tr> <th colspan="2" class="left"><?php echo lang('PROJ_SUB1');?></th> </tr> </thead> <tr> <tr> <th><?php echo lang('INVC_CNAME');?><?php echo required();?></th> <td><select name="client_id" class="custombox" style="width:250px"> <option value="">--- <?php echo lang('INVC_CLIENTSELECT');?> ---</option> <?php if($userlist):?> <?php foreach ($userlist as $crow):?> <option value="<?php echo $crow->id;?>"><?php echo $crow->name;?></option> <?php endforeach;?> <?php unset($crow);?> <?php endif;?> </select> [url="index.php?do=clients-rip&action=add"][img]../images/client-overview.png[/img]"/>[/url] </td> </tr> <tr> <th><?php echo lang('INVC_CNAME');?><?php echo required();?></th> <td><select name="client_id" class="custombox" style="width:250px"> <option value="">--- <?php echo lang('INVC_CLIENTSELECT');?> ---</option> <?php if($userlist):?> <?php foreach ($userlist as $crow):?> <option value="<?php echo $crow->id;?>"><?php echo $crow->name;?></option> <?php endforeach;?> <?php unset($crow);?> <?php endif;?> </select> </td> </tr> <tr> <th width="300"><?php echo lang('PROB_DICH');?><?php echo required();?></th> <td colspan="1"><textarea name="prob_dich" cols="20" rows="1" id="prob_dich_content"></textarea></td> </tr> <tr> <th><?php echo lang('PROJ_TYPE');?><?php echo required();?></th> <td><select name="project_type" class="custombox" style="width:250px"> <option value="">--- Select Project Type ---</option> <?php if ($ptype):?> <?php foreach ($ptype as $prow):?> <option value="<?php echo $prow->id;?>"><?php echo $prow->title;?></option> <?php endforeach;?> <?php unset($prow);?> <?php endif;?> </select></td> </tr> <tr> <th><?php echo lang('PROJ_START');?>:</th> <td><input name="start_date" type="text" class="inputbox" id="start_date" size="25" value="<?php echo date('Y-m-d');?>"/></td> </tr> <tr> <th><?php echo lang('PROJ_END');?>:</th> <td><input name="end_date" type="text" class="inputbox" id="end_date" size="25" value="<?php echo date('Y-m-d');?>"/></td> </tr> <?php /*?> <tr> <th>Billing Status:</th> <td><label for="b_status">Payment Amount:</label> <input type="text" id="b_status" style="border:0; color:#5AB814;font-weight:bold; background-color:transparent" name="b_status"/> <div id="b_status-range" style="width: 250px;margin-top:2px;margin-left:5px"></div></td> </tr> <?php */?> <tr> <th><?php echo lang('PROJ_STATUS');?>:</th> <td><label for="p_status"><?php echo lang('PROJ_COMPSTSTUS');?>:</label> <input type="text" id="p_status" style="border:0; color:#0084FF;background-color:transparent" name="p_status"/> <div id="p_status-range" style="width:250px;margin-top:2px;margin-left:5px"></div></td> </tr> <tr> <th><?php echo lang('PROJ_MANAGER');?>:</th> <td><select name="staff_id" class="custombox" style="width:250px"> <?php foreach ($user->getUserList("9' or userlevel = '5") as $srow):?> <option value="<?php echo $srow->id;?>"><?php echo $srow->name;?></option> <?php endforeach;?> <?php unset($srow);?> </select></td> </tr> <tr> <th><?php echo lang('PROJ_NOTIFY');?>:</th> <td><?php echo lang('YES');?> <input type="radio" name="notify_staff" value="1" /> <?php echo lang('NO');?> <input name="notify_staff" type="radio" value="0" checked="checked" /></td> </tr> <tr> <td><input name="submit" type="submit" value="<?php echo lang('PROJ_ADD');?>" class="button button-green"/></td> <td>[url="index.php?do=projects"]<?php echo lang('CANCEL');?>[/url]</td> </tr> </table> </form> </div> </div> <?php echo Core::doForm("processProject");?>
    Nello Specifico i due form che devono essere correlati e poi salvare il risultato nel database sono
    Codice PHP:
    <tr> <th><?php echo lang('INVC_CNAME');?><?php echo required();?></th> <td><select name="client_id" class="custombox" style="width:250px"> <option value="">--- <?php echo lang('INVC_CLIENTSELECT');?> ---</option> <?php if($userlist):?> <?php foreach ($userlist as $crow):?> <option value="<?php echo $crow->id;?>"><?php echo $crow->name;?></option> <?php endforeach;?> <?php unset($crow);?> <?php endif;?> </select> [url="index.php?do=clients-rip&action=add"][img]../images/client-overview.png[/img]"/>[/url] </td> </tr>
    Sono due campi identici, solo che uno prenderà i dati dalla tabella users, (come già fa) e il secondo prenderà i dati dalla tabella Apparecchi... salvando poi il tutto in 1 o 2 campi sul database, in modo da permettere agli operatori di vedere quali riparazioni sono associate a quel pc, oppure vedere i pc per cliente, permettendo durante l'inserimento della riparazione la scelta con i menu a tendina dell'apparecchio del cliente, precedentemente caricato nel sistema...

    Riuscite a darmi una mano?

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    NO o posti del codice scritto e dientato bene oppure scusa ma non lo guardo nemmeno.

    EPOOI BASTA !!!

    <? $asjkdhajkdh=asdasd ?><div>asdkjasdkjas</div><? if() : ?> asdasd<? endif ?>

    QUESTE COSE NON SI FANNO!!!!

    Imposta le funzioni correttamente,
    imposta le variabili ed esegui la parte computazionale in posizione separata rispetto alla parte di visualizzazione !!!

    Quindi :

    1- posta codice identato
    2- nel caso prima di postare sistemalo

    Quando hai fatto facce sapere

    P.S.
    Scusa lo sfogo, ma deavvero non riesco a capire perche' nel 90% programmate in questo modo ....
    chi vi insegna a scrivere quelle accozzaglie di codice ???

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    36
    Io te lo incollo tramite un'altro servizio... è il forum che toglie l'indetazione al codice.... -.-"

    http://pastebin.com/dkJeXJyF

    Sezione di Pagina

    http://pastebin.com/GzsLEmV6

    il form del dropdown attuale (singolo)

    http://pastebin.com/vTPjpm6h

    L'intera Pagina PHP

  10. #10
    Ciao se non erro lo script usa un file chiamato ajax.php
    quindi potresti utilizzare le medesime funzioni ajax che utilizza questo script è richiamare nella file ajax.php il tuo dropdown multiplo

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.