Problem mit Leerzeichen im name-Attribut – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self Problem mit Leerzeichen im name-Attribut Wed, 02 Aug 17 07:59:23 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700640#m1700640 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700640#m1700640 <p>Hallo zusammen,</p> <p>ich möchte eine Oberfläche erstellen, mit der ich Datensätze aus einer Datenbank auswählen und löschen kann.</p> <p>Vorgestellt habe ich mir das so:</p> <pre><code class="block language-php"><span class="token variable">$sql</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"SELECT * FROM fragebogen"</span><span class="token punctuation">;</span> <span class="token variable">$result</span> <span class="token operator">=</span> <span class="token function">mysqli_query</span><span class="token punctuation">(</span><span class="token variable">$c</span><span class="token punctuation">,</span> <span class="token variable">$sql</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$namen</span> <span class="token operator">=</span> <span class="token keyword">array</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token variable">$row</span> <span class="token operator">=</span> <span class="token function">mysqli_fetch_array</span><span class="token punctuation">(</span><span class="token variable">$result</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token variable">$namen</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$row</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'titel'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<form name='f' method='post' action='Loeschen.php'>"</span><span class="token punctuation">;</span> <span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token variable">$namen</span> <span class="token keyword">as</span> <span class="token variable">$i</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<input type=checkbox name=<span class="token interpolation"><span class="token variable">$i</span></span> />"</span> <span class="token operator">.</span><span class="token variable">$i</span> <span class="token operator">.</span><span class="token string double-quoted-string">"<br>"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<input type='submit' name='löschen' value='löschen' /></form>"</span><span class="token punctuation">;</span> <span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token variable">$namen</span> <span class="token keyword">as</span> <span class="token variable">$p</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token variable">$p</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token variable">$delete</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"DELETE FROM Fragebogen WHERE titel='<span class="token interpolation"><span class="token variable">$p</span></span>'"</span><span class="token punctuation">;</span> <span class="token function">mysqli_query</span><span class="token punctuation">(</span><span class="token variable">$c</span><span class="token punctuation">,</span> <span class="token variable">$delete</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<big><span class="token interpolation"><span class="token variable">$p</span></span></big> wurde gelöscht <br>"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre> <p>Die Datensätze werden selektiert und in einem Array gespeichert. Für jeden Datensatz soll eine Checkbox mit Name=Titel generiert werden. Beim submit werden alle gewählten Datensätze gelöscht.</p> <p>Nun zu meiner Frage:</p> <p>Das Beispiel funktioniert, jedoch nur wenn der Titel des Fragebogens keine Leerzeichen enthält.</p> <p>Sind Leerzeichen enthalten, wird der Teil</p> <pre><code class="block language-php"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token variable">$p</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token variable">$delete</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"DELETE FROM Fragebogen WHERE titel='<span class="token interpolation"><span class="token variable">$p</span></span>'"</span><span class="token punctuation">;</span> <span class="token function">mysqli_query</span><span class="token punctuation">(</span><span class="token variable">$c</span><span class="token punctuation">,</span> <span class="token variable">$delete</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<big><span class="token interpolation"><span class="token variable">$p</span></span></big> wurde gelöscht <br>"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre> <p>nicht ausgeführt. Kann es sein, dass das "Name"-Attribut der Checkbox nicht richtig nicht den gewünschten Wert annimmt?</p> <p>Vielen Dank im Voraus für eure Hilfe!</p> <p>Gruß Maetzzen</p> Problem mit Leerzeichen im name-Attribut Wed, 02 Aug 17 08:04:49 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700642#m1700642 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700642#m1700642 <p>Hi,</p> <blockquote> <p>Das Beispiel funktioniert, jedoch nur wenn der Titel des Fragebogens keine Leerzeichen enthält.</p> </blockquote> <p>Attributwerte, die Leerzeichen enthalten, müssen in Anführungszeichen stehen.</p> <blockquote> <p>nicht ausgeführt. Kann es sein, dass das "Name"-Attribut der Checkbox nicht richtig nicht den gewünschten Wert annimmt?</p> </blockquote> <p>Schau Dir halt im Browser im Quelltext an, was dort ankommt …</p> <p>cu,<br> Andreas a/k/a MudGuard</p> Problem mit Leerzeichen im name-Attribut Wed, 02 Aug 17 08:17:58 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700646#m1700646 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700646#m1700646 <p>Hi,</p> <p>ich habe gerade den Quelltext angesehen</p> <p>Folgendes wird ausgegeben:</p> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>form</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>f<span class="token punctuation">'</span></span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>post<span class="token punctuation">'</span></span> <span class="token attr-name">action</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>Loeschen.php<span class="token punctuation">'</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>checkbox<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>das ist ein fragebogen<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span>das ist ein fragebogen<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>checkbox<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>Fragebogen 1<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span>Fragebogen 1<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>checkbox<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>Fragebogen 41<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span>Fragebogen 41<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>checkbox<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>Fragebogen 4431<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span>Fragebogen 4431<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>checkbox<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>Fragebogen 51<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span>Fragebogen 51<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>checkbox<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>Fragebogen51<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span>Fragebogen51<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>submit<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>löschen<span class="token punctuation">'</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>löschen<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>form</span><span class="token punctuation">></span></span> </code></pre> <p>Der Name entspricht also dem Titel des Fragebogens, jedoch kann ich in diesem Beispiel nur den letzten Fragebogen ("Fragebogen51") löschen.</p> <p>Kann es sein, dass mein</p> <pre><code class="block language-php"> <span class="token variable">$delete</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"DELETE FROM Fragebogen WHERE titel='<span class="token interpolation"><span class="token variable">$p</span></span>'"</span><span class="token punctuation">;</span> </code></pre> <p>nicht stimmt? Das würde mich aber wundern, da</p> <pre><code class="block language-php"> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<big><span class="token interpolation"><span class="token variable">$p</span></span></big> wurde gelöscht <br>"</span><span class="token punctuation">;</span> </code></pre> <p>dennoch ausgegeben werden müsste.</p> <p>PS: Ein Fragebogen besteht aus den Eigenschaften "titel" und "benutzername" (Ersteller).</p> <p>Gruß Maetzzen</p> Problem mit Leerzeichen im name-Attribut Wed, 02 Aug 17 08:34:23 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700651#m1700651 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700651#m1700651 <p>Tach!</p> <blockquote> <p>ich habe gerade den Quelltext angesehen</p> </blockquote> <p>Der passt nicht zu deinem im Ausgangsposting gezeigten Code. Hier sind korrekterweise Anführungszeichen gesetzt, in deinem PHP-Code fehlen sie.</p> <blockquote> <p>Der Name entspricht also dem Titel des Fragebogens, jedoch kann ich in diesem Beispiel nur den letzten Fragebogen ("Fragebogen51") löschen.</p> </blockquote> <p>Mit Anführungszeichen musst du den gesamten Wert bekommen.</p> <blockquote> <p>Kann es sein, dass mein</p> <pre><code class="block language-php"> <span class="token variable">$delete</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"DELETE FROM Fragebogen WHERE titel='<span class="token interpolation"><span class="token variable">$p</span></span>'"</span><span class="token punctuation">;</span> </code></pre> <p>nicht stimmt?</p> </blockquote> <p>Auch das, denn da fehlt die Beachtung des <a href="https://wiki.selfhtml.org/wiki/Kontextwechsel" rel="nofollow noopener noreferrer">Kontextwechsels</a>.</p> <blockquote> <p>Das würde mich aber wundern, da</p> <pre><code class="block language-php"><span class="token keyword">echo</span> <span class="token string double-quoted-string">"<big><span class="token interpolation"><span class="token variable">$p</span></span></big> wurde gelöscht <br>"</span><span class="token punctuation">;</span> </code></pre> <p>dennoch ausgegeben werden müsste.</p> </blockquote> <p>Debug-Ausgaben können beim Vergleichen zwischen Wunsch und Wirklichkeit helfen.</p> <p>dedlfix.</p> Problem mit Leerzeichen im name-Attribut Wed, 02 Aug 17 10:37:42 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700664#m1700664 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700664#m1700664 <p>Hallo</p> <blockquote> <p>Folgendes wird ausgegeben:</p> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>form</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>f<span class="token punctuation">'</span></span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>post<span class="token punctuation">'</span></span> <span class="token attr-name">action</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>Loeschen.php<span class="token punctuation">'</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>checkbox<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>das ist ein fragebogen<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span>das ist ein fragebogen<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>checkbox<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>Fragebogen 1<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span>Fragebogen 1<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>checkbox<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>Fragebogen 41<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span>Fragebogen 41<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>checkbox<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>Fragebogen 4431<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span>Fragebogen 4431<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>checkbox<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>Fragebogen 51<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span>Fragebogen 51<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>checkbox<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>Fragebogen51<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span>Fragebogen51<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>submit<span class="token punctuation">'</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>löschen<span class="token punctuation">'</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">'</span>löschen<span class="token punctuation">'</span></span> <span class="token punctuation">/></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>form</span><span class="token punctuation">></span></span> </code></pre> <p>Der Name entspricht also dem Titel des Fragebogens, jedoch kann ich in diesem Beispiel nur den letzten Fragebogen ("Fragebogen51") löschen.</p> </blockquote> <p>Im Attribut „name“ steht der Name des Formularelements, was dazu führt, dass du mehrere POST-Elemente (<code>$_POST['Fragebogen 1']</code>, <code>$_POST['Fragebogen 41']</code>, und so weiter) übermittelt bekommst. Diese haben jedoch keine Werte, die in den Formularelementen jedoch im Attribut „value“ stehen müssten. Dein HTML-Aufbau ist also fehlerhaft.</p> <p>Da die Checkboxen offensichtlich eine Gruppe bilden, in der du keinen, einen oder mehrere Werte auswählen kannst, sollten sie alle <strong>einen</strong> Namen tragen und für die Verarbeitung mit PHP als Array gekennzeichnet sein (z.B. <code>name="frageboegen[]"</code>). Die namen der Fragebögen wechseln in die Value-Attribute, so dass sie im auswertenden PHP-Skript, deinem Beispiel folgend, als <code>$_POST['frageboegen'][0]</code> - <code>$_POST['frageboegen'][4]</code> mit den Fragebogennamen als Werte zur Verfügung stünden. Die Anzahl der Elemente richtet sich nach der Anzahl der ausgewählten Checkboxen. Ist keine ausgewählt, wird auch kein einziges <code>$_POST['frageboegen']</code> übermittelt.</p> <blockquote> <pre><code class="block language-php"> <span class="token variable">$delete</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"DELETE FROM Fragebogen WHERE titel='<span class="token interpolation"><span class="token variable">$p</span></span>'"</span><span class="token punctuation">;</span> </code></pre> </blockquote> <p>Vergiss nicht die kontextgerechte Maskierung. Für den Fall der Verwendung der mysqli-Funktionen wäre das für einen String <code class="language-php"><span class="token string double-quoted-string">"… WHERE titel='"</span><span class="token operator">.</span> <span class="token function">mysqli_real_escape_string</span><span class="token punctuation">(</span><span class="token variable">$connection</span><span class="token punctuation">,</span> <span class="token variable">$p</span><span class="token punctuation">)</span> <span class="token operator">.</span><span class="token string double-quoted-string">"'"</span></code>.</p> <p>Tschö, Auge</p> <div class="signature">-- <br> Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.<br> Toller Dampf voraus von Terry Pratchett </div> Problem mit Leerzeichen im name-Attribut Wed, 02 Aug 17 09:45:50 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700660#m1700660 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700660#m1700660 <p>Hallo Maettzen,</p> <p>du hast die Seitenaufbereitung und den Lösch-Code vermischt. Das führt - selbst wenn der DELETE funktioniert - dazu, dass man nach dem ersten Löschen nicht sieht, dass etwas gelöscht wurde. Zumindest musst Du dafür sorgen, dass eine gelöschte Zeile nicht mehr ausgegeben wird. Dafür musst Du Deinen Code umstellen. Wenn $_POST[$p] existierst, musst Du löschen, SONST ausgeben.</p> <p>Dass Leerzeichen nicht funktionieren, kann ggf. daran liegen, dass die Maskierung des Leerzeichens in den Post-Daten beim Schreiben ins $_POST Array nicht rückgängig gemacht wird. Der Browser schickt nicht "Fragebogen 1", sondern "Fragebogen+1=on&l%C3%B6schen=l%C3%B6schen".</p> <p>Gib mal $p aus, zwischen for und if(isset), und schreibt auch mal einen var_dump vom $_POST.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> Dosen sind silbern </div> Problem mit Leerzeichen im name-Attribut Wed, 02 Aug 17 09:47:21 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700661#m1700661 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700661#m1700661 <p>Tach!</p> <blockquote> <p>Dass Leerzeichen nicht funktionieren, kann ggf. daran liegen, dass die Maskierung des Leerzeichens in den Post-Daten beim Schreiben ins $_POST Array nicht rückgängig gemacht wird. Der Browser schickt nicht "Fragebogen 1", sondern "Fragebogen+1=on&l%C3%B6schen=l%C3%B6schen".</p> </blockquote> <p>Dann wäre PHP kaputt, denn das kümmert sich bereits darum.</p> <p>dedlfix.</p> Problem mit Leerzeichen im name-Attribut Wed, 02 Aug 17 11:20:56 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700670#m1700670 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700670#m1700670 <p>Hallo dedlfix,</p> <p>ok, das wusste ich nicht genau - ich habe noch nie name Attribute mit Space verwendet und hatte kein PHP zum probieren zur Hand.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> Dosen sind silbern </div> Problem mit Leerzeichen im name-Attribut Wed, 02 Aug 17 10:42:15 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700665#m1700665 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700665#m1700665 <p>Tach!</p> <blockquote> <p>Im Attribut „name“ steht der Name des Formularelements, was dazu führt, dass du mehrere POST-Elemente (<code>$_POST['Fragebogen 1']</code>, <code>$_POST['Fragebogen 41']</code>, und so weiter) übermittelt bekommst. Diese haben jedoch keine Werte, die in den Formularelementen jedoch im Attribut „value“ stehen müssten. Dein HTML-Aufbau ist also fehlerhaft.</p> </blockquote> <p>Ohne value wird "on" als Wert genommen. Das ist nicht das Problem.</p> <p>dedlfix.</p> Problem mit Leerzeichen im name-Attribut Wed, 02 Aug 17 11:51:39 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700675#m1700675 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700675#m1700675 <p>Hallo dedlfix,</p> <p>habe jetzt mal live probieren können... (PHP 7.1.8 auf IIS mit fastCGI)</p> <p>Die Lösung ist: Das ist ein Legacy-Problem. Bis PHP 5.3 gab es die register_globals Option, und wenn die auf TRUE stand (Default vor PHP 4.2), wurde jeder gepostete Wert zu einer globalen Variablen.</p> <p>Variablennamen dürfen weder Punkt noch Space enthalten. Deswegen konvertiert PHP sie in Unterstriche.</p> <p>Der Grund für die Konvertierung ist weg. Die Konvertierung nicht. Und ich habe jetzt in php.ini auch nicht spontan einen Schalter gefunden, um das zu ändern.</p> <p>So geht's:</p> <pre><code class="block language-php"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token function">str_replace</span><span class="token punctuation">(</span><span class="token string single-quoted-string">' '</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'_'</span><span class="token punctuation">,</span> <span class="token variable">$p</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span> </code></pre> <p><em>Rolf</em></p> <div class="signature">-- <br> Dosen sind silbern </div> Problem mit Leerzeichen im name-Attribut Wed, 02 Aug 17 11:57:26 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700679#m1700679 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700679#m1700679 <p>Tach!</p> <blockquote> <p>Die Lösung ist: Das ist ein Legacy-Problem. Bis PHP 5.3 gab es die register_globals Option, und wenn die auf TRUE stand (Default vor PHP 4.2), wurde jeder gepostete Wert zu einer globalen Variablen.</p> <p>Variablennamen dürfen weder Punkt noch Space enthalten. Deswegen konvertiert PHP sie in Unterstriche.</p> </blockquote> <p>Trifft aber nur auf Variablennamen zu. Keys von Arrays können alle möglichen Zeichen enthalten. Da konvertiert auch PHP nichts, soweit ich weiß. Eine Ausnahme gibts bei <input type=image>, aber das nimmt man ja kaum.</p> <p>Im Zweifelsfall mal mit <code>var_dump($_POST)</code> oder <code>print_r($_POST)</code> schauen, was da wirklich ankommt.</p> <p>dedlfix.</p> Problem mit Leerzeichen im name-Attribut Thu, 03 Aug 17 12:24:04 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700776#m1700776 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700776#m1700776 <p>Vielen Dank Rolf!</p> <p>Daran hat es gelegen. Mein Prof konnte mir auch nicht weiterhelfen, da</p> <blockquote> <p>ich habe noch nie name Attribute mit Space verwendet</p> </blockquote> <p>dies ja eher die Ausnahme darstellt.</p> <p>Jetzt habe ich lediglich noch ein Problem, dass ich Datensätze, die mit einem Leerzeichen beginnen, nicht löschen kann. Das versuche ich aber zu vermeiden, indem ich diese beim Erstellen gleich gar nicht zulasse!</p> <p>Nochmals danke!</p> <p>Gruß Maetzzen</p> Problem mit Leerzeichen im name-Attribut Wed, 02 Aug 17 12:01:06 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700682#m1700682 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700682#m1700682 <p>Hallo dedlfix,</p> <blockquote> <p>Keys von Arrays können alle möglichen Zeichen enthalten.</p> </blockquote> <p>Grundsätzlich schon…</p> <blockquote> <p>Im Zweifelsfall mal mit var_dump($_POST) oder print_r($_POST) schauen, was da wirklich ankommt.</p> </blockquote> <p>Hab ich doch, sonst hätte ich das nicht so geschrieben. Offenbar hat man bei Einführung der Superglobals darauf Wert gelegt, dass die Namen der erzeugten Globals und die Array-Keys identisch sind.</p> <p>Edit: Siehe auch <a href="http://php.net/manual/en/language.variables.external.php" rel="noopener noreferrer">hier</a>, erste Note.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> Dosen sind silbern </div> Problem mit Leerzeichen im name-Attribut Thu, 03 Aug 17 12:53:11 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700784#m1700784 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700784#m1700784 <p>Hallo Maetzzen,</p> <p>habe gerade nochmal geguckt - der Browser postet das noch zurück (Namen waren " Bo.x 1" und "Box 2")</p> <pre><code class="block">+Bo.x+1=on&Box+2=on&l%C3%B6schen=l%C3%B6schen </code></pre> <p>aber PHP trimmt es weg. Leerstelle vorneweg - pfui ;-)</p> <p>Entweder setzt Du irgendeine Konstante davor_</p> <pre><code class="block language-php"><span class="token keyword">echo</span> <span class="token string double-quoted-string">"<input type=checkbox name='id<span class="token interpolation"><span class="token variable">$i</span></span>' />"</span> <span class="token operator">.</span><span class="token variable">$i</span> <span class="token operator">.</span><span class="token string double-quoted-string">"<br>"</span><span class="token punctuation">;</span> </code></pre> <p>die du beim Auslesen aus $_POST wieder entfernst, oder du musst solche Namen - wie du sagtest - von vornherein vermeiden.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> Dosen sind silbern </div> Problem mit Leerzeichen im name-Attribut Thu, 03 Aug 17 13:17:45 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700790#m1700790 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700790#m1700790 <p>Tach!</p> <blockquote> <p>oder du musst solche Namen - wie du sagtest - von vornherein vermeiden.</p> </blockquote> <p>Besser wäre es, Werte nicht als Namen zu verwenden.</p> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>checkbox<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>title[]<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>hier der wert<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>checkbox<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>title[]<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>hier ein anderer wert<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>checkbox<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>title[]<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>noch besser IDs verwenden, wenn vorhanden<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> </code></pre> <p>Man bekommt nun aufgrund der <code>[]</code> in $_POST['title'] ein Array, durch das man mit foreach laufen kann.</p> <pre><code class="block language-php"><span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'title'</span><span class="token punctuation">]</span> <span class="token keyword">as</span> <span class="token variable">$title</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">var_dump</span><span class="token punctuation">(</span><span class="token variable">$title</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>dedlfix.</p> Problem mit Leerzeichen im name-Attribut Thu, 03 Aug 17 13:43:03 Z https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700796#m1700796 https://forum.selfhtml.org/self/2017/aug/2/problem-mit-leerzeichen-im-name-attribut/1700796#m1700796 <p>Hallo dedlfix,</p> <p>stimmt, habe Auges diesbezüglichen Hinweis ganz aus selbigen verloren.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> Dosen sind silbern </div>