Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
ich versteh es einfach nicht [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
ich versteh es einfach nicht


 
franks
26-07-2010, 14:40 
 
wenn ich den folgenden code ausführe dann werden die daten wunderbar in die
datenbank geschrieben. versuche ich mir die var. $Clipboard per request zu holen
dann funktioniert nichts mehr. die felder bleiben alle auf "nicht übertragen".



<?
error_reporting(E_ALL);
// Datenbankdaten:

//
$ANREDE_H = "nicht übertragen";
$exportzaehler = "nicht übertragen";
$ANREDE_H = "nicht übertragen";
$FAMNAME = "nicht übertragen";
$VORNAME = "nicht übertragen";
$STRASSE = "nicht übertragen";
$PLZ = "nicht übertragen";
$ORT = "nicht übertragen";
$NATION = "nicht übertragen";
$TELEFON = "nicht übertragen";
$FAX = "nicht übertragen";
$P_EMAIL = "nicht übertragen";

//$Clipboard = $_REQUEST['Clipboard'];

$Clipboard= "Anrede: Herr`nNachname: Lehnner`nName: Johann`nStraße: Brückens 21`nPLZ,
Ort: 75669 Unterens`nLand: Germany`nTelefon: 00491719220029`nFax:`nE-Mail:
m.lehn@usas.com`nSprache: Deutsch";
## ARRAYS AUFTEILEN #######################################
$textlaenge = substr_count ( $Clipboard, '`n' );
for($i=0; $i<$textlaenge; $i++)
{
$zeile = explode("`n", $Clipboard);
$inhalt = explode(":", $zeile[$i]);


if(in_array("Anrede",$inhalt))
{
$ANREDE_H = $inhalt[1];
}

if(in_array("Nachname",$inhalt))
{
$FAMNAME = $inhalt[1];
}

if(in_array("Name",$inhalt))
{
$VORNAME = $inhalt[1];
}

if(in_array("Straße",$inhalt))
{
$STRASSE = $inhalt[1];
echo $STRASSE;
}

if(in_array("PLZ, Ort",$inhalt))
{
$output = explode(" ", $inhalt[1]);
$PLZ = $output[1];
$ORT = $output[2] . " " . $output[3] . " " . $output[4];
echo $PLZ;
echo $ORT;
}

if(in_array("Land",$inhalt))
{
$NATION = $inhalt[1];
}

if(in_array("Telefon",$inhalt))
{
$TELEFON = $inhalt[1];
}

if(in_array("Fax",$inhalt))
{
$FAX = $inhalt[1];
}

if(in_array("E-Mail",$inhalt))
{
$P_EMAIL = $inhalt[1];
}
}
/*
$ANREDE_H = "m";
$exportzaehler = "m";
$ANREDE_H = "m";
$FAMNAME = "m";
$VORNAME = "m";
$STRASSE = "m";
$PLZ = "m";
$ORT = "m";
$NATION = "m";
$TELEFON = "m";
$FAX = "m";
$P_EMAIL = "m";
*/


echo $ANREDE_H;
echo $FAMNAME;
echo $VORNAME;
echo $STRASSE;
echo $PLZ;
echo $ORT;
echo $NATION;
echo $TELEFON;
echo $FAX;
echo $P_EMAIL;
$FAMNAME = $_REQUEST['Clipboard'];
### MySQl DB Server ######################################
$servername="localhost";
$benutzername="webxx";
$passwort="232323";
$db="usr_webxx_3";
### MySQl DB Verbindung ##################################
$verbindung = mysql_connect ($servername,$benutzername,$passwort)
or die ("Zurzeit keine Verbindung möglich!");
mysql_select_db($db)or die ("Die Datenbank existiert nicht.");
### hösten Zähler ermitteln und dann um 1 erhöhen #################
$sql="SELECT MAX(exportzaehler) FROM nova_export;";
$ergebnis=mysql_query($sql);
$row=mysql_fetch_row($ergebnis);
$exportzaehler=$row[0]+1;
### MySQl DB Eintrag #####################################
$eintrag = "INSERT INTO nova_export
(ID,exportzaehler,ANREDE_H,FAMNAME,VORNAME,STRASSE,PLZ,ORT,TELEFON,FAX,P_EMAIL)
VALUES
('','$exportzaehler', '$ANREDE_H', '$FAMNAME', '$VORNAME', '$STRASSE',
'$PLZ', '$ORT','$TELEFON', '$FAX', '$P_EMAIL')";
$eintragen = mysql_query($eintrag);
mysql_close($verbindung);
//echo "Erfolgreich";

//echo "$exportzaehler";
?>

 
wahsaga
26-07-2010, 14:42 
 
Furchtbarer Code ...

... den du jetzt bitte wenigstens erst mal umbrichst, wie es in den Foren-Regeln steht.


Und etwas mehr als „funktioniert nicht“ solltest du auch liefern können.
Was hast du denn bisher schon probiert, um das Problem zu analysieren?

 
franks
26-07-2010, 15:09 
 
mein vorhaben
1.ich erhalte per post eine variable namens $clipboard
2. diese varible möchte ich in ein array lesen
3. den array teile ich wiederum auf z. B. anrede: herr
4. nun erstelle ich eine var mit dem gewünschten array
5. ich schreibe die varibeln in eine datenbank

das problem
1. keine fehlermeldung
2. die varible clipoard funktioniert nicht wenn ich sie per request
übernehmen möchte
3. ich weiss nicht was nicht funktioniert --> der request kommt
wird jedoch nicht in die arrays geschrieben

meine versuche
-die var. clipboard direkt zu benutzen --> funktioniert
-die var. clipboard im ganzen in ein feld der datenbank schreiben um zu
schauen was übertragen wird. die zeilenumbrüche (`n)
werden in der datenbank nicht gezeigt
-ich habe versucht andere trennzeichen zu benutzen. ( ::: und ;;; )
-anhand am error reporting alle fehler beseitigt
-stundenlange überprüft ob die daten von der software autohotkey
richtig übertragen werden



<?
error_reporting(E_ALL);
// Datenbankdaten:

//
$ANREDE_H = "nicht übertragen";
$exportzaehler = "nicht übertragen";
$ANREDE_H = "nicht übertragen";
$FAMNAME = "nicht übertragen";
$VORNAME = "nicht übertragen";
$STRASSE = "nicht übertragen";
$PLZ = "nicht übertragen";
$ORT = "nicht übertragen";
$NATION = "nicht übertragen";
$TELEFON = "nicht übertragen";
$FAX = "nicht übertragen";
$P_EMAIL = "nicht übertragen";

//$Clipboard = $_REQUEST['Clipboard'];

$Clipboard= "Anrede: Herr`nNachname: Lehnner`nName: Johann`nStraße:
Brückens 21`nPLZ, Ort: 75669 Unterens`nLand: Germany`nTelefon:
00491719220029`nFax:`nE-Mail: m.lehn@usas.com`nSprache: Deutsch";
## ARRAYS AUFTEILEN #######################################
$textlaenge = substr_count ( $Clipboard, '`n' );
for($i=0; $i<$textlaenge; $i++)
{
$zeile = explode("`n", $Clipboard);
$inhalt = explode(":", $zeile[$i]);


if(in_array("Anrede",$inhalt))
{
$ANREDE_H = $inhalt[1];
}

if(in_array("Nachname",$inhalt))
{
$FAMNAME = $inhalt[1];
}

if(in_array("Name",$inhalt))
{
$VORNAME = $inhalt[1];
}

if(in_array("Straße",$inhalt))
{
$STRASSE = $inhalt[1];
echo $STRASSE;
}

if(in_array("PLZ, Ort",$inhalt))
{
$output = explode(" ", $inhalt[1]);
$PLZ = $output[1];
$ORT = $output[2] . " " . $output[3] . " " . $output[4];
echo $PLZ;
echo $ORT;
}

if(in_array("Land",$inhalt))
{
$NATION = $inhalt[1];
}

if(in_array("Telefon",$inhalt))
{
$TELEFON = $inhalt[1];
}

if(in_array("Fax",$inhalt))
{
$FAX = $inhalt[1];
}

if(in_array("E-Mail",$inhalt))
{
$P_EMAIL = $inhalt[1];
}
}
/*
$ANREDE_H = "m";
$exportzaehler = "m";
$ANREDE_H = "m";
$FAMNAME = "m";
$VORNAME = "m";
$STRASSE = "m";
$PLZ = "m";
$ORT = "m";
$NATION = "m";
$TELEFON = "m";
$FAX = "m";
$P_EMAIL = "m";
*/


echo $ANREDE_H;
echo $FAMNAME;
echo $VORNAME;
echo $STRASSE;
echo $PLZ;
echo $ORT;
echo $NATION;
echo $TELEFON;
echo $FAX;
echo $P_EMAIL;
$FAMNAME = $_REQUEST['Clipboard'];
### MySQl DB Server ######################################
$servername="localhost";
$benutzername="webxx";
$passwort="232323";
$db="usr_webxx_3";
### MySQl DB Verbindung ####################
$verbindung = mysql_connect ($servername,$benutzername,$passwort)
or die ("Zurzeit keine Verbindung möglich!");
mysql_select_db($db)or die ("Die Datenbank existiert nicht.");
### hösten Zähler ermitteln und dann um 1 erhöhen #####################################
$sql="SELECT MAX(exportzaehler) FROM nova_export;";
$ergebnis=mysql_query($sql);
$row=mysql_fetch_row($ergebnis);
$exportzaehler=$row[0]+1;
### MySQl DB Eintrag #####################################
$eintrag = "INSERT INTO nova_export
(ID,exportzaehler,ANREDE_H,FAMNAME,VORNAME,STRASSE,
PLZ,ORT,TELEFON,FAX,P_EMAIL)
VALUES
('','$exportzaehler', '$ANREDE_H', '$FAMNAME', '$VORNAME',
'$STRASSE', '$PLZ', '$ORT','$TELEFON', '$FAX', '$P_EMAIL')";
$eintragen = mysql_query($eintrag);
mysql_close($verbindung);
//echo "Erfolgreich";

//echo "$exportzaehler";
?>

 
TobiaZ
26-07-2010, 15:49 
 
Code schon umgebrochen? :teach:

 
franks
26-07-2010, 16:04 
 
ja, den ersten beitrag habe ich auch umgebrochen.

 
AmicaNoctis
26-07-2010, 16:46 
 
Hallo,

solange das auskommentiert ist, wird PHP nicht auf die Post-Daten zugreifen:

//$Clipboard = $_REQUEST['Clipboard'];

;)

Gruß,

Amica

 
ApoY2k
26-07-2010, 16:56 
 
1. http://php-coding-standard.de/php_coding_standard.php
2. Lass dir mal ein paar Debugausgaben anzeigen, z.B. in der Schleife mal ein echo reinmachen was er eigentlich genau leist bei jedem Durchlauf
3. $zeile kannst du vor der "for"-Schleife definieren, daran ändert sich im Durchlaufen nichts
4. Sowas macht man normalerweise nicht mit explode, das ist zu unsicher. Du weiß nicht, in welcher Codierung die Sachen übergeben werden, und wenn die von der abweicht, in der deine PHP-Datei ist, wirds schwer.
5. Warum suchst du nach "`n" - eine neue Zeile wird als "\n" codiert
6. Was steht in $zeile ( var_dump($zeile) ) und $inhalt in jedem schleifendurchlauf?

 
franks
26-07-2010, 17:41 
 
Hallo,

solange das auskommentiert ist, wird PHP nicht auf die Post-Daten zugreifen:

//$Clipboard = $_REQUEST['Clipboard'];

;)

Gruß,

Amica


danke für deine antwort.
ich habe es zum testen auskommentiert.
an dem liegt es nicht.

 
franks
26-07-2010, 20:04 
 
danke für deinen beitrag.
kann es sein dass php den zeilenumbruch nicht erkennt.
die var clipboard ist der inhalte von strg+c und strg+v
was würdest du anstatt von explode empfehlen?
muss ich vielleicht nach dem ":" suchen und dann den inhalt davor und danch in eine var umwandeln?

beispiel:
[CODE]
Adresse
Anrede: Herr
Nachname: Vollbach
Name: Markus
Straße: Kiefernweg 1a
PLZ, Ort: 50999 Köln
Land: Germany
Telefon: (0049) 172 893 4526
[/QUOTE]

 
wahsaga
26-07-2010, 20:22 
 
kann es sein dass php den zeilenumbruch nicht erkennt.
Welchen Zeilenumbruch - meinst du das, wo in deinem Script immer `n steht?
Das ist kein Zeilenumbruch.

Und ja, selbst wenn du dich für richtige Zeilenumbrüche interessieren würdest, und nicht nur für eine seltsame Zeichenkombination - dann können die je nach System immer noch unterschiedlich aussehen.

 
franks
26-07-2010, 21:42 
 
Welchen Zeilenumbruch - meinst du das, wo in deinem Script immer `n steht?
Das ist kein Zeilenumbruch.

Und ja, selbst wenn du dich für richtige Zeilenumbrüche interessieren würdest, und nicht nur für eine seltsame Zeichenkombination - dann können die je nach System immer noch unterschiedlich aussehen.

ja, ich meinte die `n zeilenumbrüche. wenn ich mich nicht an den zeilenumbrüchen orientieren sollte, was gibt es für eine alternative?
wie kann man das wort vor und ein wort nach dem ":" in eine var oder array lesen?

 
franks
26-07-2010, 22:06 
 
ich habe es mit split versucht und das ganze per echo ausgegeben.
$inhalt = split("\n",$Clipboard);
echo $inhalt[$i] . "+++++++++++";


resultat des echos:
Gast+++++++++++Anrede: Herr+++++++++++Nachname: Vollbach+++++++++++Name: Markus+++++++++++Straße: Kiefernweg 1a+++++++++++PLZ, Ort: 50999 Köln+++++++++++Land: Germany usw.

schaut doch eigentlich ganz gut aus! oder ?:(

 
franks
26-07-2010, 23:36 
 
alle informationen werden jetzt in die datenbank geschrieben.
nur die var strasse nicht. kann es sein dass es ein problem mit dem "ß" gibt?

mir ist auch aufgefallen dass wenn ich die daten per pst komme umlaute falsch angezeigt bekomme.
z.b. ü . wenn ich die var nicht per post sondern zum testen direkt i script erstelle dann besteht das problem nicht.
nur der Array Straße wird nie gefunden.

if(in_array("Name",$inhalt))
{
$VORNAME = $inhalt[1];
}

if(in_array("Straße",$inhalt))
{
$STRASSE = $inhalt[1];
}

 
eagle275
27-07-2010, 07:26 
 
das Problem mit dem "ß" hast du ja selbst schon gesehen ...

wenn du die Daten per Post bekommst und dann Umlaute nicht korrekt sind, dann betrifft das IMMER auch "ß" .. von daher ist halt "Straße" nicht in deinem Array..

Setz mal den Zeichensatz sowohl der Datenbank als auch den vom PHP script auf UTF-8 .

 
franks
27-07-2010, 09:07 
 
utf-8 habe ich schon ausprobiert.
wenn ich per post vars schicke dann funktioniert es leider nicht.
an was kann das liegen?

 
eagle275
27-07-2010, 09:11 
 
und was ist mit Iso 8859-1 ?


<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>

 
franks
27-07-2010, 10:33 
 
und was ist mit Iso 8859-1 ?


<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>


funktioniert auch nicht. ich habe es gelöst indem ich Straße --> Strasse mit autohotkey.com umwandle, bevor ich es per post schicke.


VIELEN DANK FÜR DIE HILFE


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:54 Uhr.