un pulsante salva per ogni ID

Domenico2013

Utente Attivo
6 Ago 2013
178
0
16
Buongiorno a tutti del forum, ho 4 campi mysql, allego la foto. Vorrei che ad ogni ID fosse collegato un tasto salva per le eventuali modifche apportate alle caselle di testo dell'id corrispondente. Tutto ciò dovrebbe avvenire tramite jquery per evitare il refresh della pagina. Il mio problema: non riesco ad associare 1 pulsante salva per ogni Id. Se ho un solo ID il pulsante funziona bene, ma se sono già 2 ID i rispettivi pulsanti non funzionano. Spero di essere stato chiaro, grazie.
 

Allegati

  • Cattura333.PNG
    Cattura333.PNG
    11,8 KB · Visite: 429
Codice:
<head>
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
//al click sul bottone del form
$("#bottone").click(function(){
//associo variabili legenda
var id_1 = $("#id_1").val();
var modello = $("#modello").val();
var stato_rip = $("#stato_rip").val();
var nome = $("#nome").val();
//chiamata ajax
$.ajax({
//imposto il tipo di invio dati (GET O POST)
type: "POST",
//Dove devo inviare i dati recuperati dal form?
url: "insert_in_mysql.php",
//Quali dati devo inviare?
data: "stato_rip=" + stato_rip + "&modello=" + modello + "&nome=" + nome + "&id_1=" + id_1,
dataType: "html",
//Inizio visualizzazione errori
success: function(msg)
{
$("#risultato").html(msg); // messaggio di avvenuta aggiunta valori al db (preso dal file risultato_aggiunta.php) potete impostare anche un alert("Aggiunto, grazie!");
alert('Salvataggio effettuato con successo.');
},
error: function()
{
alert("Chiamata fallita, si prega di riprovare..."); //sempre meglio impostare una callback in caso di fallimento
}
});
});
});
</script>
</head>

<body>
<?php
$username = "root";
$password = "";
$database = "db_dymo_label";
mysql_connect("localhost", $username, $password);
@mysql_select_db($database) or die("Impossibile selezionare il database.");
$query = "SELECT * FROM tb_dymo_label";
$risultati = mysql_query($query);
$num = mysql_numrows($risultati);
mysql_close();
echo "<b><center>Database Output</center></b><br><br>";
$i=0;
while ($i < $num) {
$id_1 = mysql_result($risultati, $i, "id");
$nome = mysql_result($risultati, $i, "nome");
$modello = mysql_result($risultati, $i, "modello");
$stato_rip = mysql_result($risultati, $i, "stato_rip");
//echo "<b>$id $nome $modello $stato_rip</b><br>";
$i++;
}
?>

<form>
<label>ID</label> <input type="text" name="id_1" id="id_1" value="<?php echo $id_1;?>"/>
<label>Modello</label> <input type="text" name="modello" id="modello" value="<?php echo $modello;?>"/>
<label>Stato Rip</label> <input type="text" name="stato_rip" id="stato_rip" value="<?php echo $stato_rip;?>"/>
<label>Nome</label> <input type="text" name="nome" id="nome" value="<?php echo $nome;?>"/>
<input type="button" id="bottone" value="Salva"/>
</form>
</body>
 
Una delle soluzioni potrebbe essere chiamare i vari campi con degli id in cui è presente un numero (1 per la prima riga,2 per la seconda,ecc.) fare una funzione con il numero come parametro:
HTML:
<label>ID</label> <input type="text" name="id_1" id="id1" value="<?php echo $id_1;?>"/>
<label>Modello</label> <input type="text" name="modello" id="modello1" value="<?php echo $modello;?>"/>
<label>Stato Rip</label> <input type="text" name="stato_rip" id="stato_rip1" value="<?php echo $stato_rip;?>"/>
<label>Nome</label> <input type="text" name="nome" id="nome1" value="<?php echo $nome;?>"/>
<input type="button" id="bottone" value="Salva" onclick="salva(1)"/>
(metti 1 sul primo, 2 sul secondo, ecc.)

Poi recuperi il numero con javascript:
HTML:
function salva(num){
var id = $("#id"+num).val();
var modello = $("#modello"+num).val();
var stato_rip = $("#stato_rip"+num).val();
var nome = $("#nome"+num).val();
//chiamata ajax
$.ajax({
//imposto il tipo di invio dati (GET O POST)
type: "POST",
//Dove devo inviare i dati recuperati dal form?
url: "insert_in_mysql.php",
//Quali dati devo inviare?
data: "stato_rip=" + stato_rip + "&modello=" + modello + "&nome=" + nome + "&id_1=" + id,
dataType: "html",
//Inizio visualizzazione errori
success: function(msg)
{
$("#risultato").html(msg); // messaggio di avvenuta aggiunta valori al db (preso dal file risultato_aggiunta.php) potete impostare anche un alert("Aggiunto, grazie!");
alert('Salvataggio effettuato con successo.');
},
error: function()
{
alert("Chiamata fallita, si prega di riprovare..."); //sempre meglio impostare una callback in caso di fallimento
}
});
}
 
Ciao Tommy03, ho provato col tuo codice, purtroppo non va. Altro consiglio? Grazie.
mi sembra che lo script che hai postato non corrisponde alla figura,
puoi postare lo script che produce la figura ?

altrimenti @Tommy03 o altri devono riscrivere tutto di nuovo perché stai chiedendo una cosa diversa,
non un bottone ma far funzionare lo script su piu righe ( decisamente un lavoro )
 
Ultima modifica:
Codice:
<head>
<title>Jquery</title>

<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
//al click sul bottone del form
$("#bottone").click(function(){
//associo variabili legenda
var id_1 = $("#id_1").val();
var modello = $("#modello").val();
var stato_rip = $("#stato_rip").val();
var nome = $("#nome").val();
//chiamata ajax
$.ajax({
//imposto il tipo di invio dati (GET O POST)
type: "POST",
//Dove devo inviare i dati recuperati dal form?
url: "insert_in_mysql.php",
//Quali dati devo inviare?
data: "stato_rip=" + stato_rip + "&modello=" + modello + "&nome=" + nome + "&id_1=" + id_1,
dataType: "html",
//Inizio visualizzazione errori
success: function(msg)
{
$("#risultato").html(msg); // messaggio di avvenuta aggiunta valori al db (preso dal file risultato_aggiunta.php) potete impostare anche un alert("Aggiunto, grazie!");
alert('Salvataggio effettuato con successo.');
},
error: function()
{
alert("Chiamata fallita, si prega di riprovare..."); //sempre meglio impostare una callback in caso di fallimento
}
});
});
});
</script>
</head>

<body>


<?php

include("leggere_credenziali_mysql.php");

mysql_connect("localhost", $user, $password);
@mysql_select_db($database) or die("Impossibile selezionare il database");

$query="SELECT * FROM $tabella";

$risultati = mysql_query($query);
$num = mysql_numrows($risultati);

if ($num == '') {
        echo "<label style=\"color:red\">Non Esiste nel Database tale contatto.</label>";
        echo header("refresh: 2; index_lettura_da_mysql.php");

exit;
    }

mysql_close();

?>

<table border="0">

<?php

$i = 0;
while ($i < $num) {

$id_1 = mysql_result($risultati, $i, "id");
$modello = mysql_result($risultati, $i, "modello");
$stato_rip = mysql_result($risultati, $i, "stato_rip");
$nome = mysql_result($risultati, $i, "nome");
?>

<tr>
<td>
<form>
<label>ID</label> <input type="text" name="id_1" id="id_1" value="<?php echo $id_1;?>"/>
<label>Modello</label> <input type="text" name="modello" id="modello" value="<?php echo $modello;?>"/>
<label>Stato Rip</label> <input type="text" name="stato_rip" id="stato_rip" value="<?php echo $stato_rip;?>"/>
<label>Nome</label> <input type="text" name="nome" id="nome" value="<?php echo $nome;?>"/>
<input type="button" id="bottone" value="Salva"/>
</form>
</td>

</tr>

<?php
$i++;
}
?>

</table>



<br/>

</body>
 
Allora al posto di mettere i numeri come avevo scritto nel post precedente, metti $i+1, mentre il javascript lascialo uguale
 
Ciao, purtroppo non riesco a farlo funzionare. Puoi postarci il codice completo di modifica? sempre se non è un disturbo. Grazie.
Scusami, nel file 'insert_in_mysql.php' ho questo codice, sta scritto bene per ricevere dalle variabili della jquery? In pratica, la pagina 'insert_in_mysql.php' come fa a sapere su quale pulsante 'Salva' associato all'id ho cliccato per recepire i dati? Grazie.
Codice:
<body>
<?php
$id_da_inviare = $_REQUEST['id_da_inviare'];
$stato_rip = $_REQUEST['stato_rip'];
$consegnato = $_REQUEST['consegnato'];

include("leggere_credenziali_mysql.php"); //includo file configurazione

$conn = new mysqli($host, $user, $password, $database);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "UPDATE $tabella SET stato_rip = '$stato_rip', consegnato = '$consegnato' WHERE id=$id_da_inviare";

if ($conn->query($sql) === TRUE) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . $conn->error;
}

$conn->close();
?>


</body>
 
Ultima modifica:
In pratica, la pagina 'insert_in_mysql.php' come fa a sapere su quale pulsante 'Salva' associato all'id ho cliccato per recepire i dati?
Fai come nel post che ho scritto sopra:
-dentro al while hai i codici per le varie righe: ognuno dei campo deve avere un id ad esempio
PHP:
id="modello<?php echo $i;?>"
-Anche il bottone per salvare deve essere determinato, quindi ci metti
PHP:
onclick="salva(<?php echo $i;?>)"
-fatto ciò per ogni riga hai dei campi con un id contenente un numero n e un pulsante (salva) che passa come parametro il numero n
-poi usando il codice che avevo messo nel post sopra crei una funzione JavaScript, che prende come parametro n, il numero inviato cliccando su Salva.

function salva(num){ var id = $("#id"+num).val(); var modello = $("#modello"+num).val(); var stato_rip = $("#stato_rip"+num).val(); var nome = $("#nome"+num).val();
-poi con questo codice, dopo aver ricevuto il numero della riga (variabile num) prendi i valori dei campo di quella stessa riga (id, modello, stato_rip, nome) e li passi nella chiamata ajax come nel codice sopra.
-infine nel file PHP devi prelevare i nomi giusti, quindi se scrivi:

data: "stato_rip=" + stato_rip + "&modello=" + modello + "&nome=" + nome + "&id_1=" + id_1,
Nel file PHP devi riceverli così:
PHP:
$stato_rip=$_POST['stato_rip'];
$modello=$_POST['modello'];
$nome=$_POST['nome'];
$id_1=$_POST['id_1'];
Non così:

$id_da_inviare = $_REQUEST['id_da_inviare']; $stato_rip = $_REQUEST['stato_rip']; $consegnato = $_REQUEST['consegnato'];
 
  • Love
Reactions: Domenico2013
Buongiorno al forum. Tommy03, voglio ringraziarti infinitamente per la spiegazione precisa e soprattutto funzionante al 100%.
Davvero non so come ringraziarti :):):) Funziona proprio come serve a me. Grazieeeeeeeeeeeeeeeeeeeeeeeeee.:):)
 

Discussioni simili