Wie muss ich die Überprüfung der Tabelle richtig schreiben

So ich nehme den obigen Code mal als Vorlage.

PHP:
<?php 
require_once  'config.inc.php';

mysql_connect ( DB_HOST, DB_USER, DB_PASS ) 
    or die ( 'Konnte keine Verbindung hergestellt werden: ' . mysql_error ()) ;

mysql_select_db ( DB_NAME ) 
    or die ( 'Kann Datenbank "' . DB_NAME . '" nicht ausw&auml;hlen: ' . mysql_error ());

$sql = "SELECT Online FROM Status WHERE Online = '" .$_POST["on"] ."'"; 
//oder vielleicht doch nur so $sql = "SELECT Online FROM Status"

$result = mysql_query($sql);

while ($row = mysql_fetch_object($result))
{
    if ($row->Online == 1) {
        echo '<a href="www.google.de" target="_blank">Test</a><br />';
    } else {
        echo '<a href="www.test.de" target="_blank">Test2</a><br />';
    }
}
?>

Da du in deinem Beispiel mit REQUEST gearbeitet hast, gehe ich davon aus das der Wert "on" an die Seite übergeben wird. Habe dies jetzt mal mit der POST-Variable gelöst. Zur Not die einfach auf GET ändern oder einen festen Wert (0 oder 1) dafür eintragen.
Wobei dieser Teil der Abfrage eigentlich keinen Sinn macht. Denn wenn du in der Abfrage nur die Datensätze ausliest die z.B. "Online = 1" sind, dann kannst du dir die IF-Abfrage weiter unten sparen.
 
Hier nochmal kurz eine Bechreibung wie es "normal" ablaufen sollte wenn das Script ausgeführt wird.

Ich habe eine DB mit dem Namen:
Webcamstatus
Dann habe ich dort eine Tabelle angelegt mit Namen :
Status
Dort gibts eine Spalte mit Namen:
Online

Wenn dort in der Spalte "Online" eine 1 steht dann soll er mich z.b auf google.de verlinken
und wenn dort eine 0 drinsteht dann soll er mich auf web.de verlinken.

Mein folgender Code ist noch irgendwo fehlerhaft:

Erstmal die config.inc.php: (die ist soweit in Ordnung)

PHP:
<?php
//Hostadresse
define ( 'DB_HOST','xxx.xxx.xxx.xxx' );
//Daten der DB
define ( 'DB_USER'  , 'xxxxxxxx' );
define ( 'DB_PASS'  , 'xxxxxxxx' );
//Datenbankname
define ( 'DB_NAME'  , 'Webcamstatus'); 
?>

Dann die index.php: (Hier sollte die Überprüfung stattfinden und die Verlinkung)

PHP:
<?php
require_once  'config.inc.php';

mysql_connect ( DB_HOST, DB_USER, DB_PASS )
    or die ( 'Konnte keine Verbindung hergestellt werden: ' . mysql_error ()) ;

mysql_select_db ( DB_NAME )
    or die ( 'Kann Datenbank "' . DB_NAME . '" nicht ausw&auml;hlen: ' . mysql_error ());

$sql = 	"SELECT ".
			"Online".
		"FROM ".
			"Status".
		"WHERE ".
			"(Online like '".$_REQUEST ["on"]."')";

$result = mysql_query($sql);

while ($row = mysql_fetch_object($result))
{
    if ($row->Online == 1) {
        echo '<a href="www.google.de" target="_blank">Test</a><br />';
    } else {
        echo '<a href="www.test.de" target="_blank">Test2</a><br />';
    }
}  
?>

Habe oben den Username und Passwort und Host mit xxxxx ersetzt und die links wo er drauf verlinken soll sind uch nur Testlinks

Sooo tombe ich habe nochmal alles gepostet...
Vielleicht kannst du mir dann weiterhelfen. Wenn ich das am laufen habe dann werde ich den Code hier nochmal zu Schluß posten wenn er funktioniert....

Danke schonmal...

Gruß Micha
 
So wie ich es verstehe gibt es eine Zeile mit einem Feld und darin steht 0 oder 1
Demzufolge wäre dein Ansatz, tombe, falsch da er bei off (0) gar nie in die while-Schleife geht und somit auch nicht in den else-Teil deines ifs.

Entweder ein WHERE und dann prüfen ob überhaupt etwas aus der DB zurückkommt, oder ohne WHERE aber dafür den Feldinhalt auswerten. Aber nicht beides

@KeyT0ast3r
Auch wenn du meine Hilfebeiträge mit dem Tutorial zur Fehlersuche bisher profesionell ignoriert hast, hör auf PNs zu verschicken, außer du willst, dass dir nur eine Person helfen kann. Dann bist du aber in einem Forum am falschen Ort.

Nachtrag:
item: Würdest du dein SQL gemäss meinem Tutorial testen, würdest du selber mindestens 2 Fehler entdecken.
Du musst deinen String bei einem Zeilenumbruch übrigens nicht mit einem Punkt verknüpfen
PHP:
//Beispiel
$sql = "SELECT
    Feld1
FROM
    Tabelle";

item: ist Online ein VARCHAR-Feld? Wenn es ein numerisches ist, solltes du in deinem WHERE-Teil die ' um den Wert streichen
 
Zuletzt bearbeitet:
Sooo tombe ich habe nochmal alles gepostet...
Vielleicht kannst du mir dann weiterhelfen. Wenn ich das am laufen habe dann werde ich den Code hier nochmal zu Schluß posten wenn er funktioniert....

Hast du meinen Beitrag um 11.26 Uhr bemerkt. Habe ihn geschrieben bevor du reagiert hast!
Mit dem was da geschrieben steht sollte eigentlich alles funktionieren.

So wie ich es verstehe gibt es eine Zeile mit einem Feld und darin steht 0 oder 1
Demzufolge wäre dein Ansatz, tombe, falsch da er bei off (0) gar nie in die while-Schleife geht und somit auch nicht in den else-Teil deines ifs.

Entweder ein WHERE und dann prüfen ob überhaupt etwas aus der DB zurückkommt, oder ohne WHERE aber dafür den Feldinhalt auswerten. Aber nicht beides

@yaslaw: So habe ich es doch in meinem obigen Beispiel auch geschrieben.
 
@tombe

Wenn ich das so schreibe wie du um 11.26 Uhr geschrieben hast dann zeigt er mir nur eine leere weiße Seite und er verlinkt nicht bzw. geht nicht auf Google.de oder Web.de oder so.
 
Da du kategorisch meine Hinweise ignorierst, KeyT0ast3r, und keine Anstalten zeigst selber etwas zu deiner Problemlösung beizutragen, wünsche ich dir noch viel Glück und tombe sehr, sehr viel Geduld
 
@yaslaw
Dein Tutorial bringt mich leider auch nicht weiter.
Habe es mir ja auch schon durchgelesen.

Nur ich habe schon längere Zeit nichts mehr mit PHP und Datenbanken gemacht.
Wäre schön wenn du mir evtl. den Code posten könntest wie es klappen könnte.

Tut mir ja schon selber Leid hier so oft zu fragen aber ich komme leider nicht weiter.
 
Ich kann dir im Grunde keinen Code schicken der funktioniert, da ich es nicht wirklich nachstellen kann. Dazu müsste ich die gleiche Datenbank/Tabelle anlegen und mit Daten füllen.

Lass dir mal bitte mit

PHP:
echo $sql;

anzeigen wie die Abfrage denn jetzt bei dir aussieht und stell das hier rein.

Ich muss zugeben das ich yaslaw irgendwie schon Recht gebe. Die Fehler (z.B. die Schreibweise der SQL-Abfrage) die dir aufgezeigt wurden hast du bisher ignoriert und wunderst dich warum es nicht geht.
Wir helfen dir gerne, aber du musst die Hilfe auch annehmen.

So um zu zeigen das der von mir eingestellte Code das gewünschte Ergebnis liefert, habe ich ich mal auf eine Datenbank/Tabelle angepasst die ich hier habe:

PHP:
<?php
define (DB_HOST, "localhost");
define (DB_USER, "root");
define (DB_PASS, "");
define (DB_NAME, "ausstellung");

mysql_connect ( DB_HOST, DB_USER, DB_PASS )
    or die ( 'Konnte keine Verbindung hergestellt werden: ' . mysql_error ()) ;

mysql_select_db ( DB_NAME )
    or die ( 'Kann Datenbank "' . DB_NAME . '" nicht ausw&auml;hlen: ' . mysql_error ());

$sql = "SELECT besitzer_plz FROM meldung";
$result = mysql_query($sql);

while ($row = mysql_fetch_object($result))
{
    if ($row->besitzer_plz == "4720") {
        echo '<a href="www.google.de" target="_blank">' .$row->besitzer_plz .'</a><br />';
    } else {
        echo '<a href="www.test.de" target="_blank">Test2</a><br />';
    }
}
?>

Die Zeilen die zu deinem Code anders sind siehst du ja selbst. Wenn ich dieses Skript ausführe, dann erhalte ich das Bild im Anhang. Es funktioniert also!
 

Anhänge

  • online.jpg
    online.jpg
    21,9 KB · Aufrufe: 16
Zuletzt bearbeitet:
Ok funktioniert.

Was muss ich dann abändern damit er sofort auf die Seite weiterleitet ohne link zu klicken ?

Danke schonmal.

Gruß Micha
 
Zurück