• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem bei der If schleife

Acer90

Mitglied
Hallo ich möchte aus Werten die ich aus einer Mysql Tabelle beziehe und diese je nach ausgegebener Zahl in einen Text, oder Wort umzuwandeln( 1 zu Job eins). Die Werte kann ich nicht ändern!

Hier mein Skript:
PHP:
<?php
require_once ('konfiguration.php');
$db_link = mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);

// Nutzen von Datenbank - Name ist hinterlegt in
// Konstante MYSQL_DATENBANK
$db_sel = mysql_select_db( MYSQL_DATENBANK )
   or die("Auswahl der Datenbank fehlgeschlagen");

$sql = "SELECT * FROM spieler WHERE Online = 1 ";
$sql2 = "SELECT * FROM spieler WHERE Dienst";

if($sql2 == "1")
  {
    $Job1 = "Job1"
  }
  elseif($sql2 == "2")
  {
    $Job2 = "Job2"
  }

$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysql_error());
}

  echo '<table cellpadding="1" cellspacing="3" border="1">';
  echo "<tr>";
  echo "<th>Online</th>";
  echo "<th>Name</th>";
  echo "<th>AFK</th>";
  echo "<th>Skin</th>";
  echo "<th>Dienst</th>";
  echo "</tr>";
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))

{

echo "<tr>";
echo "<td>". $zeile['Online'] . "</td>";
echo "<td>". $zeile['Name'] . "</td>";
echo "<td>". $zeile['AFK'] . "</td>";
echo "<td>". $zeile['Skin'] . "</td>";
echo "<td>". $Job1, $Job2 . "</td>";
echo "</tr>";
}
echo "</table>";

mysql_free_result( $db_erg );
?>

Nun bekomme ich aber folgende meldung: Notice: Undefined variable: Job1 in C:\wamp\www\realoa\index.php on line 45
Notice: Undefined variable: Job2 in C:\wamp\www\realoa\index.php on line 45

Danke schon mal voraus für eure Hilfe.
 
Werbung:
Dieser Teil des Quellcodes ergibt keinen Sinn:

PHP:
$sql2 = "SELECT * FROM spieler WHERE Dienst"; 

if($sql2 == "1") 
  { 
    $Job1 = "Job1" 
  } 
  elseif($sql2 == "2") 
  { 
    $Job2 = "Job2" 
  }

Du definierst als erstes die Variable $sql2 mit einem festen Wert und
vergleichst $sql2 dann in einer if-Kontrollstruktur. Wozu?
Der Wert ist an dieser Stelle doch immer gleich!
Darum wird an dieser Stelle auch niemals eine der Variablen $Job1 oder $Job2 definiert werden.
Und genau das bedeutet auch deine Fehlermeldung: Die in Zeile 45 auszugebende Variable ist nicht definiert.

Zusatz:

Du hast übrigens auch vergessen, die beiden Zeilen, in denen du $Job1 oder $Job2 definieren willst,
mit einem Semikolon abzuschließen.
 
Werbung:
Du definierst als erstes die Variable $sql2 mit einem festen Wert und
vergleichst $sql2 dann in einer if-Kontrollstruktur. Wozu?
Der Wert ist an dieser Stelle doch immer gleich!
Darum wird an dieser Stelle auch niemals eine der Variablen $Job1 oder $Job2 definiert werden.
Und genau das bedeutet auch deine Fehlermeldung: Die in Zeile 45 auszugebende Variable ist nicht definiert.

Zusatz:

Du hast übrigens auch vergessen, die beiden Zeilen, in denen du $Job1 oder $Job2 definieren willst,
mit einem Semikolon abzuschließen.

Nein der Wert wird von einen Programm festgelegt, und wird ständig in der Mysql geändert.

Immer wieder einen Blick wert: if-schleife.de.

Danke für den link schau ich mir gleich an.

Edit: Es gibt keine if-Schleifen, sondern nur if-Abfragen! xD

Also wenn in der Mysql steht 1 soll Job1 angezeigt werden.
wenn 0 = nicht im dienst
wenn 2 = Job2
usw
 
Zuletzt bearbeitet:
Basti93 hat das Problem wunderbar beschrieben:

PHP:
$sql2 = "SELECT * FROM spieler WHERE Dienst"; 

if($sql2 == "1") 
  { 
    $Job1 = "Job1" 
  } 
  elseif($sql2 == "2") 
  { 
    $Job2 = "Job2" 
  }

Hier wird überhaupt keine MySQL-Abfrage durchgeführt. Das sollte aber wirklich logisch sein.
 
Ja das habe ich schon verstanden aber wie könnte ich so was am besten umsetzten wenn es nicht damit geht wäre jetzt meine frage?
 
Werbung:
Indem du eine passende MySQL-Abfrage durchführst, um an die gewünschten Daten zu kommen?

Ich verstehe die Frage nicht.
 
Wie eine passende mysql abfrage, ich selectriere doch die mysql tabelle und will dann über eine if abfrage aus den wert ein wort machen?
Bin leider mysql newbie.
 
Wie eine passende mysql abfrage, ich selectriere doch die mysql tabelle und will dann über eine if abfrage aus den wert ein wort machen?

nein was du hier machst:
$sql = "SELECT * FROM spieler WHERE Online = 1 ";
$sql2 = "SELECT * FROM spieler WHERE Dienst";

sind nur die sql-statements.
diese muessen noch ausgefuehrt werden mittels query.
ich empfehle:
Quakenet/#php Tutorial - de - MySQL / Zugriff über PHP
Kapitel 32 ist speziel ueber mysql und php :)
 
Werbung:
Jo habs grade auch nachgelsensen sieht jetzt so bei mir aus

PHP:
$sql = "SELECT * FROM spieler WHERE Online = 1 ";
$sql2 = "SELECT Dienst FROM spieler";
$ergebnis = mysql_query($sql2);

if($ergebnis == "1")
  {
    $Job1 = "Job1";
  }
if($ergebnis == "2")
  {
    $Job2 = "Job2";
  }

bei $sql2 = "SELECT Dienst FROM spieler"; hatte ich auch einen fehler.

Bekomme aber nun immernoch eine fehlermeldung

Edit: Habe mal nen echo eingebaut: also echo "$ergebnis"; eigebaut ergebnis ist Resource id #5

Hier mal der link: http://rootserver-01.death-servers.com/realoa/
 
Zuletzt bearbeitet:
Vielleicht erläuterst du mal in Text, was du da vorhast, also was das Script letztlich ausgeben soll.
 
Jetzt hast du das SQL-Statement an die Datenbank geschickt.
Was jetzt noch fehlt ist das "auffangen" der Ergebnisse.
Ich nutzte MySQLi, aber mysql_fetch_array() sollte hier auch die richtige Funktion dafür sein.
 
Werbung:
1. Habe jetzt mal umgebaut auf mysql
bekomme jetzt folgende Fehlermeldung:
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\wamp\www\realoa\index.php on line 38

Hier mein Skript:

PHP:
<?php
require_once ('konfiguration.php');
$db_link = mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);

// Nutzen von Datenbank - Name ist hinterlegt in
// Konstante MYSQL_DATENBANK
$db_sel = mysql_select_db( MYSQL_DATENBANK )
   or die("Auswahl der Datenbank fehlgeschlagen");

$sql = "SELECT * FROM spieler WHERE Online = 1 ";
$ergebnis = mysql_query("SELECT Dienst FROM spieler");
echo $ergebnis;


if($ergebnis == "0")
  {
    $Job1 = "Job1";
  }
if($ergebnis == "2")
  {
    $Job1 = "Job2";
  }
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysql_error());
}

  echo '<table cellpadding="1" cellspacing="3" border="1">';
  echo "<tr>";
  echo "<th>Online</th>";
  echo "<th>Name</th>";
  echo "<th>AFK</th>";
  echo "<th>Skin</th>";
  echo "<th>Dienst</th>";
  echo "</tr>";
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
while ($zeile2 = mysql_fetch_array( $Job1))

{

echo "<tr>";
echo "<td>". $zeile['Online'] . "</td>";
echo "<td>". $zeile['Name'] . "</td>";
echo "<td>". $zeile['AFK'] . "</td>";
echo "<td>". $zeile['Skin'] . "</td>";
echo "<td>". $zeile2 ."</td>";
echo "</tr>";
}
echo "</table>";

mysql_free_result( $db_erg );
?>

Was soll es können: Wenn bei uns auf den Server jemand Joint soll automatisch dieser in der Mysql Tabelle angezeigt werden, dafür endert sich dann im mysql auch durch den server Online von 0 auf 1

Dieses befindet sich hier im meinen skript:
PHP:
$sql = "SELECT * FROM spieler WHERE Online = 1 ";

als 2 soll angezeigt werden ob dieser sich Grade in einen Job befindet und welcher Job dieses ist, also wenn er nicht im dienst ist ändert der Server die Zahl in der Tabelle auf 0, wenn er jetzt in einen Job geht wird je nach Job die Id geändert auf 1, 2, 3, 4, ... diese Zahlen will ich dann in Buchstaben ausgeben.

Sonst würde es so wie hier aus sehen: http://213.239.213.47/realoa/test.php
 
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\wamp\www\realoa\index.php on line 38
wenn ich richtig gezaehlt habe sollte dies Zeile 38 sein:
while ($zeile2 = mysql_fetch_array( $Job1))

$Job1 passt dort nicht rein. $Job1 ist eine normale Variable und kein mysql objekt dem ein query zugeordnet wurde wie hier:
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
$db_erg = mysql_query( $sql );
$zeile enthaelt alle selectierten ergebnisse, des sql-statements.
$Job1 wird letzten Endes entweder den Wert 1 oder 0 annehmen.

in $zeile sollten sich nach derer erklaerung alles aus der tabelle befinden, bei dem online auf 1 steht.
was erhaelst du fuer das
als ausgabe?
 
Was kommt denn etwa hierbei raus?

PHP:
<?php

error_reporting(E_ALL | E_STRICT);

require_once 'konfiguration.php';

mysql_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
mysql_select_db(MYSQL_DATENBANK)
    or die("Auswahl der Datenbank fehlgeschlagen");

$res = mysql_query("SELECT `Online`, `Name`, `AFK`, `Skin`, `Dienst` FROM `spieler`");

if (!$res) {
    die(mysql_error());
}

?>

<table cellpadding="1" cellspacing="3" border="1">
  <tr>
      <th>Online</th>
      <th>Name</th>
      <th>AFK</th>
      <th>Skin</th>
      <th>Dienst</th>
  </tr>

<?php while ($row = mysql_fetch_assoc($res)): ?>
    <tr>
        <td><?php echo htmlspecialchars($row['Online']); ?></td>
        <td><?php echo htmlspecialchars($row['Name']); ?></td>
        <td><?php echo htmlspecialchars($row['AFK']); ?></td>
        <td><?php echo htmlspecialchars($row['Skin']); ?></td>
        <td><?php echo htmlspecialchars($row['Dienst']); ?></td>
    </tr>
<?php endwhile; ?>

</table>
 
Werbung:
Was kommt denn etwa hierbei raus?

PHP:
<?php

error_reporting(E_ALL | E_STRICT);

require_once 'konfiguration.php';

mysql_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
mysql_select_db(MYSQL_DATENBANK)
    or die("Auswahl der Datenbank fehlgeschlagen");

$res = mysql_query("SELECT `Online`, `Name`, `AFK`, `Skin`, `Dienst` FROM `spieler`");

if (!$res) {
    die(mysql_error());
}

?>

<table cellpadding="1" cellspacing="3" border="1">
  <tr>
      <th>Online</th>
      <th>Name</th>
      <th>AFK</th>
      <th>Skin</th>
      <th>Dienst</th>
  </tr>

<?php while ($row = mysql_fetch_assoc($res)): ?>
    <tr>
        <td><?php echo htmlspecialchars($row['Online']); ?></td>
        <td><?php echo htmlspecialchars($row['Name']); ?></td>
        <td><?php echo htmlspecialchars($row['AFK']); ?></td>
        <td><?php echo htmlspecialchars($row['Skin']); ?></td>
        <td><?php echo htmlspecialchars($row['Dienst']); ?></td>
    </tr>
<?php endwhile; ?>

</table>

Habe mal für testzwecken mal gemacht.
Schaue Hier: http://213.239.213.47/realoa/test2.php

Leider zeigt er nun alle an: und bei Dienst steht jetzt wieder nur die zahl da, da sollte jetzt aber der Name dastehen.


PHP:
<?php
require_once ('konfiguration.php');
$db_link = mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);

// Nutzen von Datenbank - Name ist hinterlegt in
// Konstante MYSQL_DATENBANK
$db_sel = mysql_select_db( MYSQL_DATENBANK )
   or die("Auswahl der Datenbank fehlgeschlagen");
//Mysql Abfrage beginn
$sql = "SELECT * FROM spieler WHERE Online = 1 ";
$sql2 = mysql_query("SELECT Dienst FROM spieler");
//Mysql Abfrage ende


$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysql_error());
}

  echo '<table cellpadding="1" cellspacing="3" border="1">';
  echo "<tr>";
  echo "<th>Online</th>";
  echo "<th>Name</th>";
  echo "<th>AFK</th>";
  echo "<th>Skin</th>";
  echo "<th>Dienst</th>";
  echo "</tr>";
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
while ($zeile2 = mysql_fetch_array( $sql2))

if($zeile2 == "0")
  {
    $Job1 = "Job1";
    echo "test";
  }
if($zeile2 == "5")
  {
    $Job1 = "Job2";
  }
echo $Job1;

{

echo "<tr>";
echo "<td>". $zeile['Online'] . "</td>";
echo "<td>". $zeile['Name'] . "</td>";
echo "<td>". $zeile['AFK'] . "</td>";
echo "<td>". $zeile['Skin'] . "</td>";
echo "<td>". $zeile2 ."</td>";
echo "</tr>";
}
echo "</table>";

mysql_free_result( $db_erg );
?>
So nochmal umgebaut
 
Ich möchte dich bitten, das ein oder andere Tutorial (http://tut.php-quake.net/de/) zum Thema zu machen, denn deine Copy&Paste-Mentalität ohne jedwedes Anzeichen von Lernwillen oder gar -verständnis ist reichlich ermüdend.

PHP:
<?php

error_reporting(E_ALL | E_STRICT);

require_once 'konfiguration.php';

function numberToString($n)
{
    switch ($n) {
        case 1: return 'eins'; break;
        case 2: return 'zwei'; break;
        case 3: return 'drei'; break;
        case 4: return 'vier'; break;
        case 5: return 'fünf'; break;
        case 6: return 'sechs'; break;
        case 7: return 'sieben'; break;
        // usw.
        default: return $n; break;
    }
}

mysql_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
mysql_select_db(MYSQL_DATENBANK)
    or die("Auswahl der Datenbank fehlgeschlagen");

$res = mysql_query("SELECT `Online`, `Name`, `AFK`, `Skin`, `Dienst` FROM `spieler` WHERE `Dienst` > 0");

if (!$res) {
    die(mysql_error());
}

?>

<table cellpadding="1" cellspacing="3" border="1">
  <tr>
      <th>Online</th>
      <th>Name</th>
      <th>AFK</th>
      <th>Skin</th>
      <th>Dienst</th>
  </tr>

<?php while ($row = mysql_fetch_assoc($res)): ?>
    <tr>
        <td><?php echo htmlspecialchars($row['Online']); ?></td>
        <td><?php echo htmlspecialchars($row['Name']); ?></td>
        <td><?php echo htmlspecialchars($row['AFK']); ?></td>
        <td><?php echo htmlspecialchars($row['Skin']); ?></td>
        <td><?php echo htmlspecialchars(numberToString($row['Dienst'])); ?></td>
    </tr>
<?php endwhile; ?>

</table>
 
Ich danke hier,

PHP:
function numberToString($n)

Sowas hatte ich gesucht.
danke einfach für deine mühe
 
Werbung:
Zurück
Oben