3 votes

PHP MySQL mise à jour ne mettant à jour qu'une seule ligne

J'ai mis en place une requête de mise à jour qui mettra à jour les valeurs saisies dans les champs de texte sur une boucle tant que. Cela fonctionne bien jusqu'à ce que plusieurs données soient bouclées à partir de la base de données. Alors, pour une raison quelconque, seule la dernière donnée de la boucle sera mise à jour et le reste restera inchangé.

    ";
   echo"";
   echo"";
 }
?>

2voto

F. Müller Points 2577

$_POST est un tableau aussi. Et $_POST récupère ses éléments par le nom des champs d'entrée dans le formulaire utilisé. Ainsi, vous écrasez toujours les entrées. Si vous voulez avoir plusieurs mises à jour, vous devez écrire une boucle (voir commentaires). Et utilisez le code ci-dessous pour les champs d'entrée.

Essayer :

   echo"";
   echo"";
   echo"";

J'espère que cela aidera.

1voto

maxhud Points 3034

Cela est dû au fait que tous vos inputs ont le même nom s'il y en a plus d'un, donc php ne peut pas les différencier les uns des autres.

S'il y a plus d'une ligne générée à partir de votre requête select mysql, alors vous devez donner à chaque input id un nom différent, à chaque input fname un nom différent, et à chaque input lname un nom différent.

    ";
        echo"";
        echo"";
    }
    ?>

1voto

Neil Alexander Points 100

Si id est unique, alors la clause WHERE id=foo limitera les mises à jour à un seul champ. Mais plus lié à votre PHP: Vous définissez en réalité les variables $id, $fname et $lname avant la boucle, de sorte que la ligne UPDATE utilise les "anciennes valeurs" si la boucle s'exécute plusieurs fois. De même, vous n'avez pas réellement mis la requête UPDATE dans la boucle, donc au maximum, les variables seront définies une fois, la boucle s'exécutera plusieurs fois (éventuellement) et ensuite la requête ne sera exécutée qu'une seule fois.

Le code s'exécute dans l'ordre; vous devez être plus précis en plaçant le code vous voulez qu'il s'exécute.

1voto

Lee Davis Points 1842

Vous mettez à jour la table de liste en dehors de votre boucle while. Cela contiendra les valeurs qui ont été dernièrement sélectionnées (à la ligne 7).

Comme vous échoyez plusieurs champs d'entrée, vous voudrez peut-être les déclarer comme des éléments de tableau.

echo"";

Et itérer sur chacun d'eux lors de $_POST.

1voto

Nick Points 1694

Il semble que vous voulez afficher le contenu d'une table et permettre à l'utilisateur de le modifier.

Il existe quelques outils très pratiques qui le feront pour vous, comme jqGrid.

http://www.trirand.net/demophp.aspx Cliquez sur le lien sur l'édition du côté gauche de la page jqGrid

Le composant se chargera de tout l'affichage et de l'édition. Il vous montre même comment implémenter le PHP côté serveur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X