autocompletamento 2 campi...almeno uno

Ciao

Avrei intenzione di implementare la funzionalità di una mia pagina (già oggetto di una precedente

discussione http://www.phpnews.it/forum/index.php?topic=1592.0)

in cui si trova un form.

Dovrei operare solo su 2 campi del form. Il campo input del codice e quello della descrizione.

Vorrei, pratica, fare in modo che se l'utente inserisce il codice di un articolo automaticamente

la descrizione compaia nel campo descrizione e viceversa.

Se questo risulta essere troppo complicato da sviluppare vorrei almeno realizzare

l'autocompletamento del campo "descrizione" .

So che dovrei usare ajax ma mi serve una mano.

Prima cosa: è possibile realizzare la mia prima richiesta? Come?

Mi servono un po' di "input" per iniziare, per piacere.

Grazie anticipatamente per le risposte e la cortesia.

ciao

inviato 10 anni fa
frankphp
X 0 X

non ho capito la differenza tra la prima e la seconda richiesta

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

non ho capito la differenza tra la prima e la seconda richiesta

 :bye:

Allora:

Nel primo caso; inserisco il codice del prodotto nel campo codice e

contemporanemente nel campo descrizione si carica il nome relativo a quel codice.

Invece se inserisco il nome del prodotto nel campo descrizione devo caricarsi

nel campo codice il codice relativo al nome del prodotto e inoltre

mentre sto digitando nel campo descrizione il nome che ho in mente

ad esempio "vi" nel campo stesso o preferibilmente tramite un menu a discesa

si carichino i nomi con quelle iniziali e nel mio caso io scelga la parola vino

Nel secondo caso (se la cosa sopra risulta troppo difficile da realizzare) mi accontenterei

di sviluppare solo l'autocompletamento per il campo descrizione magari poi il codice

lo inserisco io manualmente..però sarebbe poco professionale.

Ci siamo?

Grazie e ciao

risposto 10 anni fa
frankphp
X 0 X

Ok, adesso è più chiaro.

Data l'overdose di AJAX che serve a fare quello che dici ti consiglio di prima di tutto cercare qualche framework AJAX da impiegare, in modo da non dover reinventare la ruota...

Ti segnalo XAJAX, che con la processazione dei form mi è sembrato molto valido.

Potresti iniziare realizzando un piccolo form con 2 campi ed un bottone. In un campo inserisci il codice e premendo il bottone fai apparire la descrizione nell'atro campo, e viceversa.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ok, adesso è più chiaro.

Data l'overdose di AJAX che serve a fare quello che dici ti consiglio di prima di tutto cercare qualche framework AJAX da impiegare, in modo da non dover reinventare la ruota...

Ti segnalo XAJAX, che con la processazione dei form mi è sembrato molto valido.

Potresti iniziare realizzando un piccolo form con 2 campi ed un bottone. In un campo inserisci il codice e premendo il bottone fai apparire la descrizione nell'atro campo, e viceversa.

 :bye:

Ok Ma poi devo riscrivere tutta la pagina articoli.html da zero o è possibile integrarla

grazie

risposto 10 anni fa
frankphp
X 0 X

la struttura del form non cambia, andrà aggiunto un (bel) po' di Javascript e delle funzioni PHP che rispondano alle chiamate AJAX

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

la struttura del form non cambia, andrà aggiunto un (bel) po' di Javascript e delle funzioni PHP che rispondano alle chiamate AJAX

 :bye:

bah vediamo cosa ne viene fuori.

Devo quindi cambiare l'estensione della pagina da html a php in ogni caso se ci sono funzioni php

grazie

risposto 9 anni fa
frankphp
X 0 X

bah vediamo cosa ne viene fuori.

Devo quindi cambiare l'estensione della pagina da html a php in ogni caso se ci sono funzioni php

grazie

no, non è necessario js si mette in mezzo x cui la pagina html con il form rimane tale, studialo un pochino e capirai subito.

risposto 9 anni fa
LonelyWolf
X 0 X

ciao

Ho dato un'occhiata ad Xajax. Per un programmatore php navigato

senza dubbio è un grande aiuto, nel senso che può far risparmiare un sacco di tempo, ma io che

non sono una cima (anzi!!) lo trovo poco intuitivo.

Facciamo così. Passiamo al secondo metodo.

Autocompletamento del solo campo descrizione.

Magari poi una volta che si è "autocompletato" il nome del prodotto (o io lo scelga

dal menù a discesa) si vedrà..ok?

Da dove cominciamo?

grazie

risposto 9 anni fa
frankphp
X 0 X

la struttura del form non cambia, andrà aggiunto un (bel) po' di Javascript e delle funzioni PHP che rispondano alle chiamate AJAX

 :bye:

ho aggiunto infatti del codice.

Ho praticamente adattato il codice di questi file in questa pagina(molto interessante il sito):

http://www.dhtmlgoodies.com/index.html?whichScript=ajax-dynamic-list

La mia pagina articoli.html è diventata così:

<html>
<head>
<title>Form dati</title>
<style type="text/css">
   /* Big box with list of options */
   #ajax_listOfOptions{
      position:absolute;   /* Never change this one */
      width:175px;   /* Width of box */
      height:250px;   /* Height of box */
      overflow:auto;   /* Scrolling features */
      border:1px solid #317082;   /* Dark green border */
      background-color:#FFF;   /* White background color */
      text-align:left;
      font-size:0.9em;
      z-index:100;
   }
   #ajax_listOfOptions div{   /* General rule for both .optionDiv and .optionDivSelected */
      margin:1px;      
      padding:1px;
      cursor:pointer;
      font-size:0.9em;
   }
   #ajax_listOfOptions .optionDiv{   /* Div for each item in list */
      
   }
   #ajax_listOfOptions .optionDivSelected{ /* Selected item in the list */
      background-color:#317082;
      color:#FFF;
   }
   #ajax_listOfOptions_iframe{
      background-color:#F00;
      position:absolute;
      z-index:5;
   }
   
   form{
      display:inline;
   }
   
   </style>
   <script type="text/javascript" src="js/ajax.js"></script>
   <script type="text/javascript" src="js/ajax-dynamic-list.js">
<SCRIPT LANGUAGE='JavaScript'>
<!--
function validate_form()
{

    if (document.art.codice.value==document.art.codice.defaultValue ||
    document.art.codice.value.indexOf(' ',0)==0)
    {
        alert('\nNessun codice inserito.')
        document.art.codice.select()
        document.art.codice.focus()
        return false
    }
      if ((isNaN(document.art.codice.value)) ||  document.art.codice.value.indexOf('-',0)==0 ||  document.art.codice.value.indexOf('+',0)==0) {
   alert("Codice non valido.");
   document.art.codice.value = "";
   document.art.codice.focus();
   return false;
        }
    
    if (document.art.descrizione.value==document.art.descrizione.defaultValue ||
    document.art.descrizione.value.indexOf(' ',0)==0)
    {
        alert('\nNessuna descrizione inserita.')
        document.art.descrizione.select()
        document.art.descrizione.focus()
        return false
    }
    
    if (document.art.quantita.value==document.art.quantita.defaultValue ||
    document.art.quantita.value.indexOf(' ',0)==0)
    {
        alert('\nNessuna quantità inserita.')
        document.art.quantita.select()
        document.art.quantita.focus()
        return false
    }
    
    if (document.art.quantita.value.indexOf(',') >= 0){
   alert("Per i decimali utilizzare il punto, es: 4 chili e mezzo= 4.5");
   document.art.quantita.value = "";
   document.art.quantita.focus();
   return false;
        }
    
     if ((isNaN(document.art.quantita.value))|| document.art.quantita.value.indexOf('-',0)==0 ||  document.art.quantita.value.indexOf('+',0)==0) {
   alert("Quantità non valida.");
   document.art.quantita.value = "";
   document.art.quantita.focus();
   return false;
        }
        


    
    if (document.art.prezzo.value==document.art.prezzo.defaultValue ||
    document.art.prezzo.value.indexOf(' ',0)==0)
    {
        alert('\nNessun prezzo inserito.')
        document.art.prezzo.select()
        document.art.prezzo.focus()
        return false
    }
    
     if (document.art.prezzo.value.indexOf(',') >= 0){
   alert("Per i decimali utilizzare il punto, es: 3 euro e 55 cent = 3.55");
   document.art.prezzo.value = "";
   document.art.prezzo.focus();
   return false;
}

    
     if ((isNaN(document.art.prezzo.value))|| document.art.prezzo.value.indexOf('-',0)==0 ||  document.art.prezzo.value.indexOf('+',0)==0) {
   alert("Prezzo non valido.");
   document.art.prezzo.value = "";
   document.art.prezzo.focus();
   return false;
        }

}
//----------------------------------------
// -->
</SCRIPT>
</head>

<body bgcolor="#DAB88B" onload="document.art.codice.focus();" >
<TABLE border=0 width=100% cellpadding=3>
<tr>
<td width=100% colspan=2>
<p align=center><b>Inserisci Articoli
<form method=POST action="fatt1.php" target= "fatt1" name = "art" onSubmit="return validate_form()">
</b></td>
</tr>
<tr>
<td width=18%><b>Codice</b></td>
<td width=82%><input type=text name="codice" size=10></td>
</tr>
<tr>
<td width=18%><b>Descrizione</b></td>
<td width=72%><input type="text" id="descrizione" name="descrizione" value="" onkeyup="ajax_showOptions(this,'getCountriesByLetters',event)">
<input type="hidden" name="descrizione"></td>
</tr>
<tr>
<td width=18%><b>Quantità</td>
<td width=82%><input type=text name="quantita"  size=10></td>
</tr>
<tr>
<td width=18%><b>Prezzo Un.</td>
<td width=82%><input type=text name="prezzo"  size=10></td>
</tr>
<tr>
<tr>
<td width=18%><b>IVA</td>
<td width=82%><select size="1" name="iva"  size=10>
  <option> 4</option>
  <option> 10</option>
  </select></td>
</tr>
<tr>
<td width=18%><b><input type="submit" name="invia" value="Inserisci"></td>
</tr>
</table>
</form>
</body>
</html>

ovviamente ho creato una tabella prodotti nel db con i campi id, codice, descrizione. per il resto

ho usato gli stesi file di riferimento in js e php (non ho cambiato nemmeno i nomi delle funzioni)

Funziona, ma ci sono (almeno per il momento ho notato "SOLO" questi) 2 problemi.

Gli altri controlli javascript sui campi non funzionano più e poi la descrizione (inviata alla pagina php fatt1.php) non viene visualizzato nell'apposito spazio della tabella della fattura.

Potete aiutarmi a capire la causa di questi problemi?

Grazie

risposto 9 anni fa
frankphp
X 0 X

Ho risolto parzialmente il problema e ne ho riscontrato un altro accc.. >:(

Ho chiuso il tag qui:

<script type="text/javascript" src="js/ajax-dynamic-list.js"></script>

mancava </script> e adesso i controlli sui campi sembrano che funzionino (campo vuoto o valido ecc)

Il nome della descrizione comunque non viene inviato alla pagina php,

e poi se non compilo il campo descrizione e clicco sul bottone invia, la finestra di avvertimento javascript mi dice che il

campo è vuoto e mi rimanda il cursore su questo campo ma immediatamente dopo

i dati vengono inviati lo stesso (senza la descrizione appunto)

Aiuto!

ciao

risposto 9 anni fa
frankphp
X 0 X

aiuto ragazzi! :P

risposto 9 anni fa
frankphp
X 0 X

adesso funziona tutto!!

ho eliminato questa riga:

<input type="hidden" name="descrizione">

Ho riaggiornato la pagina e fatto prima ancora una bella pulizia della cache

(ho notato che a volte le modifiche al codice javascript non vengono rilevate

subito pur salvando e aggiornando la pagina...boh!)

adesso però vorrei implementare il form

e fare in modo che quando inserisco la descrizione dell'articolo sia richiamato

anche il suo codice relativo nel campo codice appunto e viceversa (come ho richiesto la prima volta).

Abbiamo la base adesso. Potete aiutarmi a sviluppare il resto?

grazie

risposto 9 anni fa
frankphp
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda