Ciao a tutti,
sto realizzando un sito in php con collegamento a database mysql e fin qui tutto ok. Utilizzando le librerie jquery e jQuery blockUI, ho fatto in modo che tramite drag&drop di un elemento su una delle possibili droparea, si blocchi la pagina e mi venga visualizzato un form, che richiede tre valori (Data, Voto, Note). Nel momento in cui invio i dati, non solo devo inviare questi tre valori ma anche gli ID dell'elemento che ho trascinato e della sua droparea. Questi dovrebbero essere inviati in una pagina php, dove faccio l'inserimento nel database mysql. Il valore di questi ID, ovviamente, li trovo in javascrip. Il problema qual è? Non riesco a passare questi valori di variabili javascript nel attributo "value" del form o comunque a php. Per questo ho fatto ricorso ad una serie di funzioni ajax che vi riporto sotto, ma non capisco perchè non mi vada a fare l'inserimento. Ora vi posto il codice:
questa è la pagina valutazione.php
codice:
<script type="text/javascript">
function dropItems(idOfDraggedItem,targetId,x,y) {
for (var s = 0; s < <?php echo sizeof($array_c); ?>; s++){
t = s+1;
if(targetId=='dropBox'+t){ // Item dropped on <div id="dropBox">
/* Blocco il drag&drop e richiamo il form */
$.blockUI({ message: $('#form_value'), css: {
border: 'none',
color: '#fff'
}
});
/* Codice per rendere droppabili tutti i corsi */
var html = document.getElementById('dropContent'+t).innerHTML;
if(html.length>0) html = html + '
';
html = html + '<span>Caricamento in corso...</span>';
document.getElementById('dropContent'+t).innerHTML = html;
var id_c = t;
var id_m = document.getElementById(idOfDraggedItem).innerHTML;
id_m = calcolo_idm(id_m);
}
}
}
var dragDropObj = new DHTMLgoodies_dragDrop();
for(var j = 0; j < <?php echo sizeof($array_m); ?>; j++){
k = j+1;
dragDropObj.addSource('box'+k,true);
}
for(var m = 0; m < <?php echo sizeof($array_c); ?>; m++){
p = m+1;
dragDropObj.addTarget('dropBox'+p,'dropItems');
}
dragDropObj.init();
</script>
<form id="form_value" class="insert_dvn" method="post">
<span>Data:</span>
<input type="text" name="Data" id="Data" />
</p>
<span>Voto:</span>
<input type="text" name="Voto" id="Voto" />
</p>
<span>Note:</span>
<input type="text" name="Note" id="Note" />
</p>
<span class="bottoni">
<input type="hidden" name="id_c" id="id_c" value="????????????'" /> /*NON SO SE SI DEVONO USARE GLI HIDDEN VISTO CHE MANDO TUTTO A DELLE FUNZIONI AJAX.. LI HO MESSI NEL CASO ABBIATE SUGGERIMENTI */
<input type="hidden" name="id_m" id="id_m" value="???????????" />
<input type="submit" onclick="doRequestUsingPOST();" value="Inserisci" />
<input type="submit" value="Annulla" />
</span>
</form>
questa è la pagina valutazione.js con le funzione ajax che ho usato per passare i valori..
codice:
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function createQueryString() {
var id_c = document.getElementById("id_c").value;
var id_m = document.getElementById("id_m").value;
var data = document.getElementById("Data").value;
var voto = document.getElementById("Voto").value;
var note = document.getElementById("Note").value;
var queryString = "id_c=" + id_c + "&id_m=" + id_m + "Data=" + data + "&Voto=" + voto + "&Note=" + note;
return queryString;
}
function doRequestUsingPOST() {
createXMLHttpRequest();
var url = "http://localhost/Uni/insert_cm.php";
var queryString = createQueryString();
xmlHttp.open("POST", url, true);
alert(queryString); /***********************/
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(queryString);
header("Location: insert_cm.php");
}
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
parseResults();
}
}
}
function parseResults() {
var responseDiv = document.getElementById("rispostaServer");
if(responseDiv.hasChildNodes()) {
responseDiv.removeChild(responseDiv.childNodes[0]);
}
var responseText = document.createTextNode(xmlHttp.responseText);
responseDiv.appendChild(responseText);
}
codice:
<?php
include_once("./mysql_conn.php"); /* Connessione DB */
/* Recupero le variabili dal form in valutazione.php */
$id_c = $_POST['id_c'];
$id_m = $_POST['id_m'];
$Data = $_POST['Data'];
$Voto = $_POST['Voto'];
$Note = $_POST['Note'];
$query_new = "INSERT INTO valutazione VALUES ($id_c, $id_m, '$Data', $Voto, '$Note')";
$conn=mysql_connect($host,$user,$pwd);
if($conn == FALSE) print ("Errore nella connessione. Verificare i parametri nel file mysql_conn.php");
mysql_select_db($nome_db, $conn)
or print ("Errore nella selezione del database. Verificare i parametri nel file mysql_conn.php");
$ris = mysql_query($query_new, $conn);
mysql_affected_rows();
header("Location: valutazione.php");
?>
Grazie in anticipo.. ciaooo