 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
23.08.2005, 22:19
|
#1
|
|
TP-Member
Registriert seit: May 2003
Ort: Frankfurt am Main
|
CSV-Datei in XML-Datei konvertieren
Ihr lieben,
jetzt hoffe ich, ich bin im richtigen Forum und meine Frage paßt überhaupt hier her.
Folgendes: ich möchte mittels Browser-Upload eine *.csv-Datei, die der Benutzer selbst auswählen kann, an meinen Server schicken. Diese *.csv-Datei soll dann in eine *.xml-Datei konvertiert werden und dann sofort für den Benutzer verfügbar sein. Dieser Nutzer hat dafür einen eigenen Log-In.
Ich habe jetzt diverse Probleme mit einem Konzept. Die Datei würde ich einfach per php auf den Server in ein bestimmtes Verzeichnis laden. Das ist ja kein Problem. Aber - wie bekomme ich die Konvertierung in xml hin? Ich lese mich gerade in xml ein, wie man die dazu entsprechende dtds erstellt und die generelle Struktur von xml habe ich verstanden. Es klemmt jetzt an der Konvertierung und der direkten Rückgabe über den Browser.
Wie kann man das hinbekommen? Hat jemand von Euch eine Idee und kann mir ein paar Tips geben? Ich wäre sehr dankbar dafür. Vielleicht ist die Lösung einfacher, als ich gerade denke?
Einen lieben Gruß,
Janni 
__________________
::: {mind creates reality} :::
|
|
|
23.08.2005, 23:54
|
#2
|
|
TP-Senior
Registriert seit: Jan 2003
Ort: Darmstadt
|
hi, was für eine csv datei? meinst du das comma seperated values format? schau dir mal das hier an. willst du sowas machen?
was heißt direkte rückgabe an den browser? du kannst das xml dokument einfach ausgeben, wie du html dokumente auch ausgibst?! verstehe nicht, was du damit meinst?
was bringt dir denn eine konvertierung in xml? was willst du denn damit machen? man kann nicht einfach irgendwas in xml konvertieren. xml macht nur sinn, wenn es eine machine lesen soll. dann brauchst du ein schema oder eine dtd - also eine definition des documententyps.
wenn du weißt, wie dein xml dokumententyp ist, dann poste die definition und dann kann ich dir weiterhelfen. die generierung von xml mit php ist kein problem.
Zitat:
|
Zitat von janni
Die Datei würde ich einfach per php auf den Server in ein bestimmtes Verzeichnis laden
|
naja, du lädst die datei via http methoden (post?) auf den server und verschiebst sie dort mit php in ein bestimmtes verzeichnis.
__________________
forenregeln - 3.d) ... richtige groß- und kleinschreibung benutzen ...
Geändert von giv (24.08.2005 um 00:04 Uhr).
|
|
|
10.09.2005, 15:59
|
#3
|
|
TP-Member
Registriert seit: May 2003
Ort: Frankfurt am Main
|
Hey giv!
Jetzt habe ich echt 'ne Weile gebraucht, um hier wieder zu schreiben. Ich danke Dir sehr für Deine schnelle Antwort.
Vielleicht habe ich einen großen Denkfehler, deshalb beschreibe ich einfach mal en Detail, was ich machen möchte. Habe mich auch ein wenig blöd ausgedrückt beim ersten Mal.
Ein Inkasso-Unternehmen hat Mandanten, diese Mandanten haben wiederum Personendaten in Tabellenform (*.csv/*.xls). Diese Tabelle mit den Personendaten (Name, Anschrift etc.) soll per Browser-Upload auf den Inkasso-Server geladen werden, per Log-In, das jeder Inkasso-Kunde (also Mandant) hat. Sofort nach dem Hochladen soll diese Tabelle dann für den Mandanten einzusehen sein, also im HTML-Format, mit "Status-Feldern" dabei. Zu diesem Zeitpunkt hat jede zu mahnende Person noch den Status "offen", weil die Tabelle ja grad erst hochgeladen wurde.
Das Inkasso-Unternehmen hat also jetzt auch die Daten, arbeitet dann die Aufträge ab (sprich treibt das Geld ein  ) und die zu mahnenden Personen bekommen dann entweder den Status "erledigt" oder "noch offen", was durch das Unternehmen gekennzeichnet wird.
Der Mandant soll auf diese Weise immer Einsicht in den Zustand seines Aufrages haben, sprich er soll sehen, welche Person bereits gezahlt hat und welche nicht.
Ich hatte am Anfang die Idee mit dem xml, weil man ja so die Daten "weiterverarbeiten" kann und die Textfelder für die HTML-Tabelle erzeugen kann automatisch, oder denke ich falsch?
Dieses Skript/Programm, wozu Du mir den Link geben hast giv, das ist ja sowas, das generiert ja auch automatisch aus *.csv-Dateien (genau die meine ich, die durch Semikoli getrennte Infos enthalten) ein xml-Dokument, welches man doch dann per php(?) so verarbeiten kann, daß eine HTML-Tabelle daraus machbar ist, oder nicht?
Meine Hauptfrage ist, geht das überhaupt, was ich da machen will? Oder ist das absoluter Müll? Oder geht das ganz anders, einfacher?
Über Tips und 'nen Denk-Anstoß bin ich mehr als dankbar und hoffe, ich hab's jetzt nicht noch wirrer geschrieben, als am Anfang.
LG
Janni
Ein Zusatz noch: ich könnte ja einfach die hochgeladene Datei nehmen und per Hand als HTML-Datei zugreifbar machen für den Mandanten, aber das soll automatisch geschehen, damit sie sofort verfügbar/einsehbar ist mit den Status-Feldern (CHeckbox ohne Häkchen für Status "offen" in dem Fall).
__________________
::: {mind creates reality} :::
Geändert von janni (10.09.2005 um 16:19 Uhr).
Grund: Zusatz
|
|
|
10.09.2005, 16:29
|
#4
|
|
TP-Senior
Registriert seit: Jan 2003
Ort: Darmstadt
|
da würde ich aus der csv datei gleich einen html table generieren.
__________________
forenregeln - 3.d) ... richtige groß- und kleinschreibung benutzen ...
|
|
|
10.09.2005, 18:30
|
#5
|
|
TP-Member
Registriert seit: May 2003
Ort: Frankfurt am Main
|
Zitat:
|
Zitat von giv
da würde ich aus der csv datei gleich einen html table generieren.
|
Du meinst z.B. mittels fgetcsv() die Felder splitten und daraus dann die Tabelle erstellen?
__________________
::: {mind creates reality} :::
|
|
|
10.09.2005, 19:12
|
#6
|
|
TP-Senior
Registriert seit: Jan 2003
Ort: Darmstadt
|
jup
__________________
forenregeln - 3.d) ... richtige groß- und kleinschreibung benutzen ...
|
|
|
10.09.2005, 22:56
|
#7
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
|
Ich würde die Daten in eine DB-Tabelle schreiben, wenn die Daten weiter verarbeitet werden müssen.
Wozu XML? Bei Abfrage DB-Tabelle lesen und die Daten direkt in HTML-Seite einbinden!
Auch Nachbearbeitung und Aenderung sind in der DB sicher einfacher als in einer XML.
__________________
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]
use my HTML-Tester
Motto'06: Mut zur deutschen Sprache!
|
|
|
14.09.2005, 22:20
|
#8
|
|
TP-Member
Registriert seit: May 2003
Ort: Frankfurt am Main
|
Hi Ihr beiden.
@giv: Danke für den Tip mit fgetcsv(), das hat mir für's erste sehr geholfen!
@321: Ja, Du hast recht. Ich habe am Wochenende 'ne Menge rumprobiert, und ich werde nicht drumrumkommen, mit 'ner Datenbank zu arbeiten. ;-) Ich dachte, das ginge einfacher, aber die Daten müssen vom Kunden auch sortierbar sein nach Kriterien, es soll 'ne kleine Suchfunktion dabei sein, und all das geht ja eigentlich unmöglich ohne Datenbank, sehe ich das richtig?
Hast Du evtl. ein übersichtliches Tutorial über das Zusammenspiel von mysql und php? Ich arbeite mich gerade erst rein, und Dein Tip mit
Zitat:
|
Ich würde die Daten in eine DB-Tabelle schreiben, wenn die Daten weiter verarbeitet werden müssen.
|
ist für mich noch nicht einfach so umsetzbar.  Ich suche auch mal im Forum.
Ich lese gerade das "php5/mysql4-Buch" von M. Kannengiesser, das hilft schon sehr, aber für neue Tips bin ich ja auch sehr dankbar.
Wünsche Euch einen schönen Abend und bin sehr froh, daß es dieses Forum gibt. *smile*
Edit: Ah, habe ein Tutorial hier gefunden. 
__________________
::: {mind creates reality} :::
Geändert von janni (14.09.2005 um 22:27 Uhr).
Grund: Zusatz
|
|
|
15.09.2005, 02:58
|
#9
|
|
TP-Senior
Registriert seit: Jan 2003
Ort: Darmstadt
|
man merkt, dass du sehr engagiert bist! *lob* wünsch dir noch viel spass bei der arbeit mit php und mysql. (mein tipp, setz dich auch mal genau mit dem typenkonzept einer programmiersprache auseinander. für die meisten php anwendungen ist das weniger wichtig, weil php eine automatische typumwandlung vornimmt und man auch nicht streng alle variablen deklarieren muss. das hat seine vorteile, aber auch seine nachteile, wenn man's nie richtig gelernt hat.)
__________________
forenregeln - 3.d) ... richtige groß- und kleinschreibung benutzen ...
|
|
|
15.09.2005, 13:37
|
#10
|
|
TP-Member
Registriert seit: May 2003
Ort: Frankfurt am Main
|
Vielen Dank @giv.
Darf ich hier jetzt allgemeine Fragen zur Datenbank-Abfrage stellen? Ich mag ungerne 'nen neuen Thread dafür aufmachen, weil das Problem, das ich habe, wahrscheinlich schon ziemlich "ausgelutscht" ist.
Ich tu's einfach mal. Es sind Verständnis-Fragen, die mir Probleme machen.
Das Auslesen und Ausgeben der Tabelle klappt ohne Probleme. Beim Einfügen per php einer neuen Reihen hatte ich zunächst den Fehler "Duplicate entry...etc", was sich dadurch gelöst hat, daß ich den Primary Key (ID-Feld) entfernt habe. Meine jetzt Frage dazu: wie umgehe ich das, denn so'n Primary Key ist doch eigentlich wichtig und nützlich, oder?
Ich poste mal den php-Code:
Code:
<?php
/* Daten in Tabelle schreiben */
if ($query = "INSERT INTO wurst(id, name, vorname, strasse, ort)
VALUES ('5', 'bla', 'blubb', '1Astrasse', 'giessen')") echo "OK<br>";
else echo "Fehler: " . mysql_error();
if ($result = mysql_query($query)) echo "OK";
else echo "Fehler: " . mysql_error();
?>
Wie bekomme ich das Einfügen so hin, daß ich weiterhin den PK in der Tabelle nutzen kann? Oder liegt der Fehler ganz woanders?
LG
Janni 
__________________
::: {mind creates reality} :::
|
|
|
15.09.2005, 13:47
|
#11
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Du lässt den Wert für den Key einfach leer, das übernimmt MySQL
$query = "INSERT INTO wurst(id, name, vorname, strasse, ort)
VALUES ('', 'bla', 'blubb', '1Astrasse', 'giessen')"
und wenn Du wissen willst, welchen Wert id nun bekommen hat, kannst Du es erfragen mit
$id=mysql_insert_id();
Geändert von steffenk (15.09.2005 um 13:50 Uhr).
|
|
|
15.09.2005, 13:51
|
#12
|
|
TP-Veteran
Registriert seit: Oct 2002
Ort: Übach-Palenberg
|
Zeig doch mal die Struktur deiner MySQL-Tabelle her, dann können wir dir leichter helfen... das feld id muss auto_increment haben und darf nicht im Query auftauchen...
__________________
Grüße aus Übach-Palenberg
Tim
WEB.ASSISTANTS IT-SOLUTIONS
www.web-assistants.de
Hängt das doch mal an eine beliebige PHP-Datei: ?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
|
|
|
15.09.2005, 14:29
|
#13
|
|
TP-Member
Registriert seit: May 2003
Ort: Frankfurt am Main
|
@St@eff.en & Master_T2: Aaah, vielen Dank! Genau, der PK muß auto_increment haben und ein Wert darf beim Einfügen nicht übergeben werden. Ist ja auch eigentlich logisch, wenn man mal ein bißchen drüber sinniert.
Vielen Dank!!  *freu*
__________________
::: {mind creates reality} :::
|
|
|
16.09.2005, 16:19
|
#14
|
|
TP-Member
Registriert seit: May 2003
Ort: Frankfurt am Main
|
Ich bin's schon wieder. Ich poste jetzt einfach hier weiter.
Ich habe jetzt ein Formular mit 5 Radio-Buttons. Einer ist nur jeweils auswählbar und das Sortier-Kriterium, nach dem die Einträge in der jeweiligen Tabelle sortiert werden sollen.
Meine Frage ist nun: die Forumlardaten können ja ganz simpel abgefragt werden, also bei
Code:
<input type="Radio" name="sort" value="id">
wird ja der Wert "id" in der Variable $sort gespeichert, wenn "id" ausgewählt ist.
Somit lautet der SQL-Befehl in php dann
Code:
if ($query = "SELECT * FROM tabelle ORDER BY id ASC") echo "OK<br>";
So, wenn ich jetzt aber 5 oder mehr Sortier-Kriterien habe, dann müßte ich ja für jedes 'ne If-Abfrage machen z.B., und dann den entsprechenden SQL-Befehl ausführen lassen, richtig? Viel einfacher wäre es doch, wenn ich direkt in den oberen SQL-Befehl das Sortier-Kriterium einbauen könnte, also über die Variable $sort in diesem Fall. Praktisch so:
Code:
if ($query = "SELECT * FROM tabelle ORDER BY $sort ASC") echo "OK<br>";
Denn in der Variablen ist ja der Wert gespeichert, und mein Formular hat genau die Namen der Spalten der Tabelle als Werte. Natürlich geht das so nicht, kriege ja dann 'nen SQL-Fehler, aber ich würde gerne wissen, ob das irgendwie anders geht? Ohne die If-Abfragen, mit direkter Übernahmen des Werts in die SQL-Abfrage?
Hat jetzt überhaupt jemand mein Problem verstanden? Ich bin bestimmt anstrengend, tut mir leid.
Edit: Woah, das geht ja doch. Ich entschuldige mich für's Spammen und denke nächstes Mal vor dem Posten. 
__________________
::: {mind creates reality} :::
Geändert von janni (16.09.2005 um 17:03 Uhr).
|
|
|
16.09.2005, 19:26
|
#15
|
|
TP-Senior
Registriert seit: Jan 2003
Ort: Darmstadt
|
deine idee, $sort in den query einzubauen, ist prinzipiell richtig. es gibt allerdings sicherheitsgründe, weswegen man das nicht einfach ohne vorheriger prüfung auf den wert machen sollte. es könnte ja jemand sql code schicken und dann würdest du den einfach in deinen query einbauen. also vorsicht hier.
die überprüfung kann man dann mit einer if-abfrage (oder mehreren) machen. verwende dann nicht ==, sondern ===. === vergleicht genauer, salopp gesagt.
von der syntax her ist $query = "SELECT * FROM tabelle ORDER BY $sort ASC"; korrekt, allerdings solltest du formulardaten aus den dafür vorgesehen globalen arrays $_POST und $_GET lesen (wieder aus sicherheit). also statt $sort schreibe $_POST['sort'].
p.s.: was soll denn deine if abfrage in deinem beispiel machen?  die wird so immer bewirken, dass ok ausgegeben wird.
__________________
forenregeln - 3.d) ... richtige groß- und kleinschreibung benutzen ...
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| 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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:32 Uhr.
|
 |