PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Leerzeichen im Array



wackeldackel
15-03-2004, 12:04
Hallo,

ich habe leider schon wieder ein Problem.

Ich habe ein Textfeld, in dem normaler Text eingegeben werden soll.
Allerdings habe ich ein Problem den Inhalt in die Datenbank zu schreiben, sobald
ein Leerzeichen enthalten ist.
Ich dachte eigentlich, dass in einem Array die Leerzeichen egal sind, wenn ich sie nicht
direkt als Trenner angeben ??.
Muss ich bei PHP irgendwas anders einstellen??

Beispiel:

echo '<td><input name=txtInfo[] type=text size=15 maxlength=50></td>';

Inhalt wäre so was wie: Achtung: nur in der Farbe 20 einsetzen

Gruss Klaus

undefined
15-03-2004, 17:59
Also ehrlich gesagt verstehe ich nicht was du meinst. Dein Code ist auch nicht besonders aufschlussreich. Leerzeichen werden in PHP als Metazeichen mit gelesen daher dürfte es kein Problem sein. Die Frage ist eher wie und welchen Code du zum einlesen verwendest und WICHTIG was in der phpinfo unter magic_quotes_gpc steht on oder off?

wackeldackel
16-03-2004, 07:08
Morgn undefined,

schiebe noch die Infos nach. Dachte es wäre eher ein programmtechnisches Problem.
Ich habe ein Array, welches einwandfrei funktioniert, sofern ich keine Leerzeichen in den Text einfüge.
Sobald ich das mache, wird nur der Teil vor dem Leerzeichen per $HTTP_POST_VARS['liste'] übergeben und
beim Schreiben in die Datenbank krachts.


Skript Ausschnitt:

// Zelle mit dem Array
echo '<td bgcolor=#BDBDBD align=middle><input type=checkbox name=liste[] value=' . $rs_liste4['ars_key'] . '> </td>';
// Auslesen des Arrays und speichern
if (isset ($HTTP_POST_VARS['liste']) && count ($HTTP_POST_VARS['liste']) > 0)
{
foreach ($HTTP_POST_VARS['liste'] AS $ars_array)
{ ...}



Einträge aus der php.ini

; This directive is deprecated. Use variables_order instead.
gpc_order = "GPC"

; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off




Werte aus phpinfo():

PHP Version 4.3.3

System Linux edvlinux 2.4.21-192-athlon #1 Wed Feb 18 19:28:00 UTC 2004 i686
Build Date Sep 24 2003 00:33:28
Configure Command './configure' '--prefix=/usr/share' '--datadir=/usr/share/php' '--bindir=/usr/bin' '--libdir=/usr/share' '--includedir=/usr/include' '--sysconfdir=/etc' '--with-_lib=lib' '--with-config-file-path=/etc' '--with-exec-dir=/usr/lib/php/bin' '--disable-debug' '--enable-bcmath' '--enable-calendar' '--enable-ctype' '--enable-dbase' '--enable-discard-path' '--enable-exif' '--enable-filepro' '--enable-force-cgi-redirect' '--enable-ftp' '--enable-gd-imgstrttf' '--enable-gd-native-ttf' '--enable-inline-optimization' '--enable-magic-quotes' '--enable-mbstr-enc-trans' '--enable-mbstring' '--enable-mbregex' '--enable-memory-limit' '--enable-safe-mode' '--enable-shmop' '--enable-sigchild' '--enable-sysvsem' '--enable-sysvshm' '--enable-track-vars' '--enable-trans-sid' '--enable-versioning' '--enable-wddx' '--enable-yp' '--with-bz2' '--with-dom=/usr/include/libxml2' '--with-ftp' '--with-gdbm' '--with-gettext' '--with-gmp' '--with-imap=yes' '--with-iodbc' '--with-jpeg-dir=/usr' '--with-ldap=yes' '--with-mcal=/usr' '--with-mcrypt' '--with-mhash' '--with-mysql=/usr' '--with-ndbm' '--with-pgsql=/usr' '--with-png-dir=/usr' '--with-readline' '--with-snmp' '--with-t1lib' '--with-tiff-dir=/usr' '--with-ttf' '--with-freetype-dir=yes' '--with-xml' '--with-xpm-dir=/usr/X11R6' '--with-zlib=yes' '--with-qtdom=/usr/lib/qt3' '--with-gd' '--with-openssl' '--with-curl' '--with-swf=/usr/src/packages/BUILD/swf/dist/' '--with-imap-ssl' '--enable-xslt' '--with-xslt-sablot' '--with-iconv' '--with-apxs2=/usr/sbin/apxs2-prefork' 'i586-suse-linux'
Server API Apache 2.0 Handler
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc/php.ini
PHP API 20020918
PHP Extension 20020429
Zend Extension 20021010
Debug Build no
Thread Safety disabled
Registered PHP Streams php, http, ftp, https, ftps, compress.bzip2, compress.zlib


Gruss Klaus

undefined
16-03-2004, 08:24
Also vom Code her kann es nicht sein, ich vermute also eher mal wie oben schon angedeutet das es an Magic quotes liegt. Am sinvollsten wird es dann sein Sonderzeichen mit stripslashes (http://de.php.net/manual/de/function.stripslashes.php) zu säubern.

<?php
echo <<<EOT
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>POSTEN</title>
<meta name="GENERATOR" content="Quanta Plus" />
</head>
<body>
EOT;
?>
<?php
echo "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"post\">";
for ($i = 0; $i < 5; $i++) {
echo $i . " ) <input type=\"checkbox\" name=\"liste[]\" value=\"$i) Warum werden meine Strings zerhagt?\" />";
}
?>
<input type="submit" />
</form>
<?php
if (isset($_POST['liste']) && count($_POST['liste']) > 0) {
foreach ($_POST['liste'] AS $keys) {
echo $keys . "<br />";
}
}

echo "<pre>";
print_r($_POST);
echo "</pre>";
?>
</body>
</html>

wackeldackel
19-03-2004, 08:44
Hallo undefined,

ich habe es jetzt noch einmal versucht, aber das funktioniert auch nicht. Ich habe ausser dem Leerzeichen ja keine anderen Sonderzeichen drin.

danke trotzdem

gruss Klaus

undefined
19-03-2004, 11:38
Dann zeige bitte mal deinen Code mit dem du ausliest und schreibst.

wackeldackel
22-03-2004, 08:52
Morgn undefined,


ICH BIN EIN DEPP !!!!! :rolleyes:

Schreiben funktioniert. Was nicht funktioniert ist die Weitergabe des Array Inhalts mittels HTTP_POST_VARS.

Benutzer schreibt etwas ins Formular und bekommt dann seinen geschriebenen Text + eine Liste. Die Angaben kann er dann noch einmal prüfen und dann speichern.

Er schreibt hier rein:

z.B.: 17, 25

echo '<td><input name=txtFarbenEingabe[] type=text size=8 maxlength=25></td>';

hier soll der Inhalt wieder angezeigt werden:

foreach ($HTTP_POST_VARS['txtFarbenEingabe'] AS $Farben){$test = $Farben;}
echo '<td><input name=txtFarbenEingabe[] type=text size=8 maxlength=25 value=' . $Farben . '></td>';

Es kommt aber nur der Teil vor dem Komma an : hier halt 17 und ich kann ja nicht sagen, wieviel hier geschrieben wird.

Geschrieben wird der Datensatz dann so:

foreach ($HTTP_POST_VARS['txtFarbenEingabe'] AS $fb_array){;}
$SQL_insert="INSERT INTO tabelle (kal_farben) values ('{" . $fb_array ."}')";

Das funktioniert, auch wenn es doof aussieht.


Gruss Klaus

wackeldackel
23-03-2004, 12:18
Habs gefunden !!!!!!

habe :rolleyes: vergessen die Variable noch einmal in Hochkommas zu packen. Damit hat der Browser das Zeugs zerlegt.

Danke an alle

Gruss Klaus