PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kleines Script in php gesucht


tsaG
2009-02-16, 10:07:47
Hallo,

Ich möchte mir ein php Script schreiben das folgendes macht. In einer mysql Tabelle folgendes abrufen:

SELECT
mangos_realmd.account.online
FROM
mangos_realmd.account
WHERE
mangos_realmd.account.online = '1'

Dabei kommen (zb.) 500 reihen zurück. diese Reihen sollen dann gezählt werden, also die 500 reihen dann in die Zahl 500 umgewandelt und in eine textdatei geschrieben werden. Das Script wollte ich dann in den Sheduler packen und dann in einem Intervall ausführen lassen.

Bisher habe ich folgendes:


$host = "host";
$port = "port";
$Username = "Username";
$Pass = "Passwort";
$Database = "mangos_realmd"

//Zur DB verbinden
$con = mysql_connect($host.":".$Port, $Username, $Pass) or die(mysql_error());
mysql_select_db($Database) or die(mysql_error());

$query = "SELECT mangos_realmd.account.online FROM mangos_realmd.account WHERE mangos_realmd.account.online = '1'";
$result = mysql_query($query) or die(mysql_error());
$numrows = mysql_num_rows($result);

Funktioniert das soweit? Ist numrows dann meine Zahl? Wie schreibe ich sie dann in eine Textdatei?

Achja, und wie integriere ich dann numrows in eine html datei... geht das mit

<?php
Code
?>

darph
2009-02-16, 10:13:37
Die Funktionen, die du brauchst, nennen sich fopen und fwrite.

tsaG
2009-02-16, 10:31:47
Okay, Die Datei sieht nun so aus:

$Host = "xxxx";
$Database = "mangos_realmd";
$Port = "xxxxx";
$Username = "xxxxx";
$Pass = "xxxxx";

//Zur DB verbinden
$con = mysql_connect($host.":".$Port, $Username, $Pass) or die(mysql_error());
mysql_select_db($Database) or die(mysql_error());

$query = "SELECT mangos_realmd.account.online FROM mangos_realmd.account WHERE mangos_realmd.account.online = '1'";
$result = mysql_query($query) or die(mysql_error());
$numrows = mysql_num_rows($result);
print $numrows;

//schreiben

$filename = 'test.txt';

if (is_writable($filename)) {

if (!$handle = fopen($filename, "a")) {
print "Kann die Datei $filename nicht öffnen";
exit;
}

if (!fwrite($handle, $numrows)) {
print "Kann in die Datei $filename nicht schreiben";
exit;
}

print "Fertig, in Datei $filename wurde $numrows geschrieben";

fclose($handle);

} else {
print "Die Datei $filename ist nicht schreibbar";
}


Aber... wie führe ich die Datei nun aus?^^

<?php
test.php
?>

in einer .html Datei führt zu nichts :o (Bildschirm bleibt weiss und die txt Date enthält nichts). Wenn ich die php Datei selbst ausführe wird mir nur der Text angezeigt... Und ja, php ist installiert und funktioniert auch sonst (bei anderen Seiten :( )


EDIT: Wenn ich das ganze mit <?php und ?> in eine html Datei schreibe erhalte ich auch nur ein weisses bild :(

darph
2009-02-16, 11:04:03
Äh, tsag. ;(

Mach ma Folgendes:

<?php
echo("huhu!");
?>


in eine test.php - diese Test.php-Datei packst du in das Verzeichnis, das dein Webserver als Wurzelverzeichnis für Webseiten hält und gibst dann im Browser ein http://derserverwomöglichlocalhost/test.php

;)

Radon
2009-02-16, 11:56:31
Ich habe die ganze Zeit nach dem Sinn deiner MySQL Anfrage gesucht (wieso ließt du Zeilen aus von denen du weißt dass da 1 drin steht oO)... dann gemerkt, du willst nur die Anzahl der Zeilen, dann mach doch einfach

SELECT
count(mangos_realmd.account.online)
FROM
mangos_realmd.account
WHERE
mangos_realmd.account.online = '1'
Damit bekommst du gleich die Anzahl und es spart massig Aufwand

Die Ergebnisse von Datenbank Abfragen sind in einem speziellen Variablen Format, also muss man sie noch auslesen mit PHP Befehlen.. num_rows hat die Anzahl derZeilen gezählt, das ist jetzt nicht notwendig, du must nur die Daten auslesen, die drin stehen

list($anzahl) = mysql_fetch_row($result);Dann steht in der Variable $anzahl die Anzahl der Zeilen (wenn ich nix falsch gemacht hab)

Hinweise zu Dateifunktionen bekommst du hier (generell auch gut zum Nachschlagen)
http://www.php.net/manual/de/function.fopen.php

Und was meinst du mit ausführen?
Eine PHP Datei muss entweder vom Webserver mit PHP Erweiterung ausgeführt werden, der dann aus dem PHP Code ne HTML Seite baut oder vom PHP Prozessor auf der Kommandozeile.
Du hast gemeint, du willst das Script dann periodisch ausführen...

Was für ein System hast du da (Windows, Linux)? Was für einen Scheduler meinst du?

rotalever
2009-02-16, 17:48:06
Macht es eigentlichen einen (Geschwindigkeits-)Unterschied, ob man COUNT(*) oder COUNT(column-name) macht?