Daten per Schleife in MySQL Tabelle eintragen.

Xenoido

Grünschnabel
Hi,

Ich möchte für jede .jpg Datei in einem Ordner in die Spalte $karte eine neue Zeile einfügen, dabei soll der inhalt der Spalte der Dateiname ohne Endung sein.


Dies hab ich bislang (Eintragen in MySql Datenbank sowie die überprüfung ob ein Eintrag schon vorhanden ist fehlen noch!)

PHP:
<?php
include '../settings/mysqlconnect.php';

$planet = "alpha-1";
$karte = "map01";
$verzeichnis="../map/planet/alpha-1/map01/";
$anzahl = count(glob($verzeichnis."*.jpg"));

while($number < $anzahl)
   {
   $number++;
   $file = basename ($verzeichnis,".jpg");
   echo $file;
   echo $number.", ";
   
   }
?>

Das Problem ist, er Verwendet momentan noch alle Dateitypen und liest die erste Datei entsprechend $anzahl ein.

mfg. Niels
 
Hi,

Das Problem ist, er Verwendet momentan noch alle Dateitypen und liest die erste Datei entsprechend $anzahl ein.

Hier gibts doch nen gutes Beispiel dafür:

Beispiel #1 Convenient way how glob() can replace opendir() and friends.
PHP:
<?php
foreach (glob("*.txt") as $filename) {
    echo "$filename size " . filesize($filename) . "\n";
}
?>
Dann einfach nur die Endung anpassen und du bekommt immer die Dateinamen der jpg-Dateien.
Mit basename() bekommst du dann nur den Dateinamen, den du eintragen willst.

Und mit Hilfe von mysql_query und einem INSERT statements kannst du dann die Datei in die Datenbank eintragen.

Gruß,
DJ
 
Zuletzt bearbeitet:
Neue fehlermeldung:

Kann es sein das sich foreach und basename nicht vertragen?
"Warning: Invalid argument supplied for foreach() in"

PHP:
<?php
include '../settings/mysqlconnect.php';

$planet = "alpha-1";
$karte = "map01";
$verzeichnis="../map/planet/alpha-1/map01/";

foreach ( basename ($verzeichnis."*.jpg,.jpg") as $filename) {
	$result = mysql_query("SELECT $filename FROM $planet WHERE $filename LIKE '$filename'");
	$menge = mysql_num_rows($result);
	if($menge == 0) 
		{
		$eintragen = "INSERT INTO $planet($karte) Values ('$filename')";
		$eintragen = mysql_query($eintragen) or die(mysql_error());
		}
	echo "$filename\n";
}
?>
 
Zuletzt bearbeitet:
sry aber ich glaube ich stehe grade vollkommen neben mir^,

das habe ich jetzt raus:
PHP:
foreach ( basename ($verzeichnis."*.jpg,"$filename.".jpg" )) {

mit dieser Fehlermeldung:
Parse error: syntax error, unexpected T_VARIABLE in /usr/export/www/hosting/widewideworld/admin/creatmaprows.php on line 8
 
Der ist nun weil kein Punkt vor der Variablen $filename ist.
Und warum haben deine Dateinamen Kommata?

foreach ist für Arrays gedacht und basename liefert einen String laut php.net, wie vorhin schon gesagt:
http://www.php.net/manual/de/control-structures.foreach.php
http://www.php.net/manual/de/function.basename.php

Wie fit bist du in PHP?
Wenn du die Typen noch nicht kennst ist das hilfreich: http://www.php.net/manual/de/language.types.php

DeeJTwoK hat dir doch die Lösung aus PHP.net gegeben zu glob() : http://www.php.net/manual/de/function.glob.php

Und wenn die Fehlermeldungen dir "zu Englisch" sind gibts hier was: http://www.php-fehlermeldungen.de/topicmenu1/index0.html
 
Zuletzt bearbeitet:
Zurück