Problem in der if-Schleife

Queeni
Hey ihr smile
Ich tüftle jetzt schon seit über 48 Stunden an einer unglaublich verschachtelten if-else-while-Schleifen-Konstruktion.
Sinn ist, die angebotenen Jobs aus einer Tabelle auszulesen und auszugeben.
Ist keiner eingeloggt, wird unter der Stelle nichts angezeigt.
Ist jemand eingeloggt, der keinen Job hat (jobid=0), wird die Möglichkeit angeboten dein angezeigten Job anzunehmen.
Ist jemand eingeloggt, der einen Job hat (jobid!=0), wird auf das Kontrollzentrum verwiesen, wo man den aktuellen Job kündigen kann.

Dummerweise, wenn jemand eingeloggt ist, der keinen Job hat, wird nur beim ersten Jobangebot der Button zum Jobannehmen angezeigt, bei den weiteren leider nicht. Siehe hier.

So langsam verliere ich den Überblick und die Nerven, vielleicht könnt ihr mir helfen. Ich hoffe die Kommentare erklären alles Augenzwinkern

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:

<?php
include("db.php");
include('navi.php');

$Ergebnis mysql_query("SELECT * FROM `jobs` ");
$nick $_SESSION['Nickname'];
$Session mysql_query("SELECT * FROM `Mitglieder` WHERE Nickname = '$nick'");


//Gibt es Jobs?
   if (@mysql_num_rows($Ergebnis) == 0) {
    echo "Es gibt zur Zeit keine Jobs.";
    }
    
//Wenn ja:
    else {
    
    //Wenn niemand eingeloggt ist:
     if(!isset($_SESSION['Nickname'])) {
     
     //Alle eingetragenen Jobs anzeigen
        while($Data mysql_fetch_array($Ergebnis)) {
        $Angestellte mysql_query("SELECT * FROM `Mitglieder` WHERE jobid = '$Data[id]'");
        $Zahl = @mysql_num_rows($Angestellte);

        echo "
        <p><table align='center' width='600px'>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Bezeichnung:</B></TD>
        <TD VALIGN='TOP'>$Data[bezeichnung]</TD>
        </TR>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Unternehmen:</B></TD>
        <TD VALIGN='TOP'>$Data[unternehmen]</TD>
        </TR>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Beschreibung:</B></TD>
        <TD valign='top'>$Data[beschreibung]</TD>
        </TR>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Voraussetzungen:</B></TD>
        <TD valign='top'>$Data[voraussetzungen]</TD>
        </TR>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Arbeitszeit:</B></TD>
        <TD valign='top'>$Data[arbeitszeit]</TD>
        </TR>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Bezahlung:</B></TD>
        <TD valign='top'>$Data[bezahlung] € monatlich</TD>
        </TR>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Stellenangebot:</B></TD>
        <TD valign='top'>$Zahl / $Data[stellenangebot] vergeben<br>an: ";
        
        //Alle Angestellten auflisten
        while($Data2 mysql_fetch_array($Angestellte)) {
        echo "$Data2[Nickname]<br>";
        }
        echo "
        </TD>
        </TR>
        </TABLE></p>";
     }
     }
     
     //Wenn jemand eingeloggt ist
     else {
     
     //Alle eingetragenen Jobs ausgeben
        while($Data mysql_fetch_array($Ergebnis)) {
        $Angestellte mysql_query("SELECT * FROM `Mitglieder` WHERE jobid = '$Data[id]'");
        $Zahl = @mysql_num_rows($Angestellte);

        echo "
        <p><table align='center' width='600px'>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Bezeichnung:</B></TD>
        <TD VALIGN='TOP'>$Data[bezeichnung]</TD>
        </TR>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Unternehmen:</B></TD>
        <TD VALIGN='TOP'>$Data[unternehmen]</TD>
        </TR>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Beschreibung:</B></TD>
        <TD valign='top'>$Data[beschreibung]</TD>
        </TR>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Voraussetzungen:</B></TD>
        <TD valign='top'>$Data[voraussetzungen]</TD>
        </TR>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Arbeitszeit:</B></TD>
        <TD valign='top'>$Data[arbeitszeit]</TD>
        </TR>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Bezahlung:</B></TD>
        <TD valign='top'>$Data[bezahlung] € monatlich</TD>
        </TR>
        <TR>
        <TD ALIGN='RIGHT' VALIGN='TOP'><B>Stellenangebot:</B></TD>
        <TD valign='top'>$Zahl / $Data[stellenangebot] vergeben<br>an: ";
        
        //Alle Angestellten ausgeben
        while($Data2 mysql_fetch_array($Angestellte)) {
        echo "$Data2[Nickname]<br>";
        }
        echo "
        </TD>
        </TR>";
        
        //Wenn noch Stellen frei sind:
        if($Zahl<$Data[stellenangebot])
        { 
        echo "<tr><td></td><td>";
        
        //Wenn Session nichts liefert
        if(@mysql_num_rows($Session) == 0) {
        echo "Fehler.</td></tr>";
        }
    
        else {
        //Die Mitgliederspalte des Eingeloggten aussuchen:
        while($Data3 mysql_fetch_array($Session)) {
        
        //Wenn der Eingeloggte noch keinen Job hat:
        if($Data3['jobid'] == 0)
        {
        echo "<input type="button" onclick="window.location.href '/job_annehmen.php?id=$Data[id]';" value="$Data[bezeichnungwerden">";        
        }
        //Wenn der Eingeloggte schon einen Job hat:
        else {
        echo "Du hast schon einen Job. 
        Um einen neuen anzunehmen, kündige deinen alten im <a href='kontrollzentrum.php'>Kontrollzentrum</a>."; 
        }
        
        }
        echo "</td></tr>";        
    
        }
        
        }
        //Wenn keine Stellen frei sind:
        else {
        echo "<tr><td></td><td>Alle Stellen sind besetzt.</td></tr>";
        }
        
        echo "
        </TABLE></p><br><br>";
        }
        }
    

}

?>
<?php
include('footer.php'); ?>





Wie gesagt, das Problem ist unter "Wenn jemand eingeloggt ist" und "Wenn der eingeloggte noch keinen Job hat".
Liebe Grüße und vielen Dank an alle dies sich mal anschauen smile
Queeni
*schieb*
Konnte immernoch nicht behoben werden unglücklich
Leila
Die Variablen hießen überall $Data[xy] nur in der if-Abfrage heißt es $Data['xy'] Augenzwinkern
WuLana
setz alle indizes mal unter " " ;-)
bei der session abfrage frägst du auch mit dem "richtigen" index ab da das zeichenketten sind und die unter hochkomma stehen müssen, das gleiche gilt für Arrays (Session isn assoziatives Array, genau wie dein Array auch)

PS: das is der nachteil an php, das es typen unspezifisch ist und einen gern an die wand laufen lässt damit großes Grinsen
Queeni
²Leila: Jetzt wo dus sagst großes Grinsen da war ich wieder sehr ordentlich...

²oldgirl: Nochmal für php-unerfahrene, also alle $Data[xy] zu $Data["xy"]? Also bzw dann in echos eben \", oder?
WuLana
bei zahlen:
$data[123];
zeichenketten oder einzelne Zeichen:
$data[' ']; oder $data[" "];

das "\" (backslash) wird eig nur dann gebraucht wenn man das zeichen "deaktivieren" möchte an der stelle ansonsten ganz normal

wenn du mehr über datentypen wissen willst kann ichs dir gern per pn erklärn das wird sonst bissl langwierig und ist teilweise in php nicht notwendig aber vorteilhaft großes Grinsen
Queeni
Danke für das Angebot smile Ich bin jetzt für 10 Tage weg, kann ich dir danach ne PN schreiben und auf dein Angebot zurück kommen? Dann probier ich auch aus ob das den Fehler behebt Augenzwinkern
WuLana
ich werd in 10 tagen schonn icht hier verschwinden großes Grinsen
also für Fragen bin ich immer da