foreach-Problem
Kalle_B
- php
0 Klaus0 Vinzenz Mai0 Kalle_B0 EKKi0 Kalle_B
0 dedlfix
Hallole,
in allen Eingabefeldern möchte ich das Hohkomma durch ein Minuszeichen ersetzen.
Im Einzelfeld klappt das:
$_POST['firma1'] = str_replace( "'", '-', $_POST['firma1'] );
aber ich komme nicht drauf, warum dieses nicht funzt:
foreach($_POST as $k => $v ) $_POST ['$k'] = str_replace( "'", '-', $v );
Bitte um Hilfe.
Kieben Gruß, Kalle
Hallo,
Bei '$k' wird das $k nicht durch den Wert der Var ersetzt
Hallo Kalle,
foreach($_POST as $k => $v ) $_POST ['$k'] = str_replace( "'", '-', $v );
erstens halte ich es für keine gute Idee, auf die geschweiften Klammern für einen Anweisungsblock zu verzichten.
zweitens vermeide ich nach Möglichkeit Variablensubstitution in Zeichenketten.
Bei Dir geht es doppelt schief, weil Du zwei einfache Anführungszeichen verwendest, die einfach überflüssig sind.
foreach ($_POST as $k => $v) {
$_POST[$k] // nicht $_POST['$k']! Dein Code erzeugt damit genau einen neuen
// Eintrag im Array $_POST - das willst Du jedoch nicht.
= str_replace("\'", '-', $v);
}
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
erstens halte ich es für keine gute Idee, auf die geschweiften Klammern für einen Anweisungsblock zu verzichten.
Ist okay, aber manchmal ist's einfach übersichtlicher:
if ( get_magic_quotes_gpc() )
{
foreach($_GET as $k => $v ) $_GET [$k] = stripslashes($v);
foreach($_POST as $k => $v ) $_POST [$k] = stripslashes($v);
foreach($_COOKIE as $k => $v ) $_COOKIE[$k] = stripslashes($v);
}
Das hatte wegen meines Fehlers ['$k'] nicht geklappt.
zweitens vermeide ich nach Möglichkeit Variablensubstitution in Zeichenketten.
Okay, wie bekommst du die Firma Manni's Kneipe in die Datenbank?
... SET ...
,firma1 = '".$row_adr['firma1']."'
Bei Dir geht es doppelt schief, weil Du zwei einfache Anführungszeichen verwendest, die einfach überflüssig sind.
foreach ($_POST as $k => $v) {
$_POST[$k] // nicht $_POST['$k']! Dein Code erzeugt damit genau einen neuen
// Eintrag im Array $_POST - das willst Du jedoch nicht.
= str_replace("'", '-', $v);
}
Das habe ich nicht verstanden.
Lieben Gruß, Kalle
Mahlzeit,
zweitens vermeide ich nach Möglichkeit Variablensubstitution in Zeichenketten.
Okay, wie bekommst du die Firma Manni's Kneipe in die Datenbank?
... SET ...
,firma1 = '".$row_adr['firma1']."'
Indem man den Inhalt der Variablen kontextbezogen sinnvoll maskiert:
$sql = "... SET ... firma1 = '".mysql_real_escape_string($row_adr['firma1'])."' ...";
Bei Dir geht es doppelt schief, weil Du zwei einfache Anführungszeichen verwendest, die einfach überflüssig sind.
Das habe ich nicht verstanden.
Preisfrage: wo liegt der Unterschied zwischen $k
und '$k'
?
MfG,
EKKi
Mahlzeit,
Preisfrage: wo liegt der Unterschied zwischen
$k
und'$k'
?
Ach so, das war doch schon geklärt.
LG Kalle
Hallo Kalle,
Preisfrage: wo liegt der Unterschied zwischen
$k
und'$k'
?Ach so, das war doch schon geklärt.
als ich mein Posting begann, war das noch nicht geklärt. Außerdem kann man nicht zu oft wiederholen:
1.) "$i" statt $i zu schreiben ist in aller Regel schlechter Stil. Wie schnell
wird aus $i über "$i" ein '$i' und aus schlechtem Stil wird ein Fehler,
siehe Deinen eigenen Code.
2.) Auf Blockbegrenzer zu verzichten ist in aller Regel schlechter Stil und
führt oft zu schwierig zu entdeckenden Fehlern.
Und nein, ich finde Deine Schreibweise _nicht_ übersichtlicher. Ich finde sie einfach nur fehleranfälliger. Dies gilt meiner Meinung nach für beide von mir angeführten Punkte. Sie führen zu Fehlern, zu hübsch versteckten Fehlern. Das Forumsarchiv belegt dies mit vielen netten Beispielen.
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
ich habe den Thread verfolgt und gelesen.
<<Auf Blockbegrenzer zu verzichten ist in aller Regel schlechter Stil..>>
Was meinst du genau mit "Blockbegrenzer" in diesem Fall?
viele Grüße
hawk
Hallo
<<Auf Blockbegrenzer zu verzichten ist in aller Regel schlechter Stil..>>
Was meinst du genau mit "Blockbegrenzer" in diesem Fall?
in PHP sind das typischerweise geschweifte Klammern ({}), siehe auch Kontrollstrukturen. Es gibt aber auch eine alternative Syntax.
In anderen Programmiersprachen kann es andere Blockbegrenzer wie z.B. Schlüsselworte BEGIN und END geben.
Ach ja: Ich halte es auch für schlechten Stil, auf das Anweisungsendezeichen, in PHP typischerweise das Semikolon, zu verzichten - auch dann, wenn es erlaubt ist.
Freundliche Grüße
Vinzenz
echo $begrüßung;
Okay, wie bekommst du die Firma Manni's Kneipe in die Datenbank?
Möglichkeit A: Benenn sie um, das ist sowieso eine falsche Genitivschreibweise.
Möglichkeit B: Beschäftige dich mit dem Grundsatz, dass Daten immer kontextgerecht behandelt werden müssen, wenn sie in einen bestimmten Kontext eingefügt werden.
Ein SQL-Statement mischt Befehls- und Datenbestandteile zu einem Text zusammen. Es gibt Regeln, wie die Daten und bestimmte Zeichen darin zu notieren sind, damit die Eindeutigkeit zwischen Befehl und Daten gewahrt bleibt. Diese heißen zum einen Quotierung und zum anderen Maskierung. Das Quotieren kennst du ja offensichtlich schon, zum Maskieren nimmt man für MySQL mysql_real_escape_string() oder eine gleichwertige Funktion der Datenbank-API.
echo "$verabschiedung $name";