php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 23-04-2018, 10:37
wernerx
 Registrierter Benutzer
Links : Onlinestatus : wernerx ist offline
Registriert seit: Apr 2018
Beiträge: 6
wernerx befindet sich auf einem aufstrebenden Ast
Unhappy Werte aus sql-Datenbank in csv schreiben

Hi,

erster Post und gleich ne doofe frage, so haben wir es gerne
Ja Sorry. Bin der absolute php-Anfänger und versuche hier die ganze Zeit Datenbankinhalte in eine csv zu schreiben.
Aber egal was ich ausprobiere, er sagt mir immer, dass ich was falsch mache.

Hier mal der Code. Das funktioniert auch soweit, dass meine Daten richtig formatiert am Bildschirm angezeigt werden.
Code:
        $sql  = "SELECT .....
	$db = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname);
	$db->set_charset('utf8');
	$erg = $db->query($sql)
		or die( $db->error);
	//Ausgabe Ergebnis
	if ($erg->num_rows) {
		echo "<p>Daten vorhanden: Anzahl ";
		echo $erg->num_rows;
                $fp=fopen("datei.csv", "w");
	}
	while ($zeile = $erg->fetch_object()) {
		echo '<br>'. $zeile->username, ", ", $zeile->pf_strasse, ", ", $zeile->pf_ort, ", ", $zeile->user_id; 
	}
	fclose($fp);
	$erg->free();
	$db->close();
Ich habe nun versucht über verschiedenste Varianten mit fputcsv oder fwrite versucht die Daten in eine Datei zu schreiben. Aber es kommen immer Fehlermeldungen, dass das Format nicht stimmt.

Es wäre echt nett, wenn mir hier jemand die richtige Codezeile zur Ausgabe basteln könnte.

Danke im voraus

gruß Werner
Mit Zitat antworten
  #2 (permalink)  
Alt 23-04-2018, 10:47
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.543
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Ich sehe in dem Code weder ein fwrite, noch ein fputcsv.
Mit Zitat antworten
  #3 (permalink)  
Alt 23-04-2018, 10:49
wernerx
 Registrierter Benutzer
Links : Onlinestatus : wernerx ist offline
Registriert seit: Apr 2018
Beiträge: 6
wernerx befindet sich auf einem aufstrebenden Ast
Standard

Den habe ich wieder gelöscht, da er ja eh falsch war
Mit Zitat antworten
  #4 (permalink)  
Alt 23-04-2018, 11:00
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.543
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wernerx Beitrag anzeigen
Den habe ich wieder gelöscht, da er ja eh falsch war
Und man soll jetzt erraten, was du falsch gemacht hast?
Mit Zitat antworten
  #5 (permalink)  
Alt 23-04-2018, 11:24
wernerx
 Registrierter Benutzer
Links : Onlinestatus : wernerx ist offline
Registriert seit: Apr 2018
Beiträge: 6
wernerx befindet sich auf einem aufstrebenden Ast
Standard

Das Problem hat sich teilweise erledigt.
Habe parallel natürlich weiter probiert und bin jetzt auf eine Lösung gestoßen, die teilweise funktioniert.
Meine While Schleife sieht jetzt so aus:
Code:
	while ($zeile = $erg->fetch_object()) {
		echo '<br>'. $zeile->username, ", ", $zeile->pf_strasse, ", ", $zeile->pf_ort, ", ", $zeile->user_id; 
		$daten = (array) $zeile;
		fputcsv($fp, $daten);
ich hatte bei den vorherigen Tests das so stehen:
Code:
		$daten = $zeile;
		fputcsv($fp, $daten);
Aber jetzt habe ich ein anderes "Problem"
Das Ergebnis sieht in der Datei jetzt so aus:

Code:
975,riza,"Irgendwo 10a",57057
1093,taing,"Hinsenweg 3","12345 testhausen"
Immer wenn ein Leerzeichen dabei ist, werden meine Werte in Anführungszeichen gesetzt.
Bei der Ausgabe mit echo nicht. Das stört aber, kann man die irgendwie weg bekommen? Darf ich hier weiter Fragen, oder soll ich dazu ein neues Thema aufmachen?

Danke Gruß Werner
Mit Zitat antworten
  #6 (permalink)  
Alt 23-04-2018, 11:54
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.543
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wernerx Beitrag anzeigen
Immer wenn ein Leerzeichen dabei ist, werden meine Werte in Anführungszeichen gesetzt.
Ja, das ist bei CSV so.

Zitat:
Zitat von wernerx Beitrag anzeigen
Bei der Ausgabe mit echo nicht. Das stört aber, kann man die irgendwie weg bekommen?
Warum? Das ist ein korrektes CSV-Format. Ich dachte du wolltest eine CSV-Datei erstellen?
Mit Zitat antworten
  #7 (permalink)  
Alt 23-04-2018, 12:45
wernerx
 Registrierter Benutzer
Links : Onlinestatus : wernerx ist offline
Registriert seit: Apr 2018
Beiträge: 6
wernerx befindet sich auf einem aufstrebenden Ast
Standard

Mein Fehler, Sorry.
Ich verarbeite die csv mit einem anderen Programm weiter und da waren in allen Beispieldateien keine Anführungszeichen. Aber ich habe es jetzt mal getestet, die Schnittstelle kommt auch mit Zeichenfolgen in Anführungszeichen zurecht.

Danke für deine Hilfe.

gruß Werner
PS. Wenn ich gerade dabei bin, vielleicht kannst du mir bei einem anderen Thema noch mal drüber schauen.
Parallel lese ich die Datei für Auswertungen mit Excel ein, dabei macht er Probleme mit den umlauten. Ich habe folgende Zeile in meinem php-Script:
Code:
header('Content-Type: text/html; charset=utf-8');
Damit sollte doch sicher gestellt sein, dass die Datei die er erzeugt utf-8 kodiert ist. Richtig?

Ich muss leider diesen Weg über Excel gehen, da ich die Datei noch sehr umfangreich über bubbelsort mit einer anderen Datei auswerten muss. Und das kriege ich in php aufgrund der Komplexität nie hin.
Mit Zitat antworten
  #8 (permalink)  
Alt 23-04-2018, 12:50
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.543
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wernerx Beitrag anzeigen
Parallel lese ich die Datei für Auswertungen mit Excel ein, dabei macht er Probleme mit den umlauten. Ich habe folgende Zeile in meinem php-Script:
Code:
header('Content-Type: text/html; charset=utf-8');
Damit sollte doch sicher gestellt sein, dass die Datei die er erzeugt utf-8 kodiert ist. Richtig?
1. Ich dachte du möchtest eine CSV-Datei und keine HTML-Datei erzeugen? Warum sagst du dann im Header, dass du HTML ausgibst?

2. Nur weil du im Header sagst, dass du UTF-8 ausgibst, wird nicht automagisch alles in dieser Kodierung ausgegeben. Darum musst du dich schon selber kümmern. Im Fall der Datenbank musst du die Datenbankverbindung auf UTF-8 setzen. Und wenn die Daten von Excel gelesen werden, beachte, dass Excel einen UTF-8 BOM erwartet. Den musst du auch noch am Anfang des Datenstroms ausgeben.
Mit Zitat antworten
  #9 (permalink)  
Alt 23-04-2018, 15:13
wernerx
 Registrierter Benutzer
Links : Onlinestatus : wernerx ist offline
Registriert seit: Apr 2018
Beiträge: 6
wernerx befindet sich auf einem aufstrebenden Ast
Standard

Hi,

der Fehler mit dem Header ist halt meinem Copy und paste programmieren geschuldet. danke für den Hinweis.

vielleicht kannst du mir helfen, wie ich die csv-datei richtig erstelle?
Wenn ich meine derzeitige csv-Datei mit einem Editor öffne, wird mir als Codierung Unix UTF-8 angezeigt. Also UTF-8 ist schon mal richtig.
Aber die Umlaute werden trotzdem in Excel nicht richtig verarbeitet.

Wenn ich eine Textdatei auf meinem PC erstelle (Codierung Windows / Ansi) und kopiere die Daten per copy und paste aus der UNIX Datei, werden die Umlaute richtig verarbeitet.

Eine Hilfe wäre toll, Danke.

gruß Werner
Mit Zitat antworten
  #10 (permalink)  
Alt 23-04-2018, 15:51
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.543
h3ll befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
$db = new PDO('mysql:host=localhost;dbname=test;charset=utf8''root''', [
    
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);

$db->query('
    CREATE TEMPORARY TABLE test (
        id INT NOT NULL AUTO_INCREMENT,
        foo VARCHAR(255) NOT NULL,
        PRIMARY KEY (id)
    )
'
);

$stmt $db->prepare('INSERT INTO test (foo) VALUES (?)');
$stmt->execute(["B\xC3\xA4rlauch"]);
$stmt->execute(["R\xC3\xB6mer"]);
$stmt->execute(["Wei\xC3\x9Fer Tee"]);


$result $db->query('SELECT id, foo FROM test');


/**
 * CSV-Ausgabe
 */

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="export.csv"');

echo 
"\xEF\xBB\xBF"// UTF-8 BOM

$fp fopen('php://output''w');
while (
$row $result->fetch(PDO::FETCH_NUM)) {
    
fputcsv($fp$row';');
}
fclose($fp); 
Mit Zitat antworten
  #11 (permalink)  
Alt 23-04-2018, 21:14
ThomasTailer
 Banned
Links : Onlinestatus : ThomasTailer ist offline
Registriert seit: Apr 2018
Beiträge: 2
ThomasTailer befindet sich auf einem aufstrebenden Ast
Standard Also probier es aus

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

// Create database
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
echo "Database created successfully";
} else {
echo "Error creating database: " . $conn->error;
}

$conn->close();
?>

Geändert von Kropff (23-04-2018 um 22:40 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 24-04-2018, 07:28
wernerx
 Registrierter Benutzer
Links : Onlinestatus : wernerx ist offline
Registriert seit: Apr 2018
Beiträge: 6
wernerx befindet sich auf einem aufstrebenden Ast
Standard

@Hernando: Weiß gerade nicht was du mir mit dem Zitat von h3ll sagen willst?

@ThomasTailor: Bei dir geht es mir ähnlich. Das Script erstellt eine Datenbank? Eine Datenbank habe ich schon, daher fehlt mir gerade die Idee was mir dein Script bei dem UTF-8 Problem helfen soll?

@h3ll: Danke, muss mal schauen ob ich vor meinem Urlaub noch dazu komme das zu testen, wenn nicht nach meinem Urlaub. Aber vorab schon mal Danke für deine Mühen.

Gruß Werner
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Lagerbestand aus .csv in Datenbank Tabelle schreiben ehrgeizz Apps und PHP Script Gesuche 5 29-04-2011 16:22
SQL Abfrage in csv schreiben eawebsolutions SQL / Datenbanken 1 01-02-2011 05:14
[SQL allgemein] 2 Werte in Datenbank Level7 SQL / Datenbanken 7 18-08-2008 11:58
werte von checkboxen in datenbank schreiben Krusty SQL / Datenbanken 1 03-03-2002 18:53
Werte aus Variable in ein Array schreiben andik2000 PHP Developer Forum 5 16-01-2002 09:01

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

Computer oder Gehirn? Macht uns das Internet immer dümmer? 
Computer oder Gehirn? Macht uns das Internet immer dümmer? Die ständig zur Verfügung stehenden Informationen über das Internet haben den Vorteil, dass man sich im Vergleich zu früheren Jahren deutlich weniger merken muss.

18.01.2018 | PhilippEgger

PHP oder Spanisch lernen? Oder doch beides?
PHP oder Spanisch lernen? Oder doch beides?Fremdsprachen sind für Entwickler enorm wichtig. Ohne Englisch geht fast nichts.

28.11.2017 | Berni


 

Aktuelle PHP Scripte

jefex CMS 2.1

Die Einsteiger-Version ist für einfache Webseiten vorgesehen, wie z.B. Visitenkarten oder Informations-Webseiten. jefex CMS 2 Starter beinhaltet folgende Features.CMS für jedermann in drei Versionen erhältlich

14.05.2018 jefex-media | Kategorie: PHP/ CMS
jefex CMS 2 Extended

jefex CMS 2 Extended Die erweiterte Version ist für Webseiten, wie z.B. private Homepages oder Präsentations-Webseiten. jefex CMS 2 Extended beinhaltet folgende Features.

14.05.2018 jefex-media | Kategorie: PHP/ CMS
Top-Side.de Php Guest Book v1.2

Gästebuch mit: Smilies, Selbst einstellbarer IP Sperre, Spamschutz (ein- und ausschaltbar), Einträge löschen und editieren, Kommentarfunktion, Seiten- bzw. Blätterfunktion, BB-Code, Vorschaufunktion, Gesamtzahl der Einträge, Hitcounter, E-Mail Adressen vo

27.04.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:57 Uhr.