Umwandlung

XaaLos

New Member
Hallo,
ich möchte gerne diese php-Script als shell-Script haben... leider habe ich von shell nicht wirklich Ahnung :o könnte mir vielleicht jmd. helfen?!?
PHP:
//Verbindung zur Datenbank aufbauen
$verbindung = mysql_connect("localhost", "benutzer" , "Passwort")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");

mysql_select_db("Datenbank") or die ("Datenbank konnte nicht ausgewät werde");


//Abfrage und Ausgabe der Tabelle daten
$abfrage = "SELECT * FROM daten WHERE Status1 = '1'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
   $Kunden = $row->Name;
   exec("echo $Kunden > test/$Kunden");
$aendern = "UPDATE daten Set Status1 = '0' WHERE Name = '$Kunden'";
$update = mysql_query($aendern);
   }
 
hmm... meinst du so z.B.?
Code:
/usr/bin/php5 -q /home/script.php
Das funktioniert leider nicht weil es führt zu einem:
Code:
sh: /echo: No such file or directory
 
Ach habs schon ^^ nur falls jmd. an einem anderen Morgen/Abend auch Mal so verpeilt ist... vor das echo einfach ein /bin/ :)
 
Ich glaub ich werd verrückt jetzt geht das wieder nicht dabei ging das eben gerade aufjedenfall.......... :confused:
Also ich hab in der Reihe nun stehen:
PHP:
system("/bin/echo $Kunden > test/$Kunden");
und er sagt mir:
Code:
sh: /echo: No such file or directory
aber echo ist unter /bin/echo vorhanden jetzt weiss ich einfach nichtmehr weiter :mad:
 
Wenns php-Code ist dann:
PHP:
system("/bin/echo $Kunden > test/$Kunden");
zu:
PHP:
echo $Kunden > test/$Kunden;
 
Hmmm ich hab das jetzt so abgeändert
PHP:
while($row = mysql_fetch_object($ergebnis))
   {
   $Kunden = $row->Name;
   echo $Kunden > test/$Kunden;
$aendern = "UPDATE daten Set Status1 = '0' WHERE Name = '$Kunden'";
$update = mysql_query($aendern);
   }
und er sagt mir
Code:
Warning: Division by zero in
die Zeile 20 ist
PHP:
echo $Kunden > test/$Kunden;
und in dieser wird weder gerechnet nocht kommt eine Zahl dort vor....
den Rest führt er dann aber zuende aus, er macht den Status auf 0 nur die Datei legt er nicht....

achja es handelt sich nicht um eine Rechteproblem das er nicht schreiben kann...
 
Last edited by a moderator:
und in dieser wird weder gerechnet nocht kommt eine Zahl dort vor....
Doch.
test/$Kunden
Wenn $Kunden nun 0 oder null ist, dann gibt es einen Fehler. Es wundert mich nur, dass er bei "test" nicht schon meckert. Oder ist das eine Kostante? Ach kA.

Vielleicht so:
echo $Kunden > "test/".$Kunden;
 
Jetzt bin ich verwirrt... in Kunde ist ein Name und kein Status wie z.B. 0 oder 1 und test ist ein Ordner er soll das Ergebnis von $Kunden in den Ordner test in die Datei $Kunden schreiben und wenn ich die Zeile statt so wie jetzt "echo $Kunden > test/$Kunden;" mit davor exec oder system aufrufe und dann im Browser geht es ja. Nur wenn ich es direkt auf der Shell mache kommt "sh: /echo: No such file or directory".
 
Last edited by a moderator:
Was spricht dagegen, das ganze SAUBER mit fopen(), etc. zu machen? Dann würde dein Skript wenigstens nicht Bash-spezifisch sein. Ich bezweifele einfach mal, dass man in php mittels ">" in einem echo Aufruf das gleiche bewirkt wie unter der Bash. Ich glaube eher, dass in

Code:
echo $Kunden > test/$Kunden;

versucht wird, ein Boolescher-Vergleich auszuwerten. Also ist $Kunden größer als test/$Kunden??? Kein Wunder, dass er da meckert :)
 
Naja eigentlich wollte ich das ganze ja bash speizifisch machen und garnicht in php... ich weiss nur nicht wie ich eine Abfrage mit Schleife in bash mache...
PHP:
//Verbindung zur Datenbank aufbauen
$verbindung = mysql_connect("localhost", "benutzer" , "Passwort")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");

mysql_select_db("Datenbank") or die ("Datenbank konnte nicht ausgewät werde");


//Abfrage und Ausgabe der Tabelle daten
$abfrage = "SELECT * FROM daten WHERE Status1 = '1'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
 
Weiß ich auf Anhieb auch nicht. Aber das sind nur noch 3 Codezeilen bis zum Erfolg mit "reinem" php. Guck dir mal fopen, fputs und fclose an. Das sollte wirklich schneller gehen als alles andere... :-)
 
Back
Top