Sono un principiante di php e javascript e avrei bisogno di un aiuto.
Ho una pagina in cui sono presenti due tabelle collegate.
La prima tabella mostra una lista di categorie prese da database.
Al click su ogni riga della prima tabella, nel div "TabellaSottocategorie" (inizialmente vuoto) viene mostrata la lista delle sottocategorie, attraverso un secondo file:"tabella_sottocategorie.php" il cui contenuto riporto qui sotto:
In ognuna delle due tabelle ho aggiunto una colonna con l'icona di un cestino per aprire una finestra di conferma (div visualizzato come modal) per eliminare da database la riga selezionata.
Per la prima tebella la funzione onRowClick funziona perfettamente, recupera i vaolri della riga selezionata, popola con tali dati il form di conferma dell'eliminazione e al clic procede all'eliminazione da database.
Per la seconda tabella la funzione onRowClick non riesce a recuperare i dati della riga cliccata. Credo che non funzioni in quanto il codice della seconda tabella non è presente realmente nel primo file ma viene caricato dinamicamente dal secondo file nel primo.
Come posso allora, cliccando su una riga della seconda tabella, recuperare id e nome della riga stessa e passarli al form per chiedere conferma ed elimiare poi da database il dato?
Avrei bisogno di qualche suggerimento. Grazie
Ho una pagina in cui sono presenti due tabelle collegate.
La prima tabella mostra una lista di categorie prese da database.
HTML:
<head>
<meta charset="utf-8">
<title>Categorie</title>
<link rel="stylesheet" href="css/uikit.docs.min.css">
<link rel="stylesheet" href="css/font-awesome.min.css">
<script src="js/uikit.min.js"></script>
<script>
//funzione che apre 'categorie_tabella_sottocategorie.php' per la tabella delle sottocategorie
function TabellaDetailSottocategorie(id_categoria,nome_categoria) {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("TabellaSottocategorie").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("GET","tabella_sottocategorie.php?id_categoria="+id_categoria+"&nome_categoria="+nome_categoria);
xmlhttp.send();
}
</script>
</head>
<body>
<div class="uk-container uk-container-center uk-margin-top uk-margin-large-bottom" name="header">
<div class="uk-grid">
<!-- Tabella categorie da db -->
<div class="uk-width-1-2" id="categorie" >
... ometto il codice che crea la tabella ....
</div>
<!-- Tabella sottocategorie che si popola al click di una riga sulla tabella Gruppi -->
<div id="TabellaSottocategorie" class="uk-width-1-2" >questo div inizialmente è vuoto</div>
<p id="click-response"></p>
</div>
<!-- MODAL ELIMINA CATEGORIA -->
<div id="modal-elimina-categoria" class="uk-modal uk-container-center" >
<div class="uk-modal-dialog">
<a href="" class="uk-modal-close uk-close"></a>
<h1><i class="uk-icon-minus-circle"></i> Elimina Categoria</h1>
<form class="uk-form" name="form_elimina_risorsa" onSubmit="DeleteRisorsa()" action="categorie_elimina.php" method="GET" >
<div class="uk-alert uk-alert-danger">
<p><i class="uk-icon-warning"></i> ATTENZIONE </p>
<p>Confermi l'eliminazione della categoria <strong><categoria id="delete_nome_categoria_titolo">prova</categoria></strong>?</p>
<div class="uk-form-controls">
<input type="hidden" id="delete_id_categoria" name="id_risorsa">
<input type="hidden"id="delete_nome_categoria" name="nome_risorsa" maxlength="30">
</div>
</div>
<div class="uk-form-controls">
<button type="submit" class="uk-button uk-button-danger">Elimina</button>
<button type="button" class="uk-modal-close uk-button uk-button-success">Annulla</button>
</div>
</form>
</div>
</div>
<!-- MODAL ELIMINA SOTTOCATEGORIA -->
<div id="modal-elimina-sottocategoria" class="uk-modal uk-container-center" >
<div class="uk-modal-dialog">
<a href="" class="uk-modal-close uk-close"></a>
<h1><i class="uk-icon-minus-circle"></i> Elimina Sottocategoria</h1>
<form class="uk-form" name="form_elimina_risorsa" onSubmit="DeleteRisorsa()" action="categorie_elimina.php" method="GET" >
<div class="uk-alert uk-alert-danger">
<p><i class="uk-icon-warning"></i> ATTENZIONE </p>
<p>Confermi l'eliminazione della sottocategoria <strong><categoria id="delete_nome_sottocategoria_titolo">prova</categoria></strong>?</p>
<div class="uk-form-controls">
<input type="hidden" id="delete_id_sottocategoria" name="id_risorsa">
<input type="hidden" id="delete_nome_sottocategoria" name="nome_risorsa" maxlength="30">
</div>
</div>
<div class="uk-form-controls">
<button type="submit" class="uk-button uk-button-danger">Elimina</button>
<button type="button" class="uk-modal-close uk-button uk-button-success">Annulla</button>
</div>
</form>
</div>
</div>
<script type="text/javascript">
// Funzione che recupera la categoria dalla riga cliccata
function onRowClick(tableId, callback) {
var table = document.getElementById(tableId),
rows = table.getElementsByTagName("tr"),
i;
for (i = 0; i < rows.length; i++) {
table.rows[i].onclick = function (row) {
return function () {
callback(row);
};
}(table.rows[i]);
}
};
onRowClick("tabella_categorie", function (row){
var id_categoria = row.getElementsByTagName("td")[0].innerHTML;
var nome_categoria = row.getElementsByTagName("td")[1].innerHTML;
document.getElementById('delete_nome_categoria_titolo').innerHTML = nome_categoria;
document.getElementById('delete_nome_categoria').value= nome_categoria;
document.getElementById('delete_id_categoria').value= id_categoria;
console.log("value>>", nome_categoria);
TabellaDetailSottocategorie(id_categoria,nome_categoria)
});
onRowClick("tabella_sottocategorie", function (row){
var id_sottocategoria = row.getElementsByTagName("td")[0].innerHTML;
var nome_sottocategoria = row.getElementsByTagName("td")[1].innerHTML;
document.getElementById('delete_nome_sottocategoria_titolo').innerHTML = nome_sottocategoria;
document.getElementById('delete_nome_sottocategoria').value= nome_sottocategoria;
document.getElementById('delete_id_sottocategoria').value= id_sottocategoria;
console.log("value>>", nome_sottocategoria);
});
</script>
HTML:
<?php
//recupera i parametri passati
$id_categoria = $_GET['id_categoria'];
$nome_categoria = $_GET['nome_categoria'];
$con = mysqli_connect('localhost','root','','conti');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"ajax_demo");
$sql="SELECT id_sottocategoria, sottocategoria FROM sottocategorie WHERE id_categoria = ".$id_categoria;
$result = mysqli_query($con,$sql);
echo "<!-- Tabella sottocategorie da db -->\n";
... ometto il codice che crea la tabella .... ?>
In ognuna delle due tabelle ho aggiunto una colonna con l'icona di un cestino per aprire una finestra di conferma (div visualizzato come modal) per eliminare da database la riga selezionata.
HTML:
echo "<td><a data-uk-modal=\"{target:'#modal-elimina-categoria'}\" class=\"uk-icon-hover uk-icon-trash-o\" title=\"Elimina ".$row['categoria']."\"></a></td>";
Per la prima tebella la funzione onRowClick funziona perfettamente, recupera i vaolri della riga selezionata, popola con tali dati il form di conferma dell'eliminazione e al clic procede all'eliminazione da database.
Per la seconda tabella la funzione onRowClick non riesce a recuperare i dati della riga cliccata. Credo che non funzioni in quanto il codice della seconda tabella non è presente realmente nel primo file ma viene caricato dinamicamente dal secondo file nel primo.
Come posso allora, cliccando su una riga della seconda tabella, recuperare id e nome della riga stessa e passarli al form per chiedere conferma ed elimiare poi da database il dato?
Avrei bisogno di qualche suggerimento. Grazie