2009-06-02 7 views
1

J'ai un formulaire de plusieurs pages qui utilise plusieurs tables dans mysql pour les valeurs saisies. Une des pages a un formulaire qui doit permettre à l'utilisateur de cliquer sur un + pour ajouter une ligne supplémentaire s'il souhaite inclure des informations supplémentaires. Il peut y avoir n'importe quel nombre de lignes ajoutées. Lorsque l'utilisateur clique sur le bouton +, jquery et php insèrent l'ID utilisateur actuel dans une ligne de la table de base de données. Cette information est ensuite mise à jour lorsque d'autres informations sont entrées. Le problème que j'ai est de savoir comment insérer n'importe quel nombre de lignes pour cet id particulier - quand les données sont entrées, un événement de flou envoie les données au code PHP pour mettre à jour la base de données. Cependant, le problème que j'ai est qu'il mettra à jour toutes les lignes avec cet identifiant d'utilisateur particulier et pas l'actuel. Quel serait le meilleur moyen de prendre les données saisies sur les nouvelles lignes et de mettre à jour la base de données - je suppose que je vais devoir utiliser la valeur ID plutôt que la valeur userid car cela sera unique, ou y a-t-il un autre moyen de le faire?Jquery -> php -> champs de forme mysql et dynamique

Merci pour toute suggestion que vous pouvez donner, celui-ci assombrit mon esprit actuellement ...

Répondre

1

Eh bien, je pense que vous devez utiliser une paire d'identifiants, votre ID utilisateur et l'ID du champ. Pour l'édition seulement, la valeur de fichier serait assez grande mais quand vous aurez besoin de lister tous les champs de l'utilisateur, une autre référence sera nécessaire.

1

Vous avez raison quand vous dites que vous devez utiliser la clé primaire de la table que vous mettez à jour, plutôt que de l'étranger key (UserId dans votre cas) qui se produit plusieurs fois sur votre table. Cela vous garantit de mettre à jour la ligne que vous attendez. Une alternative serait d'affiner les lignes que vous mettez à jour - par exemple en mettant seulement à jour le plus récent/celui avec l'ID le plus élevé ou en utilisant une combinaison de champs qui rendent l'enregistrement unique. Cependant, l'utilisation de la clé primaire est le meilleur moyen de résoudre votre problème.

1

Oui, vous avez besoin de la valeur d'ID des lignes que vous insérez, et pas seulement de l'ID utilisateur. Je suppose que ce que vous voulez faire est de renvoyer le mysql LAST_INSERT_ID() de votre script Ajax qui fait l'insertion lorsque vous cliquez sur +, et de pousser cet ID dans les informations que vous utiliserez plus tard pour mettre à jour la ligne.

+0

Quel serait le meilleur moyen d'obtenir le LAST_INSERT_ID() renvoyé au formulaire principal? Un $ _SESSION serait-il la solution? – Choog

+0

Ma pensée était que vous le retransmettez en JSON ou XML à partir du script. – chaos

1

ouais, votre meilleur pari est d'avoir mysql retourner un identifiant unique pour chaque ligne créée, alors assurez-vous juste quand vous éditez une ligne sur votre formulaire, pour envoyer l'id avec elle. Vous pouvez maintenant éditer une ligne à la fois.

+0

Avez-vous une suggestion sur la façon d'obtenir l'identifiant unique retourné pour chaque ligne créée? Je vois d'où vous venez, mais je ne sais pas comment le mettre en pratique. – Choog

+0

vous pouvez: - ajouter "; select last_insert_id();" à la fin de votre requête d'insertion pour obtenir le dernier identifiant inséré. - vous pouvez obtenir l'identifiant en appelant mysql_insert_id(); - vous pouvez obtenir l'identifiant en appelant mysqli-> insert_id(); vérifiez les références php: [http://www.php.net/manual/fr/function.mysql-insert-id.php] et et [http://www.php.net/manual/fr/mysqli .insert-id.php] puis renvoyez l'id à travers json jquery, consultez [http://docs.jquery.com/Ajax/jQuery.ajax] pour les exemples puis sur chaque mise à jour que vous venez de passer l'identifiant de la ligne que vous souhaitez mettre à jour – justlost