CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
10.09.2005, 23:25:28
|
Anfänger
|
|
Registriert seit: Apr 2004
Beiträge: 22
|
|
schneiden von strings und deren eintrag in eine DB
Mit find werden ordner /bla/blub/blob gelistet, jetzt ist meine idee die ordnernamen an den "/" abzuschneiden und in die Datenbank zu hauen,
gibt es einen Befehl der mir den String "vor" einem zeichen ausgibt und nicht "nach" einem Zeichen? zur zeit brauche ich 3 zeilen um das Ergebniss zu erreichen.
PHP-Code:
<?php
$dir="/daten";
$a = `find $dir -depth -type d -print`;
$files = explode ("\n", $a);
for ($i=0; $i < count($files); $i++)
{
$sub_old = substr("$files[$i]",14);
$genre = strstr($sub_old,"/");
$genre2 = substr("$genre",1);
$genre3 = substr("$genre",1, strpos($genre2,'/')) ;
echo $genre3;
echo "<br>";
}
?>
In der Datenbank sollen dann bla eine spalte, blub eine spalte und blob eine eigene spalte bekommen.
Dann ist da noch das problem das zur Zeit so oft der hauptordner gezeigt wird wie es unterordner gibt, das sollte aber bei integration der Datenbankfunktion nicht stören. Um das ganze Datenbankkonform in mehrere ta bellen zu packen ists mir zu spät um mich da reindenken zu wollen, mann könnte "blub" eine ID geben und dann in der haupttabbelle nur die ID angeben, muss aber nicht.
zeit fürs bett.
und besten dank für jede hilfe
|
11.09.2005, 00:29:47
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: schneiden von strings und deren eintrag in eine DB
PHP-Code:
$genre = explode( '/' , $files[$i] );
echo $genre[ 0 ];
echo "<br>";
ich glaube aber nicht, dass das:
$a = `find $dir -depth -type d -print`;
$files = explode ("\n", $a);
funktioniert.
Geändert von feuervogel (11.09.2005 um 00:36:10 Uhr)
|
11.09.2005, 02:06:31
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: schneiden von strings und deren eintrag in eine DB
Zitat:
Zitat von feuervogel
ich glaube aber nicht, dass das:
$a = `find $dir -depth -type d -print`;
$files = explode ("\n", $a);
funktioniert.
|
Du nicht...:
http://de.php.net/manual/de/language....execution.php
|
11.09.2005, 10:57:47
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: schneiden von strings und deren eintrag in eine DB
oha! es ja wirklich doch so einfach...und man braucht nicht mal exec oder system...
|
11.09.2005, 12:09:17
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: schneiden von strings und deren eintrag in eine DB
Möchtest du alles nach dem letzten Slash abschneiden (/foo/bar/foobar -> /foo/bar) oder möchtest du nur dann das letzte Zeichen abschneiden, wenn es ein Slash ist (/foo/bar/ -> /foo/bar?
Die erste Variante würde so funktionieren:
PHP-Code:
<?php
$var = substr($var, 0, strrpos($var, '/'));
?>
Die zweite klappt so:
PHP-Code:
<?php
$regex= '#^(.*)/$#';
preg_match($regex, $var, $matches);
$var = $matches[1];
?>
Oder auch so:
PHP-Code:
<?php
if(substr($var, strlen($var) - 1) == '/')
$var = substr($var, 0, strlen($var) - 2);
?>
Geändert von xabbuh (11.09.2005 um 12:40:16 Uhr)
|
11.09.2005, 17:58:13
|
Anfänger
|
|
Registriert seit: Apr 2004
Beiträge: 22
|
|
AW: schneiden von strings und deren eintrag in eine DB
ich glaube das script funktioniert ganz gut, bis auf 2 macken.
bei bestimmten sonderzeichen wie [] und ' gibt mir mysql einen error und komischerweise sind alle Einträge mehrfach vorhanden.
Die Felder in der DB sind alle als "text" deklariert und auf UTF8_general gestellt
PHP-Code:
<?php
include('functions_db.php');
$conn = db_connect ($host, $user, $password);
$dir="/daten";
$a = `find $dir -depth -type d -print`;
$files = explode ("\n", $a);
for ($i=0; $i < count($files); $i++)
{
$sub_old = substr("$files[$i]",14);
$genre = explode( '/' , $sub_old );
for ($j=0; $j < count($genre); $j++)
{
echo "Genre: $genre[1]";
echo "<br>";
$Genre_db = "$genre[1]";
echo "Interpret1: $genre[2]";
echo "<br>";
$interpret = explode( '-' , $genre[2] );
echo "Interpret2: $interpret[0]";
echo "<br>";
$Interpret2 = "$interpret[0]";
if (count($interpret[1]) != '0')
{
echo "Album1: $interpret[1] $interpret[2]";
echo "<br>";
$Album1 = "$interpret[1] $interpret[2]";
}
$Album_tmp = explode( '-' , $genre[3] );
if (count($Album_tmp[1]) != '0')
{
echo "Album3: $Album_tmp[1]";
echo "<br>";
$Album3 = "$Album_tmp[1]";
}
else {
if (count($genre[3]) != '0')
{
echo "Album2: $genre[3]";
echo "<br>";
$Album2 = "$genre[3]";
}
}
if (count($genre[4]) != '0')
{
echo "Album4: $genre[4]";
echo "<br>";
$Album4 = "$genre[4]";
}
echo "<br>";
echo $query = "
INSERT INTO `tbl_alben` (`alb_interpret`, `alb_name1`, `alb_name2`, `alb_name3`, `alb_name4`, `alb_genre`)
VALUES ( '$Interpret2', '$Album1', '$Album2', '$Album3', '$Album4', '$Genre_db');
";
echo "<br>";
//echo $query = qry_ins_cat($file);
send_sql($dbname, $query);
unset($Album1);
unset($Album2);
unset($Album3);
unset($Album4);
}
}
?>
ich nutze eine Ordnerstruktur mit bis zu 4 Unterordner.
Ohne das unset hat er mir wenn kein wert vorhanden ist immer den letzten in die leeren Felder geschrieben :(.
was sagen die cracks dazu?
Geändert von Ernest (11.09.2005 um 19:01:29 Uhr)
|
11.09.2005, 19:32:42
|
Anfänger
|
|
Registriert seit: Apr 2004
Beiträge: 22
|
|
AW: schneiden von strings und deren eintrag in eine DB
ok, das sonderzeichenproblem scheint gelöst.
Komischerweise zeigt ein find in der bash jeden Ordner nur 1x an, der das php script wie gesagt jeden mehrmals
ups peinlich, die 2te for schleife wird garnicht genutzt :(.
Nun ists fast perfekt, es gibt noch den fall das nur $Interpret2 alleine vorkommt, ohne jegliches album, der Hauptordner ebent, kann man im query sagen das wenn "album1-4 = 0" er nix eitnragen soll?
Komischerweise geht das hier nicht.
PHP-Code:
$array = array("$Album1", "$Album2", "$Album3", "$Album4");
if(count_chars($array) != '0')
{
Geändert von Ernest (11.09.2005 um 19:56:49 Uhr)
|
11.09.2005, 20:12:27
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: schneiden von strings und deren eintrag in eine DB
Zitat:
Zitat von Ernest
PHP-Code:
$array = array("$Album1", "$Album2", "$Album3", "$Album4");
if(count_chars($array) != '0') {
|
Das funktioniert nicht, da du hier vier Elemente angibst. Wenn eine der Variablen leer sind, wird einfach ein leeres Array-Element angelegt.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 03:57:07 Uhr.
|