Datenbank auslesen, und Ergebnis in eine Text Datei speichern


derdayworker

Grünschnabel
Hallo zusammen.
Ich habe ein Problem, und komme nicht weiter.

Ziel ist es, aus einer Datenbank, aus einer Bestimmten Spalte inforationen zu exportieren in eine Textdatei.

Das Problem: Das verwendete PHP Script liest alles aus von "id" bis "status" und packt es in die Text Datei.

Ich zeig euch mal den Aufbau meiner Datenbank:

SQL:
CREATE TABLE `ammy_story` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `Name` VARCHAR(255) NULL DEFAULT NULL,
    `Gebundenan` VARCHAR(255) NULL DEFAULT NULL,
    `Fraktion` VARCHAR(255) NULL DEFAULT NULL,
    `Acro` TEXT NULL,
    `status` ENUM('0','1') NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=MyISAM
;
Das PHP Script dazu sieht folgender maßen aus:

PHP:
<?php
/* Verbindung zur Datenbank */
$host = "localhost";
$user = "root";
$password = "";
$database = "datenbank";
$abfrage = "SELECT * FROM ammy order by Gebundenan, Name ASC";

$db_link = mysql_connect($host, $user, $password);
mysql_select_db($database, $db_link);

/* Datei öffnen und prüfen */
$txt= fopen("export.txt", "w");
if( !$txt )
{
  die("Konnte Datei zum exportieren nicht öffnen");
}

$erg=mysql_query($abfrage) or die(mysql_error());


while($row=mysql_fetch_row($erg))
{
  $txtLine = implode( '<br />' , $row );
 

  /* Neue Zeile anhängen */
  fputs( $txt, "$txtLine\n" );
}

/* Datei schliessen und speichern */
fclose( $txt );
?>
Als Ergebnis kommt da ich hier 2 bedingungen im sortieren haben alles was er findet, das ist ja okay, aber das soll ja so nicht sein.
Ich kann in dem PHP Script ihm nicht angeben, "wo" er sich das weg nehmen soll, denn wenn ich her gehe und schreibe
für das $row z.b. " $row['Name'] " kommt es direkt zu nem Error der mehrzeilig ist.
Die 3. Option die mir eingefallen ist, das ich es mit " $row[0] " versuche, und dann mich durchhange, bis ich da angekommen bin, wo er eigentlich auslesen bzw. den Export vornehmen soll.

Es geht sich dabei um die Spalte "Acro"

Vom Prinzip her soll er nach dem Schema vorgehen, welches oben als SQL Argument gegeben ist, von der Sortierung.
Beachten soll er für die Ausgabe bzw das speichern in die Textdatei nur " Acro ".

Aber wie müsste es aussehen, damit das funktioniert ?

Google macht mich wahnsinnig, denn ich suche nach der möglichkeit, daten von einer Datenbank in eine TXT Datei zu schreiben, und google
macht mir die ganze zeit vorschläge, wie ich daten aus einer TXT in eine Datenbank bekomme.

Ich habe es auch mit Englischen suchbegriffen versucht, aber ich kann mir beim besten willen nicht vorstellen, das niemand sowas schonmal gemacht hat
oder das google nicht in der lage ist entsprechende Lösungen zu finden.

Ich wäre euch sehr dankbar, wenn ihr mir weiter helft.

Grüße
Derdayworker
 

basti1012

Erfahrenes Mitglied
So ganz verstehe ich das nicht.
Du willst nur das aus der Zeile acro in der Datei speichern ?
Warum läßt du dir dann nicht einfach nur die Zeile acro ausgeben ?
Code:
$abfrage = "SELECT acro FROM ammy order by Gebundenan, Name ASC";
Oder verstehe ich da gerade was falsch ?

Auserdem solltest du mal mysqli benutzen,
Dein problem mit
Code:
$row['Name']
sollte eigentlich auch klappen wenn man alles richtig macht .

an besten nochmal machen und ohne das veraltete mysql .
Welche php Version nutzt du ?
 
Zuletzt bearbeitet:

derdayworker

Grünschnabel
Da ich noch ältere Projekte habe - die nicht von mir geschrieben wurden - kann ich nicht auf ganz Aktuelle Versionen zurückgreifen.

Im Einsatz ist " Apache/2.2.8 (Win32) DAV/2 mod_ssl/2.2.8 OpenSSL/0.9.8g mod_autoindex_color PHP/5.2.5 "
Mysql " 5.0.51a "

XAMPP für Windows Version 1.6.6a habe ich dafür im einsatz.

Es hat aber funktioniert, ich habe das * durch acro ersetzt, und das Script holt nun tatsächlich die Infos aus dieser Zelle.

Das mit dem " $row['Name'] "

Warning: implode(): Invalid arguments passed in C:\xampp\htdocs\www\ubersicht\eintragen_acros\test.php on line 25

Und in besagter Zeile 25 steht " $txtLine = implode( '<br />' , $row['Name'] ); "
Erst durch entfernung von " ['Name'] "
Natürlich ersetzt anstelle "Name" als "acro" Funktioniert nicht.

Aber so ist das eigentlich auch eine brauchbare Lösung
 

basti1012

Erfahrenes Mitglied
wenn es jetzt geht dann ist ja gut
Ich glaube wenn du die Zeile
Code:
        while($row=mysql_fetch_row($result)){
mit der austauschen tust
Code:
   while ($row = mysql_fetch_assoc($result)){
sollte dein $row['acro']; auch funktionieren.

Bin mir aber nicht ganz sicher weil ja mysql kaum noch genutzt wird. Deine Variante mit mysql_fetch_row gibt es bei Php 7 wohl schon gar nicht mehr.
 

derdayworker

Grünschnabel
Wie du schon richtig erkannt hast, es gibt nen Problem, das mein PHP/MYSQL mit "
while ($row = mysql_fetch_assoc($result)) " ein Problem hat, weil es dies nicht kennt.
Kommt diese art der änderung durch MYSQLi ? dann müsste ich denke ich mal überall wo die Mysql anweisung steht, diese durch hinzufügen des "i" abändern, und die zuweisung zur datenbank neu definieren oder ?

Das mit dem " $row['acro'] " klappt dadurch tatsächlich nicht.
 

Neue Beiträge