php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.07.2009, 10:07  
Erfahrener Benutzer
 
Benutzerbild von Dragonfly
 
Registriert seit: 16.09.2008
Beiträge: 109
Dragonfly befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Textstring wird falsch aus DB gelesen

Hallo, habe ein kleines Problem.

Mit dem nachfolgenden Code ziehe ich ein paar Werte aus einer Datenbank und speichere sie dann in $_POST[xy].

PHP-Code:
for($i=0$i<=9$i++){
    
$wert $grunddaten[$i];
    
$sql ="SELECT $wert FROM grunddaten WHERE  email='$_SESSION[email]'"
    
$result = @mysql_query($sql); 
    
$row mysql_fetch_assoc($result);
    
$_POST[$wert] = $row[$wert]; 

An einer späteren Stelle wird im Programm dann der Wert aus $_POST[xy] in ein Input Textfeld eingetragen. Wo der User ihn beispielsweise ändern kann. Leider wird der String nach dem ersten Leerzeichen abgeschnitten.

Aus ,,Dies ist ein Test" wird also ,,Dies".
In der Datenbank wird aber noch korrekt ,,Dies ist ein Test" gespeichert.
Es handelt sich auch nicht um einen Darstellungsfehler im Input-Feld.
Speicher ich nochmal wird dann auch in der Datenbank nur noch ,,Dies" gespeichert. Es ist also defintiv ein Übertragungsfehler beim Laden der Werte.

Verwende für die Webseite korrekt den deutschen Zeichensatz charset=iso-8859-1 und in der Datenbank ist die Kollation auf latin1_german1_ci eingestellt. Gespeichert wird der Wert in VARCHAR(30).
Benutze beim Laden der Werte auch keine zusätzlichen Funktionen die Leerzeichen entfernen würden oder so trim().
__________________
Das Unverständlichste am Universum ist im Grunde, dass wir es verstehen können.
Albert Einstein
Dragonfly ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.07.2009, 10:35  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Vermutlich hast du in deinem Input-Feld die Anführungszeichen bei value="xyz" vergessen. Schonmal in den HTML-Quellecode geschaut ob dortnoch dein "Dies ist ein Test" steht?
Du solltest bei solchen Problemen auch erstmal die Fehlermeldungen anzeigen und nicht mit @ unterdrücken - Testausgaben wie print_r($row) helfen auch.

(Im übrigen hat dein Code einige Unschönheiten. Ich würde $_POST nach Möglichkeit nicht manipulieren, die "9" nicht "hart codieren" und den SQL-String nicht so zusammenbauen....)
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 25.07.2009, 11:03  
Erfahrener Benutzer
 
Benutzerbild von Dragonfly
 
Registriert seit: 16.09.2008
Beiträge: 109
Dragonfly befindet sich auf einem aufstrebenden Ast
Standard

Anführungsstriche sind gesetzt:
PHP-Code:
echo "<input type=text name=eintrag id=InputEintrag maxlength=49
value=$_POST[eintrag]>"

Das mit in den HTML-Code gucken war aber eine gute Idee, dort steht folgendes:
PHP-Code:
<input type="text" test="" ein="" ist="" value="Dies" maxlength="49" id="InputEintrag" name="eintrag"/> 
Was das genau zu bedeuten hat kann ich mir wirklich nicht erklären...


Das Unterdrücken der Fehlermeldungen habe ich ausgeschaltet.
Die 9 könnte ich natürlich gegen eine Variable eintauschen und generell das ganze ein bisschen umändern und dann auch für spätere Projekte über eine Funktion laufen lassen. Der Gedanke ist mir auch schon gekommen...
__________________
Das Unverständlichste am Universum ist im Grunde, dass wir es verstehen können.
Albert Einstein
Dragonfly ist offline   Mit Zitat antworten
Alt 25.07.2009, 11:16  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von Dragonfly Beitrag anzeigen
Anführungsstriche sind gesetzt:
PHP-Code:
echo "<input type=text name=eintrag id=InputEintrag maxlength=49
value=$_POST[eintrag]>"

Nein sind sie nicht...es muss heißen value="xyz" nicht value=xyz.

Dein Browser nimmt so offensichtlich an die einzelnen Wörter nach value wären Attribute und setzt diese dann auf einen Leerstring.

Dir fehlen die Anführungszeichen aber nich tnur bei value, sondern auch bei allen anderen Attributen:
PHP-Code:
<?php echo '<input type="text" name="name" value="'.$variale.'" />'?>
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 25.07.2009, 11:33  
Erfahrener Benutzer
 
Benutzerbild von Dragonfly
 
Registriert seit: 16.09.2008
Beiträge: 109
Dragonfly befindet sich auf einem aufstrebenden Ast
Standard

Ok das funktioniert jetzt, aber ich verstehe es immer noch nicht ganz. Ich habe ursprünglich mal gelernt das man die Anführungsstriche auch durchaus rundherum setzen kann um die Syntax einfacher zu gestalten.

Habe das ganze jetzt auf ein Input-Feld angewendet und der Quellcode sieht dann so aus.

PHP-Code:
echo '<p class="FormElement"><input type="text" name="sprachen" id="InputSprachen" maxlength="60" value="'.$_POST["sprachen"].'"></p>'
Ist natürlich nicht unbedingt die einfachste Syntax, werde wohl in Zukunft entweder mit Heredoc arbeiten oder noch besser eine Funktion schreiben die generell Inputfelder erstellt...

Für die Nachwelt noch einmal als Heredoc.

PHP-Code:
echo <<<HTML
<p class="FormElement"><input type="text" name="sprachen" id="InputSprachen" maxlength="60" value="$_POST[sprachen]"></p>
HTML; 
Vielen Dank für die Hilfe.
__________________
Das Unverständlichste am Universum ist im Grunde, dass wir es verstehen können.
Albert Einstein
Dragonfly ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
IE stellt Seite (mal wieder) falsch dar Freeaak HTML, Usability und Barrierefreiheit 3 13.09.2006 17:00
HILFE: zurücksenden von Mails deren Mailadresse falsch ist PHP Tipps 2006 3 01.05.2006 12:50
MySql startet beim Start mit aber falsch Server, Hosting und Workstations 2 09.12.2005 20:53
Sonderzeichen werden bei Formulareeingaben falsch dargestell axelnes PHP-Fortgeschrittene 1 14.11.2005 14:04
Was ist hier falsch ? PHP Tipps 2005-2 3 21.10.2005 22:26
Umlaute werden falsch dargestellt Datenbanken 2 12.10.2005 13:28
[Erledigt] Was ist da falsch??? Datenbanken 2 26.08.2005 11:44
Buchstaben bei Datenaexport aus DB falsch uebertragen Datenbanken 2 25.08.2005 14:51
Was ist daran falsch PHP Tipps 2005-2 11 27.07.2005 11:29
Was ist da falsch? BEGINNER-L PHP Tipps 2005-2 4 11.07.2005 13:55
falsch dargestellte umlaute in db ändern - replace() nautiluS Datenbanken 1 30.12.2004 20:22
mysql_fetch_assoc Problem.. Was ist hier falsch... Ente PHP Tipps 2004-2 7 28.11.2004 13:27
[Erledigt] &lt;/p&gt; falsch? HTML, Usability und Barrierefreiheit 5 05.09.2004 18:24
Abfrage wird falsch sortiert juhuwoorps Datenbanken 2 04.09.2004 19:36
Datensätze werden falsch angezeigt(Tabellen) PHP Tipps 2004 3 24.07.2004 20:18

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php wert nicht aus datenbank gelesen, php \nach dem erstem leerzeichen\ input, text datenbank anzeigen abstaende php, html input feld abgeschnitten, php text aus db wird abgeschnitten, php string aus datenbank, 3 leerzeichen, php codierung string aus datenbank, html input text wird abgeschnitten, php ob string mit <p> falsch dargestellt, sql text mit anführungszeichen in input anzeigen, iso88591 in datenbank kollation, php textfeld wird abgeschnitten anführungszeichen, db text falsch, anführungszeichen value db und input php, strings aus der datenbank werden falsch dargestellt, wert aus db in input feld wird abgeschnitten spezialzeichen, input text wird abgeschnitten, web-seite eingabefelder umlaute werden falsch dargestellt, sql text wird abgeschnitten, text wird nicht korrekt aus datenbank gelesen

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum