Daten aus Textfile in PHP einlesen und auswerten?

Hallo zusammen,

ich versuche was ganz verrücktes und ich glaub ich bräuchte da ne kleine Hilfe eruerseits :smile:

Alos folgendes - ich habe ein Textfile in dem untereinander Datei-Nummern stehen. -_>

12345
67890
43243
34544
45656
56778
usw…

Die Dateinummer referenzieren auf Dateinamen

12345 = Dateixyz
67890 = Dateiabc
usw.
Also, anhand der DAteinummer kann ich über eine MySQL-DB Datein finden.
Ich habe jetzt ein Textfeld in meiner PHP-Anwendung in welcher ich diese Dateinummer eingebe und nach Buttonklick findet er mit die Datei.

$dbanfrage = ("SELECT \* FROM dateidatenbank
 WHERE dateinummer='".$\_POST['dateinummer']."' "); 
 $result = mysql\_db\_query ($dbname, $dbanfrage, $dbverbindung);
 $ausgabe = mysql\_fetch\_array ($result);
 echo "
";
 echo "
";
 echo " ";
 echo $ausgabe['Dateipfad'];
 echo " ";

 echo "
";
 echo "
";
 }
 echo mysql\_error();

Jetzt kann es aber vorkommen, das in einem Text-File über 100 solche Dateinummern stehen, würde bedeuten ich muss 100 mal die Nummer ins Textfeld reinkopiern bzw schreiben.
Und da ich im Grund n fauler Hund bin :smile: dachte ich mir „Ich les das gesamte Text-File ein“ und mach die MySql-Abfrage je Zeile.

Meine Frage - geht das?
Wie erkläre ich dem PHP das er Zeile für Zeile auslesen soll und das was in der jeweiligen Zeile steht als „Suchbegriff“ nehmen soll?

Gruß Rolf

p. s. es steht nur immer eine Zahl in der Zeile!

UND …
dann das Ergebniss natürlich noch ausgeben.
Was ncht das Problem momentar darstellt

Gruß Rolf

wenns ein TEXTAREA feld ist :smile:

$gefundene = preg_split(’/\r\n/’, $_POST[‚dateinummer‘]);

und dann

foreach ($gefunden as $dateinummer) {

}

Hallo,

hmmm, ich will ja die Daten nicht in ein Textarea eingeben, sonder in einer Textdate - die heisst dateinummern.txt

Was ich bisher hab ich nun -->

if(isset($\_POST['anzeigen'])){ 

$lines = file ('dateinummern.txt');
foreach ($lines as $line\_num =\> $line) {

 $dbverbindung = mysql\_connect ($host, $user, $password);

 $dbanfrage = ("SELECT \* FROM dateidatenbank
 WHERE dateinummer='".$line."' "); 
 $result = mysql\_db\_query ($dbname, $dbanfrage, $dbverbindung);
 $ausgabe = mysql\_fetch\_array ($result);
 
 $result = mysql\_db\_query ($dbname, $dbanfrage, $dbverbindung);
 while ($ausgabe = mysql\_fetch\_array ($result));
 {
 echo "
";
 echo "
";
 echo " ";
 echo $ausgabe['Dateipfad'];
 echo " ";
 }
 }
 }
 echo mysql\_error();

Es wird hier nichts ausgegeben und auch kein Fehler erscheint!
Wenn was erscheinen sollte würde ich es sagen! Ehrlich!

Gruß Rolf

$dbanfrage = („SELECT * FROM dateidatenbank
WHERE dateinummer=’“.$line."’ ");

ich vermute, dass hier der Fehler liegt.
vmtl ist an der $line Variable hinten noch ein carriage-return und/oder line feed dran, das Du erst entfernen müsstest.

also einfach ein
$line = str_replace("\n","";$line);
und
$line = str_replace("\r","";$line);
vorneweg setzen (aber innerhalb der Schleife)

geht vmtl auch in einem Befehl, aber ich bin ja auch nicht allwissend :smiley:

Hmmm, das wäre einleuchtend, funktioniert leider nicht.

if(isset($\_POST['anzeigen'])){ 

foreach ($zeilen as $zeile) {

$zeile = str\_replace("\n","\r","",$zeile);



 $dbverbindung = mysql\_connect ($host, $user, $password);

 $dbanfrage = ("SELECT \* FROM dateidatenbank
 WHERE dateinummer='".$zeile."' "); 
 $result = mysql\_db\_query ($dbname, $dbanfrage, $dbverbindung);
 $ausgabe = mysql\_fetch\_array ($result);
 
 $result = mysql\_db\_query ($dbname, $dbanfrage, $dbverbindung);
 while ($ausgabe = mysql\_fetch\_array ($result))
 {
 echo "
";
 echo "
";
 echo " ";
 echo $ausgabe['Dateipfad'];
 echo " ";

 }
 }
 }
 echo mysql\_error();

So habe ich es nun, es wird nichts ausgegebe,
Weder das Ergebnis noch eine Fehlermeldung, obwohl ich report\_all eigestellt habe gell!

Gruß Rolf

Hmmm, das wäre einleuchtend, funktioniert leider nicht.
$zeile = str_replace("\n","\r","",$zeile);

*ankopftitsch*

Du kannst ja auch nicht einfach einer Funktion, die 3 Argumente hat einfach ein viertes dazu geben.
Nun wird nach „\n“ gesucht, mit „\r“ ersetzt - und zwar in nem leeren String…

Kleiner tipp: Arbeite mal mit debug-ausgaben wie z.b.
echo $sql;

alternativ
mysql_query($sql) or die („Fehler in sql: $sql“);
(wobei das in dem Moment nix bringt, weil die Abfrage ja richtig formuliert ist)

1 Like

Oikidoiki! :smile:

$zeile = str_replace("\r","",$zeile);
$zeile = str_replace("\n","",$zeile);

So wirkt es

Danke Subba

Gruß Rolf