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

KeyT0ast3r

Grünschnabel
Hallihallo

Ich habe eine Datenbank (Webcamstatus)
Eine Tabelle (Status)
und eine Spalte die (Online) heißt.

Dort habe ich einen Eintrag gemacht mit einer 1.

Jetzt möchte ich über ein Script überprüfen lassen wenn dort eine 1 eingetragen ist dann soll er auf einen Link weiterleiten und wenn dort eine 0 drinsteht dann soll er auf einen anderen Link weiterleiten.

Habe folgedes Script schon erstellt nur leider weiß ich nicht genau wo der Fehler liegt oder was ich verändern muss das es geht.

Hier mein Script

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 ());

$result = mysql_query ("SELECT * FROM Status");
if ($row = mysql_fetch_object($result))  
{	$row->Online;

$result=="1"

echo '<a href="www.google.de" target="_blank">Test</a>'
}
else
{
echo '<a href="www.test.de" target="_blank">Test2</a>'
}
?>

Glaube bis zum SELECT geht alles nur dann überprüft er nicht.
Wie muss ich das schreiben das das richtig durchläuft.

Danke schonmal.
Gruß Micha
 
Dein Seelct fragt einfach alles aus der Tabelle ab.
$result ist eine Ressource zum SQL. Warum überschreibst du diese mit 1?
$row->Online macht grad mal gar nix.
PHP:
$result = mysql_query ("SELECT * FROM Status");
$row = mysql_fetch_object($result);  
if($row->Online == 1){
    //TODO 1 sthet in der einzigen Zeile im Feld Online
} else {
    //TODO etwas anderes steht im Feld Online
}
 
Sorry ich verstehe das nicht so ganz.

Wie muss das denn ungefähr aussehen damit das geht oder damit ich weiterkomme?
Könntest mir das mal kurz so abändern das es gehen könnte?

Danke schonmal...
Gruß Micha
 
Die Kurzfassung:

PHP:
$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 jetzt folgendes mal probiert:

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 ());

$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 />';
    }
}  
?>

Dort gibt er mir einen Fehler aus:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /xxxxx/xxxxx/xxxxx/index.php on line 11
 
Und was soll $sql sein?
Solltest du nicht zuerst $sql mit dem SELECT-Statement abfüllen?

Einfach bliond kopieren geht selten gut. Versuch zu verstehen was wir dir vorschlagen. Frag wenn du es nicht verstehst.

Und zum Debuggen kann ich dir nur das folgende Tutorial empfehlen
PHP MySQL Debug Queries
 
Und was soll $sql sein?
Solltest du nicht zuerst $sql mit dem SELECT-Statement abfüllen?

Einfach bliond kopieren geht selten gut. Versuch zu verstehen was wir dir vorschlagen. Frag wenn du es nicht verstehst.

Das stimmt mal wieder was yaslaw da schreibt. Deshalb habe ich es auch "Kurzfassung" genannt. Dachte eigentlich das dir auffällt das da was fehlt.
 
wenn ich das so schreibe kommt auch nen Fehler

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 />';
    }
}  
?>

nur warum?
Wie kann ich den den beheben?

Tut mir Leid das ich so oft fragen muss aber ich habe schon Ewigkeiten nichts mit PHP und Datenbanken gemacht, Sorry.

Gruß Micha
 
PHP:
$sql = "SELECT ". 
"Online". 
"FROM ". 
"Status". 
"WHERE ". 
"(Online like '".$_REQUEST ["on"]."')";

Da muss ein Fehler kommen weil zwischen "Online" und "FROM" und zwischen "Status" und "WHERE" kein Leerzeichen drin ist. Ob die Variable $_REQUEST einen gültigen Wert enthält kann ich nicht sagen, bezweifle es aber. Abgesehen davon finde ich die Schreibweise grausam. Lass dir mal den Inhalt von $sql am Bildschirm anzeigen dann wirst du sehen was alles falsch ist.

Wenn das Feld Online den Wert 0 oder 1 haben kann ist die Prüfung mit LIKE auch nicht passend!

Noch was. Die Variable $_REQUEST ist meiner Meinung nach in der Abfrage auch falsche geschrieben, sie enthält ein Leerzeichen: $_REQUEST ["on"]
 
Zuletzt bearbeitet:
Die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.

PHP MySQL Debug Queries

Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.
 
Zurück