li ho cancellati perchè dopo che mi avevi detto quella cosa pensavo non potevate aiutarmi in questo modo,certo che li riposto,ho molta gratitudine verso di voi che state utilizzando il vostro tempo per aiutarmi,vi ringrazio veramente un sacco! il codice che ho postato è quello che utilizzo,altrimenti come farei a farmi aiutare...
ecco la pagina index col form:
codice:
<form name="MyForm" >
<tr>
<td colspan="2">
<span style="background-color:#BBB">Categoria ></span>
Film,
SerieTV,
SerieAnimate
<input type="hidden" id="hiddenCategory" name="hiddenCategory" />
<span style="background-color:#BBB;">Genere</span>
<button type="button" id="bDefault" name="bDefault" onclick="setGenere(1);" disabled="disabled">Default</button>
<button type="button" id="bPersonalizzato" name="bPersonalizzato" onclick="setGenere(2);" disabled="disabled">Personalizzato</button>
<input type="hidden" id="hiddenGenere" name="hiddenGenere" />
<div id="selDiv">
<select name="selGenere" id="selGenere" disabled="disabled">
<option value=""> -- </option>
</select>
</div>
<input type="hidden" id="hiddenPersonalGenere" name="hiddenPersonalGenere"/>
</td>
</tr>
quando si clicca sulla scelta del genere(default o personalizzato) si innesca la funzione setGenere()
codice:
function setGenere(GenereNumber)
{
//creo una variabile globale per poterla utilizzare anche in altre funzioni
genereNumberCopy=GenereNumber;
document.getElementById('hiddenGenere').value=genereNumberCopy;
//Dobbiamo procedere solo se l'ogetto xmlHttp non è impegnato
if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
//metto il colore al pulsante per mostrarlo selezionato
if(GenereNumber == 1)
{
// alla scelta del button gli assegno un colore per far capire che è stato selezionato e lo tolgo all'altro
document.getElementById("bDefault").style.color="#FF9900";
document.getElementById("bPersonalizzato").style.color="";
}
else if(GenereNumber == 2)
{
// alla scelta del button gli assegno un colore per far capire che è stato selezionato e lo tolgo all'altro
document.getElementById("bDefault").style.color="";
document.getElementById("bPersonalizzato").style.color="#FF9900";
}
//eseguiamo la pagina php ovvero quickstart.php sul server
xmlHttp.open("GET", "../_script/createSelect.php?cat="+categoryNumberCopy+"&gen="+GenereNumber,true);
//definiamo il metodo per gestire le risposte del server
xmlHttp.onreadystatechange = setGenereResponse;
// Effettuiamo la richiesta al server
xmlHttp.send(null);
}
else
//Se la connessione è impegnata allora rproviamo dopo 1 secondo
setTimeout('setGenere(genereNumberCopy)', 1000);
}
// Eseguita automaticamente quando viene ricevuto un messaggio dal server
function setGenereResponse()
{
//Procediamo solo se la transazione è completata
if(xmlHttp.readyState == 4)
{
//lo status 200 indica che la transazione è stata eseguita con successo
if(xmlHttp.status == 200)
{
//estraiamo l'xml ricevuto dal server
var selectGenResponse = xmlHttp.responseText;
document.getElementById("selDiv").innerHTML = selectGenResponse;
}
else
{
alert("C'è stato un problema nell'accesso al server:" + xmlHttp.statusText);
}
}
}
farà una chiamata asincrona php per ricavarsi la select dal database e me la riscrive nel div con la funzione JS setGenereResponse
Codice PHP:
$queryGenere = "SELECT ID_Genere,Nome_Genere FROM Genere
INNER JOIN Cat_Gen ON Genere.ID_Genere = Cat_Gen.ID_Gen
INNER JOIN Categoria ON Categoria.ID_Categoria = Cat_Gen.ID_Cat
WHERE Categoria.ID_Categoria = $typeOfCategory AND Genere.User_Personalize=$id_utente";
$countPersonalGender = mysql_query("SELECT COUNT(Genere.ID_Genere) AS Tot_Gender
FROM Genere
INNER JOIN Cat_Gen ON Genere.ID_Genere = Cat_Gen.ID_Gen
INNER JOIN Categoria ON Categoria.ID_Categoria = Cat_Gen.ID_Cat
WHERE Categoria.ID_Categoria = $typeOfCategory AND Genere.User_Personalize=$id_utente
");
$result_countPersonalGender = mysql_fetch_array($countPersonalGender);
$Tot_countPersonalGender=$result_countPersonalGender['Tot_Gender'];
//echo"Generi Personali: $Tot_countPersonalGender
";
if($Tot_countPersonalGender==0)
{ ?>
<select name="selGenere" id="selGenere" style="display:none" >
<option value="--"></option>
</select>
<?php }
if($Tot_countPersonalGender>0)
{
?>
<select name="selGenere" id="selGenere">
<?php
$strSQL = "$queryGenere";
$dbh=mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error()) ;
while ($riga = mysql_fetch_array($dbh)) {
$ID_Genere = $riga['ID_Genere'];
$Nome_Genere = $riga['Nome_Genere'];
if(($ID_Genere==$selectedGenOption)&&($selectedGenOption<>''))
echo '<option value="'.$ID_Genere.'" selected="selected">'.$Nome_Genere.'</option>';
else
echo '<option value="'.$ID_Genere.'">'.$Nome_Genere.'</option>';
}
?>
</select>
<?php
}
?>
<button type="button" id="bAddPersonal" name="bAddPersonal" onclick="AddGenere();">+</button>
<?php
if($Tot_countPersonalGender>0)
{
?>
<button type="button" id="bDelPersonal" name="bDelPersonal" onclick="DelGenere(document.MyForm.selGenere.value);" style="color:#555;">Del</button>
<?php
}
ora i button creati mi permetteranno di eliminare un genere(sempre che ci sia) con la funzione DelGenere
codice:
function DelGenere(IdGenere)
{
// l'idea è di creare una chiamata asincrona al server per mandargli l'id del genere da eliminare
// poi riaggiornare il div con i soli generi disponibili magari richiamando la funzione setGenere
// da considerare che forse dovremo mettere come variabile globale GenereNumber
if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
xmlHttp.open("GET","../_script/_addDelElements.php?idGen="+IdGenere+"&operation=selDel",true);
xmlHttp.onreadystatechange = DelGenereResponse;
xmlHttp.send(null);
}
else
setTimeout('DelGenere(IdGenere)', 1000);
}
// Eseguita automaticamente quando viene ricevuto un messaggio dal server
function DelGenereResponse()
{
//Procediamo solo se la transazione è completata
if(xmlHttp.readyState == 4)
{
//lo status 200 indica che la transazione è stata eseguita con successo
if(xmlHttp.status == 200)
{
//estraiamo l'xml ricevuto dal server
xmlHttp.responseText;
document.getElementById('hiddenPersonalGenere').value=0;
setGenere(2);
}
else
{
alert("C'è stato un problema nell'accesso al server:" + xmlHttp.statusText);
}
}
}
e di aggiungerlo con addGenere()
codice:
function AddGenere() // funzione che crea la textbox e ti permette di inserire un genere personalizzato
{
//creo degli elementi per inserirli nel div al posto della select!
var textBoxGen = '<input type="text" id="textBoxGen" name="textBoxGen" maxlength="41" onkeyup="Contar(\'textBoxGen\',\'contGenRim\',\'{CHAR}\',41);" />';
var addGenButton = '<button type="button" id="addGenButton" name="addGenButton" onclick="ControlGen(document.MyForm.textBoxGen.value);" >+</button>';
var contGenRim = '<span id="contGenRim">41</span>';
var closeTextGen = '<button type="button" id="closeTextGen" name="closeTextGen" onclick="setGenere(2);" >-</button>';
document.getElementById('selDiv').innerHTML=addGenButton+textBoxGen+contGenRim+closeTextGen;
//mi ricavo la hidden di quando clicco per immettere un genere selezionato e gli metto valore 1
//per far capire che è in modifica
document.getElementById('hiddenPersonalGenere').value=1;
}
function ControlGen(textBoxGen) { //funzione che controlla la validità della textbox di aggiunta genere e lo invia allo script
var textBoxGen2=trim(textBoxGen);
textBoxGen=textBoxGen2.replace(/[\ ]/g,"|");
var colora=2;
if(textBoxGen!="")
{
$('#selDiv').load('../_script/_addDelElements.php?txtInput='+textBoxGen+'&operation=addGenere&catCtrl='+categoryNumberCopy, function(){
if(colora == 0) coloraBottone();
});
document.getElementById('ErrorPersonalized').style.display="none";
document.getElementById('hiddenPersonalGenere').value=0;
}
else
{
AddGenere();
var errorePersonalizzato = '!)Se vuoi aggiungere un genere personalizzato non puoi lasciare il campo vuoto.';
document.getElementById('ErrorPersonalized').innerHTML=errorePersonalizzato;
document.getElementById('ErrorPersonalized').style.display="block";
}
}
function coloraBottone()
{
document.getElementById("bDefault").style.color="#FF9900";
document.getElementById("bPersonalizzato").style.color="";
}
Ho molto rispetto per voi che siete ad un livello molto più alto del mio e solo perchè guardate il mio post vi ringrazio moltissimo..