[PHP] HTML-Tabelle verfälscht PHP-Arrays

Entlauber

Lieutenant
Dabei seit
Sep. 2002
Beiträge
672
Tachchen zusammen,

ich muß nochmal auf mein Problem von hier zurückkommen: https://www.computerbase.de/forum/threads/php-sql-abfrage-where-x-x-funktioniert-nicht.123349/

Ich lese aus einer mySQL Datenbank Werte aus und gebe die in einem Formular aus. Hier kann dann ein Wert gewählt werden, der dann per GET an eine weitere Seite geschickt wird.

Mit folgendem Code würde ich gerne die Daten übersichtlicher Darstellen:

PHP:
echo "<table border=1 cellspacing=10 cellpadding=10><tr><td></td><td>Artikelnummer</td><td>Bezeichnung</td><td>Info1</td><td>Info2</td><td>Preis</td></tr>";
    
    while($row = mysql_fetch_assoc($result)) { 

echo "<tr><td><input type=\"radio\" name=\"artikelnummer\" value=",$row['artikelnummer'],"</td>";
    echo "<td>",$row['artikelnummer'],"</td>";
    echo "<td>",$row['bezeichnung'],"</td>";
    echo "<td>",$row['info1'],"</td>";
    echo "<td>",$row['info2'],"</td>";
    echo "<td>",$row['preis'],"</td></tr>";


var_dump($row['artikelnummer']);

}
    
 

    echo "<br><br>";
    echo "<input type=\"submit\" value=\"Weiter\">";
    echo "</table>";
    echo "</form>";

Soweit so gut - für mich als PHP-Anfänger zumindest.
Die Werte werden wie gewünscht ausgelesen und formatiert angezeigt. Wichtig ist vor allem die Variable $row['artikelnummer']. Die wird an die nächste Seite übergeben.
Wenn ich mir diese Variable wie es oben im Quelltext steht mit var_dump ausgeben lassen, ist das Ergebnis ein String mit 11 Zeichen, nämlich z.B. "100.100.100".

Wenn ich nun einen Artikel auswähle und per Formular das Ergebnis weiterschicke, kommt auf der nächsten Seite ein String mit 15 Zeichen an :freak:
Das sieht dann so aus: string(15) "100.120.017 - also vorne ein Anführungszeichen dranklabustert und hinten hängt wohl was unsichtbares dran. Im Browser steht folgendes: "...xampp/blabla/bla.php?artikelnummer=100.120.017%3C%2Ftd"

Wo kommt "%3C%2Ftd" her, wie krieg ichs weg und was mach ich falsch ?



/Edit:
achso, ganz vergessen, wenn ich die HTML-Tabelle rauswerfe und die Daten unsortiert anzeige, funktioniert alles wie es soll. Dann wird die Variable so übergeben wie sie ausgelesen wurde.
 
Zuletzt bearbeitet:

Meolus

Lt. Commander
Dabei seit
Feb. 2005
Beiträge
1.411

Entlauber

Lieutenant
Ersteller dieses Themas
Dabei seit
Sep. 2002
Beiträge
672
Ne, leider nicht.

Sollte das jetzt n konkreter Hinweis sein den ich bloß nicht verstanden habe oder war das nur ne mögliche Idee ?
 

Surgeon

Cadet 3rd Year
Dabei seit
Dez. 2004
Beiträge
60
Zuerst würde ich als Methode des Form "POST" nehmen, da dies sicherer ist als "GET".

Es scheint ja nur an der Übergabe zu scheitern. Du könntest die Variable z.b. in einem "Hidden" übergeben oder in einer Session zwischenspeichern. Oder mit der Holzhackermethode den String zerlegen, erstes Zeichen wegschneiden, 11 Zeichen kopieren, Rest links liegen lassen, oder einen Teil des String in einen neuen kopieren:

PHP:
$alt = $row['artikelnummer'];
$neu =  substr($alt, 1, 11);

Das funktioniert auf die schnelle, löst aber nicht das Problem. Ich würde jedenfalls eine der beiden anderen Methoden vorziehen.
 

Entlauber

Lieutenant
Ersteller dieses Themas
Dabei seit
Sep. 2002
Beiträge
672
Die Holzhackermethode werde ich vorerst wohl nehmen, danke dafür.
POST oder GET sind relativ wurscht, weil nix geheimes oder schützenswertes übertragen wird.

Dennoch würde mich intressiern, wodurch und warum genau der String verfälscht wird.



/Edit:

2 Tage suchen & nachdenken für nix:
Das Problem lässt sich durch ein simples "\n" hinter "value=",$row['artikelnummer']," beheben.
 
Zuletzt bearbeitet:

Surgeon

Cadet 3rd Year
Dabei seit
Dez. 2004
Beiträge
60
Super :D Obwohl durch das anfügen von \n nur ein Zeilenumbruch im Quelltext zugefügt wird, damit nicht der gesamte Code in einer Zeile steht. Der Code ansich wird ja dadurch nicht verändert. Aber wenns funktionert, wird es schon einen Grund geben :)
 
Top