Salve a tutti, vorrei realizzare uno script che abbia una lista di calciatori a destra, e trascinare la formazione in un drop-target per memorizzare la formazione da schierare in campo... ma non so proprio da dove iniziare... o meglio io ho fatto tutto, ma non so perché a volte si blocca... vi posto un pò di codice...
Codice PHP:
<?php
//gestisce le variabili che arrivano attraverso il redirect e le memorizza in un file con il nome della squadra... rappresentata dal nome utente
>?
<script>
// crea il riferimento alla dropbox in cui vengono trascinate
// le div che rappresentano gli articoli in catalogo
var dropbox = document.getElementById('dropbox');
// crea un riferimento ad ogni giocatore del catalogo - div.giocatore
var giocatori = document.getElementsByClassName('giocatore');
// crea un riferimento alla lista ul#titolari
var list_titolari = document.getElementById('titolari');
var list_panchina = document.getElementById('panchina');
var list_allenatore = document.getElementById('allenatore');
var modulo = null;
var giornata = null;
var portieri = 0;
var difensori = 0;
var difensori_p = 0;
var centrocampisti = 0;
var centrocampisti_p = 0;
var attaccanti = 0;
var attaccanti_p = 0;
var allenatore = 0;
//crea l'array che conterrà i dati relativi ai giocatori trascinati nella dropbox
var titolari = new Array(11);
var panchina = new Array(7);
var allenatore_scelto = null;
var team = "<?php echo $_SESSION["nomeutente"]; ?>";
//crea un oggetto json che rappresenta i giocatori in rosa
var rosa = {
<?php
$rosa = file("pages/formazioni/".$anno_calcistico."/".$_SESSION["nomeutente"].".txt");
for($i=0; $i<count($rosa); $i++)
{
$campi_rosa = explode(",", $rosa[$i]);
$ID = $campi_rosa[0];
$GIOCATORE = $campi_rosa[1];
$RUOLO = $campi_rosa[2];
//$SOLDI_SPESI = $campi_rosa[3];
echo $ID.": {
nome: \"".$GIOCATORE."\",
ruolo: \"".$RUOLO."\"
}";
if($i < count($rosa)-1)
echo ",
";
}
?>
}
function recuperaModulo(opt)
{
if(opt.checked)
{
modulo = opt.value.split("-");
}
}
function recuperaGiornata()
{
giornata = document.form.giornata.options[document.form.giornata.selectedIndex].value;
}
function blocca()
{
var element = document.form.modulo;
for(var k=0; k<element.length; k++)
{
element[k].disabled = true;
}
}
function salvaFormazione(team, titolari, panchina, allenatore, giornata)
{
var string = "&giornata="+giornata+"&team="+team;
for(var i=0; i<titolari.length; i++)
{
string += ">_"+i+"="+titolari[i].nome+">r_"+i+"="+titolari[i].ruolo[0];
}
for(var i=0; i<panchina.length; i++)
{
string += "&gp_"+i+"="+panchina[i].nome+"&gpr_"+i+"="+panchina[i].ruolo[0];
}
string += "&t="+allenatore+"&rt=T";
window.location.href = "./invia.php?invia_formazione=1"+string;
}
function esci(opt)
{
if(opt == "r")
window.location.href +="";
else if(opt == "exit")
window.location.href = "./invia.php?logout=1";
}
// crea l'immagine "aggiungi a titolari"
var icon = document.createElement('img');
icon.src = 'images/ball.png';
// per ogni elemento trascinato crea un tipo di dato Text
// e vi associa l'id del giocatore
for (var i = 0; i < giocatori.length; i++){
giocatori[i].ondragstart = function(event){
event.dataTransfer.setDragImage(icon,64,64);
event.dataTransfer.setData('Text', this.id);
};
}
dropbox.ondrop = function(event){
if(modulo == null)
{
alert("Prima di inserire i giocatori titolari, devi impostare un modulo per la tua formazione");
this.removeAttribute('class');
return false;
}
else if(giornata == null)
{
alert("Prima di inserire i giocatori titolari, devi impostare la giornata di campionato");
this.removeAttribute('class');
return false;
}
<?php
if(!isset($_GET["debug"]) || $_GET["debug"] != "1")
{
?>
else
{
var oggi = new Date();
var mese = parseInt(oggi.getMonth())+1;
var buff = oggi.getFullYear()+'-'+mese+'-'+oggi.getDate()+' '+oggi.getHours()+':'+oggi.getMinutes();
var inizio_invio = new Date(buff);
var fine_invio = new Date(scadenze['_'+giornata+''].data);
if(inizio_invio.getTime() > fine_invio.getTime())
{
alert("Non puoi più inserire la formazione per questa giornata perché è in corso oppure è stata già giocata. La pagina sarà ricaricata automaticamente");
esci("r");
}
}
<?php
}
?>
// inizializza l'id dell'elemento rilasciato nella drop area
var id = event.dataTransfer.getData('Text');
// inizializza la variabile che contiene l'elemento corrente
var giocatore = rosa[id];
// individua la posizione dell'elemento corrente nell'array contenente i giocatori titolari
var pos = titolari.indexOf(giocatore);
var pos_panchina = panchina.indexOf(giocatore);
// se la posizione != -1
// significa che il giocatore è stato già inserito nella formazione titolare
if(pos == -1 && pos_panchina == -1)
{
if(giocatore.ruolo == "Portiere")
{
if(portieri == 0)
{
titolari[0] = giocatore;
portieri++;
}
else if(portieri == 1)
{
panchina[0] = giocatore;
portieri++;
}
else
{
alert("Non puoi aggiungere altri portieri in formazione");
}
}
else if(giocatore.ruolo == "Difensore")
{
if(difensori<modulo[0])
{
titolari[difensori+1] = giocatore;
difensori++;
}
else if(difensori_p<2)
{
panchina[difensori_p+1] = giocatore;
difensori_p++;
}
else
{
alert("Non puoi aggiungere altri difensori");
}
}
else if(giocatore.ruolo == "Centrocampista")
{
if(centrocampisti<modulo[1])
{
titolari[centrocampisti+difensori+1] = giocatore;
centrocampisti++;
}
else if(centrocampisti_p<2)
{
panchina[centrocampisti_p+difensori_p+1] = giocatore;
centrocampisti_p++;
}
else
{
alert("Non puoi aggiungere altri centrocampisti");
}
}
else if(giocatore.ruolo == "Attaccante")
{
if(attaccanti<modulo[2])
{
titolari[attaccanti+centrocampisti+difensori+1] = giocatore;
attaccanti++;
}
else if(attaccanti_p<2)
{
panchina[attaccanti_p+centrocampisti_p+difensori_p+1] = giocatore;
attaccanti_p++;
}
else
{
alert("Non puoi aggiungere altri attaccanti");
}
}
}
else
{
alert("Giocatore già inserito");
}
if(giocatore.ruolo == "Allenatore")
{
if(allenatore == 0)
{
allenatore_scelto = giocatore;
allenatore++;
}
else
{
alert("Non puoi aggiungere altri allenatori");
}
}
// se esistono dei li nella ul.titolari
// vengono eliminati tutti
if ( list_titolari.hasChildNodes() ){
while ( list_titolari.childNodes.length >= 1 ){
list_titolari.removeChild( list_titolari.firstChild );
}
}
if ( list_panchina.hasChildNodes() ){
while ( list_panchina.childNodes.length >= 1 ){
list_panchina.removeChild( list_panchina.firstChild );
}
}
if ( list_allenatore.hasChildNodes() ){
while ( list_allenatore.childNodes.length >= 1 ){
list_allenatore.removeChild( list_allenatore.firstChild );
}
}
// per ogni elemento dell'array titolari
// crea un li da aggiungere alla ul#titolari
for(var i = 0; i < titolari.length; i++){
if(titolari[i] != null)
{
var giocatore_titolare = titolari[i];
var li = document.createElement('li');
var tn = document.createTextNode( giocatore_titolare.nome + " - " + giocatore_titolare.ruolo + " " );
li.appendChild(tn);
list_titolari.appendChild(li);
}
}
for(var i = 0; i < panchina.length; i++){
if(panchina[i] != null)
{
var giocatore_panchina = panchina[i];
var li = document.createElement('li');
var tn = document.createTextNode( giocatore_panchina.nome + " - " + giocatore_panchina.ruolo + " " );
li.appendChild(tn);
list_panchina.appendChild(li);
}
}
if(allenatore_scelto != null)
{
var li = document.createElement('li');
var tn = document.createTextNode( allenatore_scelto.nome + " - " + allenatore_scelto.ruolo + " " );
li.appendChild(tn);
list_allenatore.appendChild(li);
}
if(portieri+difensori+difensori_p+centrocampisti+centrocampisti_p+attaccanti+attaccanti_p == 18 && allenatore_scelto != null)
{
var invia_f = document.getElementById("invia_formazione");
invia_f.setAttribute("style", "text-align:right; color:#FFF;");
}
return false;
};
dropbox.ondragover = function(){ return false; }
dropbox.ondragenter = function(event){
this.setAttribute('class', 'over');
}
dropbox.ondragleave = function(event){
this.removeAttribute('class');
}
</script>
</body>
</html>
<?php
}
?>
Mi date una mano? Non riesco a capire come risolvere a volte non riesce ad inviare la formazione e si blocca tutto!!!