PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : dbase auslesen .dbf auslesen


ajgeier
03.01.2008, 22:09:25
Hallo zusammen,
ich verzweifle gerade daran, eine .DBF -Datei auszulesen.
Kann mir mal jemand schreiben wie ich das bewerkstelligen kann.
Ich habe vor, eine DBF auszulesen und dann in ein Array einzuspeichern.
Leider finde ich dazu in keinem meiner (sch...) Bücher was.
Hilfe wäre SUPER
Danke im Voraus
Andi

rambi
03.01.2008, 22:18:02
http://www.php.net/manual/de/ref.dbase.php

ajgeier
03.01.2008, 22:46:41
ja..... leider hilft mir das auch nicht wirklich weiter.
ich glaub ich komm mit der syntax nich klar.
Meine kiste spukt mir das ganze nur mit fehlern aus
habt ihr mal ein beispiel.
Sorry, für das... aber ich fang echt erst an ;-D GRINS

rambi
03.01.2008, 23:01:25
Schon mal versucht, die Fehlermeldungen, zu lesen?

feuervogel
03.01.2008, 23:34:40
vielleicht findest du ein beispiel bei google GRINS ;-)

ajgeier
04.01.2008, 21:10:21
@feuervogel: nach längerer suche hatte ich wirklich was bei Google gefunden ;-D
habe jetzt aber ein kleineres Problem:

Die Umlaute werden nicht importiert. kann das sein?
in der DBase steht z.B. Münchsmünster, bei der Ausgabe bekommen ich "Mnchsmnster"
Wie kann ich das umgehen.
Ernsthafte Antworten wäre super.
nur von den Könnern verarscht zu werden ist hier wohl nicht Sinn und Zweck des Forums, und bringen tuts auch nicht. Ihr musstet ja auch erst lernen

feuervogel
04.01.2008, 22:53:36
Ernsthafte Antworten wäre super.
nur von den Könnern verarscht zu werden ist hier wohl nicht Sinn und Zweck des Forums, und bringen tuts auch nicht. Ihr musstet ja auch erst lernen

1. Hat meine Antwort etwas gebracht: Du hast Dich selbst angestrengt und bist eigenständig zu einer Lösung gekommen.
2. Verarschst Du uns grade, denn mit so wenig Informationen kann Dir wirklich keiner helfen.

defabricator
05.01.2008, 09:27:46
<?php
dbase_create('dbase.test.dbf', array(array("name", "C", 48))) or die('dbase_create failed');
$db = dbase_open('dbase.test.dbf', 2) or die('dbase_open,2 failed');
dbase_add_record($db, array('Münchsmünster')) or die('dbase_add_record failed');
dbase_close($db);

$db = dbase_open('dbase.test.dbf', 0) or die('dbase_open,0 failed');
var_dump(dbase_get_record_with_names($db, 1));
dbase_close($db);funktioniert bei mir fehlerfrei.

ajgeier
05.01.2008, 12:03:09
also mit dem var_dump bekomme ich ja alles ausgespukt. ist zwar nicht mein Ziel, aber trotzdem erstmal Danke.
ich habe nur das Problem, dass aus der dBase-datei die Umlaute nicht ausgegeben werden
habe hierzug folgenden Code geschrieben:


for ($counti=1; $counti<=$anzds; $counti++)
{
$va = dbase_get_record_with_names($va_db, $counti);

if ($va['VNR'] == $va['LKSCHL']) //rausfiltern der Vorerfassungen
{
$VNRWandel = $va['VNR'] + 0; // +0 Wandelt in eine Integer um
$ORTWandel= $va['ORT']; // hier wird allerdings nur ohne Umlaute gespeichert
$JJJJWandel = $va['JJJJ'] + 0;
.
.
.
.
Mein Problem liegt, so glaube ich zumindest bei dem
$va = dbase_get_record_with_names($va_db, $counti);
kann es sein, dass ....record_with_names keine Umlaute kann?
oder gibt es hier eine bessere Funktion

defabricator
05.01.2008, 12:10:00
also mit dem var_dump bekomme ich ja alles ausgespukt. ist zwar nicht mein Ziel, aber trotzdem erstmal Danke.Ähem.... warum trage ich im Beispielcode wohl das Wort Münchsmünster in die Datenbank ein und schreibe dann noch explizit, dass es bei mir fehlerfrei funktioniert? Ob ich damit eventuell ausdrücken wollte, dass die Umlaute bei mir angezeigt werden? Ja.

rambi
05.01.2008, 12:27:35
Also, ich würde ja erstmal mit strlen() schauen ob das "Mnchsmnster" aus der DB genauso lang ist wie ein zufuß eingetipptes "Mnchsmnster".

Gibt es einen Unterschied?? Der Unterschied MUSS 2 sein!
Ja: falscher Zeichensatz. zB. iconv() könnte dann helfen
Nein: Das ist dann allerdings wirklich ein Problem. evtl. wurden die Daten schon in einem falschen Zeichensatz erfasst.

ajgeier
05.01.2008, 13:51:32
Hallo Rambi,
ja es sind 2 Zeichen mehr. hast recht.
Habe jetzt mal mein PHP mit iconv.. auf UTF-8 umgestellt, aber das Problem hat sich jetzt geändert.
Jetzt habe ich statt dem "ü" ein "�".
hmmm zwar besser, aber nicht am Ziel.
auch die Hotline von meinem Serverbetreiber kann/will mir nicht weiterhelfen.

Wie kann ich das nun wieder umgehen ? Sorry, wenn ich blöd frag, aber ich weis einfach nicht weiter

rambi
05.01.2008, 14:03:13
Jagut, dann weiter mit der Diagnose:
Die Umlaute sind da, aber nicht sichtbar!! Mit ord() kannst du die numerischen Codes herausbekommen. Dann suchst du dir die verschiedensten Codetabellen im Internet zusammen. Bei irgendeiner dieser Tabellen werden die erwarteten Umlaute und die numerischen Codes übereinstimmen. Dieses ist dann die Quellkodierung. Jetzt brauchst du noch die Codierung, in der du die Daten präsentieren/ausgeben willst und hast damit das Futter für iconv() beisammen.
PS: dbf stammt aus der EDV Steinzeit, UTF ist frischer und wird also ziemlich sicher falsch sein!!
(ausserdem wäre die Differenz dann min. 4)