inserire dati in tabella con ajax (ciclo foreach)

  • Creatore Discussione Creatore Discussione nim
  • Data di inizio Data di inizio

nim

Utente Attivo
11 Ott 2011
96
0
0
salve a tutti...ho fatto una pagina dove vengono estratti (tramite ciclo foreach) alcuni risultati e affianco ad essi ho messo un form con dei campi nascosti aventi come value delle variabili contenenti delle informazioni di ogni risultato apparso con il coclo. Il form contiene un pulsante submit che mi archivia in un database queste informazioni tramite ajax e php...il problema è che dovunque io clicchi mi archivia sempre il primo risultato che appare con il ciclo foreach..avete qualche idea del motivo?
 
forse hai dato il name uguale a tutti gli input?

è difficile indovinare senza qualche riga di codice
 
sì il nome è uguale perchè sono tutti risultati del ciclo foreach ...ora il codice:
PHP:
foreach ($friends["data"] as $value) {
           
            echo 'foto prof di'. $value["name"] .'<a href="http://www.facebook.com/' . $value["id"] . '"><img src="https://graph.facebook.com/' . $value["id"] . '/picture"/>g</a>
<form name="add_friend">
    <input type="hidden" name="mio_id" id="mio_id" value="'. $userInfo["id"] .'">
   <input type="hidden" name="id_friend" id="id_friend" value="'. $value["id"] .'">
<input type="hidden" name="name_friend" id="name_friend" value="'. $value["name"] .'">
    <input type="button" id="submit" value="Invia i dati">
</form>

<div id="risultato"></div>';
            
          

        }
e questo è il ciclo: prima di questo ci sta la parte ajax:
Codice:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {

  //al click sul bottone del form
  $("#submit").click(function(){

    //associo variabili
    var mio_id = $("#mio_id").val();
    var id_friend = $("#id_friend").val();
    var name_friend = $("#name_friend").val();
  //chiamata ajax
    $.ajax({

     //imposto il tipo di invio dati (GET O POST)
      type: "POST",

      //Dove devo inviare i dati recuperati dal form?
      url: "risultato_aggiunta.php",

      //Quali dati devo inviare?
      data: "mio_id=" + mio_id + "&id_friend=" + id_friend + "&name_friend=" + name_friend,
      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!");
      },
      error: function()
      {
        alert("Chiamata fallita, si prega di riprovare..."); //sempre meglio impostare una callback in caso di fallimento
      }
    });
  });
});
</script>
se me lo dite posto anche lo script risultato_aggiunta.php che inserisce i dati nel database
 
hai già fatto un var_dump di $friends["data"] per vedere se ci sono i dati giusti?

PHP:
var_dump($friends["data"])
 
si si è tutto apposto... Credo che il problema sia proprio negli id, ma come faccio a mettere un id diverso per ogni risultato se questi ultimi sono risultati di un ciclo foreach?
 
Cosi gli passi l'id giusto in teoria

PHP:
 <input type="hidden" name="mio_id" id="mio_id" value="'. $userInfo["id"] .'">

dovrebbe funzionare

metti var_dump($userInfo["id"]) nella pagina che fa l'insert e semmai posta anche quella

VEDO ORA

non deovrebbe essere $value["id"] ?

Ah no scusa Sono fuso oggi
 
Ultima modifica:
aggiungendo il var_dump alla pagina che mi va l'insert , nei risultati appare (oltre a "ok") anche un NULL.
posto il codice che mi fa l'insert:
PHP:
<?php
include "../include/dbconfig.php";
var_dump($userInfo["id"]);
		

		$mio_id = $_POST['mio_id'];
		$id_friend = $_POST['id_friend'];
$name_friend = $_POST['name_friend'];
		$sql = "INSERT INTO my_friends_selected (mio_id,id_friend_selected,name_friend_selected) VALUES ('$mio_id','$id_friend','$name_friend')";

		if (@mysql_query($sql,$conn)) 

			{ echo 'ok'; }
					else { echo 'no'; } 
?>
anche se credo che l'errore stia nel codice ajax che probabilmente mi preleva l'id sbagliato...
 
PArli di questo?

Codice:
var id_friend = $("#id_friend").val();

Non conosco jquery purtroppo

Forse potresti incrementare una varibile ad oogni iterazione del ciclo

aggiungerla all'id

e recuperlarla con javascript

per poi fare + o - cosi

PHP:
<input type="hidden" name="id_friend" id="id_friend' . $incremento .'" value="'. $value["id"] .'">
Codice:
var id_friend = $("#id_friend" + incremento).val();

Probabilmente c'è una solouzione in jquery ma non avrei idea, ne sto sparando una :-)
 
e la variabile incremento come la creo? :( non mi capisco neanche un po' :(
 
Pensavo a qualcosa del genere
nel ciclo
PHP:
// inizializzi la variabile fuori dal ciclo
$i = 0;
foreach ($friends["data"] as $value) {
    // questo per poi recuperarlo con javascript
    echo '<input type="hidden" id="incremento" value="$i"/>';
    // aggiungi l'incremento all'id    
    echo '<input type="hidden" name="id_friend" id="id_friend' . $i . '" value="' . $value["id"] . '">';
    // incrementi la variabile
    $i++;
}
nel javascript
Codice:
// recuperi la variabile incremento
var incremento = $("#incremento").val();
// la aggiungi all'id
var id_friend = $("#id_friend" + incremento).val();

ma magari la sto sparando grossa

Prova al massimo non funziona :fonzie:


AH no non puo funzionare Ora ci ripenso
 
Ultima modifica:

Discussioni simili