Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Problem mit while-Schleife





Frage

Hallo, ich habe ein Script das es ermöglicht Aufgaben zu erstellen. ich möchte beim anzeigen der Aufgaben die möglichkeit die Aufgabe zu löschen und zu bearbeiten mit einbauen. Ich habe eine while-Schleife um die Aufgaben anzeigen zu lassen. Zudem habe ich eine Variable mit dem Inhalt zum bearbeiten und löschen der Aufgabe und dort ist das Problem. Ich habe die Variable $_SESSION[´verfasser´] welche die ID des angemeldeten Benutzers ist. In der Datenbank wird sie gespeichert. Wenn ich nun sage, dass er die extra Optionen (löschen und bearbeiten) nur anzeigen soll wenn $_SESSION[´verfasser´] == $verfasser ist dann funktioniert das nur bei der ersten Aufgabe bei allen anderen Aufgaben darunter werden die extra Optionen mitangezeigt auch wenn der Verfasser gar nicht mit $_SESSION[´Verfasser´] übereinstimmt. Hat jemand vielleicht eine Idee warum das so is?

Antwort 1 von disco

moin

Zitat:
Hat jemand vielleicht eine Idee warum das so is?


hab ne menge ideen, aber warum rumraten?
zeig doch einfach mal debn relevanten quellcode.

g,
disco

Antwort 2 von flobo

hi,

Als erstes habe ich eine while-Schleife erstellt, die mir den Verfasser ausgibt:

$_SESSION[´verfasser´] //Benutzer-ID die beim einloggen gespeichert wird

$verfasser //In der Tabelle für die Aufgaben gespeichert

hier die while-Schleife:

$aufgabenauswahl = mysql_query("SELECT * FROM aufgaben WHERE empfaenger = ´$b_iderg´");

while ($spalte = mysql_fetch_array($aufgabenauswahl)) {
$verfasser = $spalte[´verfasser´];
}

und die Zusatzoptionen:

if ($_SESSION[´verfasser´] == $verfasser) {
$aktion = ´<table cellpadding="0" cellspacing="0" style="width:1003px;">
<tr>
<td style="width:150px;">
<p class="t1">

</p>
</td>
<td class="td4" colspan="3" style="width:703px; border:1px solid #000000; border-top:0px none; background-color:#C0C0C0;">
<p class="t1">
Aktion: <a href="http://213.239.200.195/organizer/new/organizer.php?b_id=´.$b_iderg.´&site=aufgabeneinzelnedit&a_id=´.$a_id.´"> bearbeiten <a/> |
<a href="http://213.239.200.195/organizer/new/organizer.php?b_id=´.$b_iderg.´&site=aufgaben&anzeigen=einzeln&loeschen=true&a_id=´.$a_id.´"> löschen <a/>
</p>
</td>
<td style="width:149px; border-right:1px solid #000000;">
<p class="t1">

</p>
</td>
</tr>
</table>´;
}

Antwort 3 von disco

ist deine if abfrage überhaupt mit in der while schleife?
kann man strings denn überhaupt mit == vergleichen? bin etwas raus. aber ich hab immer strcmp(str1,str2) genommen.

Antwort 4 von flobo

Die if-Abfrage ist in der Schleife und soweit ich weiss kann man Strings mit == vergleichen.

Antwort 5 von disco

hab das == gerade mit 4.3.9 ausprobiert. und es scheint zu gehen.
wenn das die if abfrage tatsächlich richtig mit in der while steht, sehe ich keine fehler.
haste dir auch mal jeden verfasser mit anzeigen lassen, um sicher zu gehen, dass dort wirklich immer das richtige drin steht?

Antwort 6 von TombDevil

Hi flobo,

ich denke das liegt daran dass Du Dir in jeder Schleife den Verfasser überschreibst und deshalb trifft die IF-Abfrage immer zu.

$verfasser und $_SESSION[´verfasser´] sind nämlich hier die gleichen Variablen. Mit $_SESSION sagst Du nur dass die Variable $verfasser eine global gültige Session-Variable sein sein. Du könntest sie ebenso ansprechen mit $_GLOBALS[´verfasser´]...

Also, langer Reder kurzer Sinn:
Benenne die Variable $verfasser um in $check_verfasser o.ä., dann sollte es klappen.

if($check_verfasser == $_SESSION[´verfasser´])
...

Ciao
TombDevil

Antwort 7 von flobo

hi,
@disco

ja ich lasse mir die beiden variablen noch bei jeder aufgabe ausgeben um zu kontrollieren ob es die richtigen inhalte sind.

@TombDevil
ich denke nicht, dass die beiden Variablen die gleichen sind.

$_SESSION[´verfasser´] wird erstellt wenn man sich in dem Programm angemeldet hat und beinhaltet die Benutzer-ID.

$verfasser ist doch bei jeder Aufgabe anders. Hängt eben davon ab wer die Aufgabe erstellt hat und die Variable wird ja nicht automatisch erstellt sondern sie wird ja per while-Schleife aus der DB abgerufen.

Trotzdem danke für deinen Rat.

Antwort 8 von flobo

hi,
@disco

ja ich lasse mir die beiden variablen noch bei jeder aufgabe ausgeben um zu kontrollieren ob es die richtigen inhalte sind.
Ich sehe auch keinen Fehler deswegen bin ich ja so verwirrt.

@TombDevil
ich denke nicht, dass die beiden Variablen die gleichen sind.

$_SESSION[´verfasser´] wird erstellt wenn man sich in dem Programm angemeldet hat und beinhaltet die Benutzer-ID.

$verfasser ist doch bei jeder Aufgabe anders. Hängt eben davon ab wer die Aufgabe erstellt hat und die Variable wird ja nicht automatisch erstellt sondern sie wird ja per while-Schleife aus der DB abgerufen.

Habs getestet und es gab keine Veränderung
Trotzdem danke für deinen Tip

Antwort 9 von flobo

Hi Leute,

habs hinbekommen undzwar musste ich die Variable $aktion wieder zurücksetzen.
Der Wert wurde gespeichert und deshalb wurden bei allen Aufgaben die Zusatzfunktionen mit angezeigt.

Lösung:
if ($verfasser == $_SESSION[´verfasser´]) {
$aktion = ...(tabelle)
}
else{
$aktion = ´´;
}

Nochma danke für eure Bemühungen

Das wär damit geklärt ;)

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: