Foreach aktiviert nur das erste Kontrollkästchen, wenn es aktiviert ist

8

Ich arbeite an dem folgenden Code, um Checkboxen aus einem Formular auszuwählen. Wenn ich das erste Kontrollkästchen ankreuze funktioniert alles super. Wenn ich ein anderes Kontrollkästchen ankreuze, erhalte ich den Fehler "Undefinierter Index" beim Senden von bulkcopy form. Beachten Sie, dass ich die Checkboxen mit der Post-Methode bekomme und die Schaltfläche zum Absenden über den Checkboxen liegt aufgrund der Komplexität der Position des Formulars und der Felder. Was ich im Wesentlichen brauche, ist, mehrere Checkboxen auszuwählen und bestimmte Werte zur Datenbank hinzuzufügen.

%Vor%

Der Code des Formulars finden Sie unten:

%Vor%

Jede Hilfe wird sehr geschätzt. Danke.

    
Evan Sap 14.04.2016, 07:43
quelle

8 Antworten

2

Sie haben ein Problem hier

%Vor%

Es gibt keine schließende Klammer für die while-Schleife, und das Formular wird geschlossen, nachdem das erste Kontrollkästchen hinzugefügt wurde. Wenn dieses Kontrollkästchen nicht aktiviert ist, wird die Eingabe nicht gebucht, also der undefinierte Index. Stellen Sie sicher, dass Sie das Formular erst schließen, nachdem alle Zeilen hinzugefügt wurden, beispielsweise

%Vor%     
Arleigh Hix 29.04.2016 06:46
quelle
1

Nach der Überprüfung des HTML-Rohdaten der von Ihnen bereitgestellten vollständigen Seite ist klar, dass das Problem darin besteht, dass Sie versuchen, eine Verschachtelung durchzuführen mehrere Formulare, die ungültiges HTML ist. Bitte lesen Sie diese Antwort für weitere Informationen. Diese Antwort verlinkt auf eine Workaround , aber es ist ein hässlicher Hack und sollte wahrscheinlich vermieden werden.

Ich glaube, dass die richtige HTML-Lösung in Ihrem Fall ein einzelnes Formular ist. Derzeit haben Sie mehrere geschachtelte Formulare, die an folgende Speicherorte gesendet werden:

  1. bulkcopy.php? von = sights
  2. sightorder.php? id = 1
  3. copyto.php? von = sights & amp; id = 1
  4. copyto.php? von = sights & amp; id = 46
  5. usw. ...

Was Sie tun können, ist ein einzelnes Formular, das festlegt, welche Aktion basierend auf der Schaltfläche zum Senden ausgewählt wurde. Zum Beispiel:

%Vor%     
mister martin 28.04.2016 21:07
quelle
0

Wenn Sie das Kontrollkästchen Variable eine Tabelle $ _POST ['id'] ist wenn du das tust

%Vor%

Wenn Sie nicht die erste Eingabe der ersten Variablen überprüfen

%Vor%

Sie können eine andere Bedingung in der foreach

machen %Vor%     
bfahmi 14.04.2016 07:53
quelle
0

Ihr Formular enthält nicht POST eine Eingabe mit dem Namen 'room'. Wenn Sie versuchen, es mit dieser Zeile $room = mysql_real_escape_string($_POST['room']); zu überprüfen, gibt es daher kein Element im Array $_POST mit dem Index ' room ', daher der undefinierte Indexfehler.

Um solche Dinge zu debuggen, ist es hilfreich, die Request / Response-Header Ihrer Formularübertragung zu analysieren. Wenn Sie Chrome verwenden, drücken Sie STRG + UMSCHALT + I, um die Entwicklerkonsole aufzurufen, wählen Sie die Registerkarte "Netzwerk" aus, und zeigen Sie beim Übergeben des Formulars die Details des angezeigten Eintrags an. Sie werden hier die Namen und Werte der Dinge sehen können, die gesendet werden, und Ihnen eine Vorstellung davon geben, wo die Dinge falsch laufen. Andere Browser sind verfügbar, und jeder hat seine respektablen Versionen davon.

Bevor Sie auf Variablen zugreifen, die Sie selbst nicht definiert haben oder auf die Sie sich nicht verlassen können (z. B. Formularübergaben), sollten Sie isset() verwenden, um sicherzustellen, dass die Variable existiert, bevor Sie sie verwenden Sie bekommen und erlauben Ihnen auch zu fangen, wo es schief geht:

%Vor%     
Alfie 28.04.2016 00:13
quelle
0

Welches ist die Seite, die Sie aufrufen, sightorder.php oder copyto.php? Mit welcher Schaltfläche senden, Bestellung oder kopieren?

In beiden Fällen senden Sie die ID per GET nicht per POST.

Welche Zeile erzeugt den Fehler?

Luca

    
luca3003 03.05.2016 12:34
quelle
0
%Vor%     
Medet Ahmetson Atabayev 03.05.2016 06:37
quelle
0

Du hast dir selbst ein Problem gemacht.

Was ich verstehe, haben Sie Probleme beim Senden mehrerer Kontrollkästchen der Spalte "Eintragsname" mit der Schaltfläche "Bulk-Kopie".

So sollte es funktionieren. Das liegt daran, dass Sie Ihr Formular in der Spalte "Anzeigereihenfolge" schließen, wodurch es im Wesentlichen nur das erste Kontrollkästchen enthält. Wenn Sie alle markierten Checkboxen in das "Bulkcopy" -Skript stellen möchten, müssen Sie es entweder als separates Formular für alle Checkboxen deklarieren oder JS verwenden, z. mit Ihrem eingeschlossenen jQuery:

%Vor%

Haken Sie etwas wie oben mit z. on('click') Ihrer smbit-Schaltfläche. Hier auf SO gibt es pletny der Beispiele, wie man das Formular vorbereitet und schickt, verwendend JS.

Bearbeiten:

gibt es noch einen einfacheren Weg. Sie müssen id zu Ihrem Formular hinzufügen:

%Vor%

und dann setzen Sie Ihre Kontrollkästchen so, dass sie zu ihm gehören:

%Vor%

das sollte Ihr Problem leicht beheben.

Vergessen Sie nicht, überzählige schließende Formular-Tags zu entfernen:

%Vor%

Sie können Ihre Lösung später leicht beschädigen. Schließen Sie gleich nach dem Absenden-Button:

%Vor%     
yergo 04.05.2016 08:50
quelle
0

In Ihrem letzten generierten HTML befinden sich die Eingaben, die Sie einreichen möchten, nicht in bulkcopy form. Wie andere darauf hingewiesen haben, sollten Sie Ihr HTML-Markup ändern.Ein schneller Weg, dies ohne Änderung Ihres Markups zu machen, ist die Verwendung von Javascript. Fügen Sie dies einfach an den unteren Rand Ihres html.It wird die Eingaben, die Sie eingereicht werden sollen und sie anhängen zum bulkcopy Formular.

%Vor%

Sie sollten auch mysql_num_rows() verwenden, um zu prüfen, ob Sie tatsächlich ein Ergebnis haben, bevor Sie versuchen, auf sie zuzugreifen und sie zum Einfügen in die Datenbank zu verwenden. Das Problem mit Ihrem Code ist, dass die Variablen in

enthalten sind %Vor%

sind niemals definiert, wenn die Ergebnismenge leer ist. Obwohl sie nie definiert sind, versuchen Sie, sie später in einer Einfügeabfrage zu verwenden. Überprüfen Sie einfach, ob Sie zuerst Ergebnisse haben:

%Vor%     
George Pant 27.04.2016 12:22
quelle

Tags und Links