Fortgeschrittenes Linkchecking - PHP & MySQL

Ich würde es dann so machen das gleich "am Anfang der Seite" die Funktion aufgerufen wird. Die Funktion leifert dann ein Array welches mit Index 0 entweder die Domain des Servers oder mit Index 1 eine Fehlermeldung liefert.

Das Array wird dann ausgewertet und der Link oder die Fehlermeldung ausgegeben.

PHP:
<?php
function server_check (){
// hier ein Array als Beispiel, bei dir wird dafür das Ergebnis der Datenbankabfrage durchlaufen
$ip = array ("htp://www.tutorials.de", "http://w.tutorials.de", "http://www.tutorials.de", "http://www.tutorials");

for ($a = 0; $a < count($ip); $a++) {
    if (@fopen($ip[$a], "r")) {
		return array($ip[$a], "");
    }
}
// wenn kein Server erreichbar
return array("", "<b>Es ist ein Fehler aufgetreten!</b>");
}

?>
<body>
<?php $server = server_check(); $files['software_filename'] = "datei.html"; ?>
<table>
    <tr>
        <td bgcolor=#bfdaf2>
        <?php if ($server[1] == "") { ?>
			<a href="<?php echo $server[0] .'/downloads/' .$files['software_filename']; ?>"><img src="bilder/download.jpg" width="20" height="20" border="0" alt="Download"></a>
		<?php } else {
			echo $server[1];
			}
		?>
		</td>
    </tr>
</table>
</body>
 
Hi tombe

C'est genial! Es läuft TipTop! Ganz Herzliches Dankeschön meinerseits :-)

Nur noch was kleines... Eigentlich möchte ich den Array aus einer Datenbank auslesenkönnen um mir einige Optionen warmhalten zu können... Wie hänge ich nun meine Datenbank ins Array?

Überglückliche Grüsse
Patrick
 
Du liest am Anfang der Funktion die Daten aus der DB aus und nimmst diese für die FOR-Anweisung

PHP:
$sql = "SELECT server FROM tabelle";
$rs = mysql_query($sql);

for ($a = 0; $a < mysql_num_rows($rs); $a++) {
    if (@fopen(mysql_result($rs, $a, "server"), "r")) { 
        return array(mysql_result($rs, $a, "server"), ""); 
    }
}

Ein Array brauchst du dann nicht.
 
Scheint aus irgendeinem mir nicht erklärenbahren Grund nicht zu funktionieren.... *grübel* wtf sonst funktionierts eigentlich immer so ^^

Hier mein Codeausschnitt:

PHP:
<html>
<?php

//Datenbank-Login
$mysqlhost="localhost"; // MySQL-Host angeben
$mysqluser="****"; // MySQL-User angeben
$mysqlpwd="****"; // Passwort angeben
$mysqldb="db_filemanager"; // Gewuenschte Datenbank

function server_check (){
// hier ein Array als Beispiel, bei dir wird dafür das Ergebnis der Datenbankabfrage durchlaufen

$sql = "SELECT server_address FROM tbl_serverprio";
$rs = mysql_query($sql);

for ($a = 0; $a < mysql_num_rows($rs); $a++) {
    if (@fopen(mysql_result($rs, $a, "server_address"), "r")) { 
        return array(mysql_result($rs, $a, "server_address"), ""); 
    }
}  


// wenn kein Server erreichbar
return array("", "<b>Es ist ein Fehler aufgetreten!</b>");
}

?> 

<body>


<?php $server = server_check(); $files['software_filename'] = "datei.html"; ?>

(Im Anhang noch der PrtSc der DB-Tabelle...)
 

Anhänge

  • serverprio.png
    serverprio.png
    3,1 KB · Aufrufe: 8
Zuletzt bearbeitet:
Also ich habe jetzt mal (bis auf das letzte Feld) die Tabelle nachgestellt um die Funktion so wie oben zu benützen und nach einer kleinen Änderung geht es bei mir jetzt auch. Was bei dir wohl fehlt ist mysql_connect und mysql_select_db.


PHP:
<?php
//Datenbank-Login
$mysqlhost="localhost"; // MySQL-Host angeben
$mysqluser="****"; // MySQL-User angeben
$mysqlpwd="****"; // Passwort angeben
$mysqldb="db_filemanager"; // Gewuenschte Datenbank

$db = @mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die ("Konnte keine Verbindung zur Datenbank herstellen");
mysql_select_db($mysqldb, $db);

function server_check (){
// hier ein Array als Beispiel, bei dir wird dafür das Ergebnis der Datenbankabfrage durchlaufen

$sql = "SELECT server_address FROM tbl_serverprio ORDER BY server_prio ASC";
$rs = mysql_query($sql);

for ($a = 0; $a < mysql_num_rows($rs); $a++) {
    if (@fopen(mysql_result($rs, $a, "server_address"), "r")) {
        return array(mysql_result($rs, $a, "server_address"), "");
    }
}


// wenn kein Server erreichbar
return array("", "<b>Es ist ein Fehler aufgetreten!</b>");
}

?>

Beschreibe doch mal was bei dir nicht geht, denn so weiß keiner wo mit der Suche anfangen.

Was mir auch noch aufgefallen ist, du hast diese Zeile bei dir stehen:

PHP:
<?php $server = server_check(); $files['software_filename'] = "datei.html"; ?>

Da habe ich bei mir zum Testen die Variable $files['software_filename'] mit einem Wert belegt. Diese Angabe musst du natürlich bei dir löschen!!
 
Guten Morgen tombe :)

Schau, bei der Ausgabe bekomme Ich einen Fehler das er kein Server gefunden worden ist... (siehe Anhang)

Ich habe mich noch gefragt was das "datei.html" soll, aber der erste teil brauche ich ja um die variabel $server zu definieren:

PHP:
<?php $server = server_check();

um Sie danach hier ausgeben zu können:

PHP:
<td bgcolor=#bfdaf2>
        			<?php if ($server[1] == "") { ?>
            			<a href="<?php echo $server[0] .'/downloadseite/downloads/' .$files['software_filename']; ?>"><img src="bilder/download.jpg" width="20" height="20" border="0" alt="Download"></a>
        			<?php } else {
            				echo $server[1];
            				}
        			?>
        			</td>

Gruss vom löchernden Schweizer, Patrick ;)
 

Anhänge

  • adminfehlermysql.png
    adminfehlermysql.png
    45,3 KB · Aufrufe: 6
Zuletzt bearbeitet:
Liegt wohl daran das ich zum Testen in die Datenbank tatsächliche Domains eingetragen habe und du "nur" die verschiedenen IP-Adressen.

Du musst in diesem Fall noch "http://" zur IP aufnehmen so das dann in deinem Fall nicht nur "192.168.4.222" sondern "http://192.168.4.222" usw. geprüft wird.

Andernfalls darfst du nicht mit fopen prüfen sondern musst fsockopen dafür nehmen.
 
Hey tombe!

Ich glaub du bist einfach ein Genie! Tatsächlich funtioniert es jetzt mit dem http://...

Danke dir tausend Mal :-) Hast du eine Webseite? Dan spende Ich dir gerne mal was bei nächster Gelegenheit auf dein PayPal Konto :-)

Gruss Patrick

Thema Erledigt :)
 
Danke fürs Kompliment, freut mich wenn ich helfen konnte.

Lass mal gut sein das passt schon so. Wenn ich mal Hilfe brauche kannst du dich ja revanchieren.
 
Zurück