YourWBB


yourWBB » yourWBB Misc * » Das Proggen » MySQL und PHP » Variable ändert sich einfach so » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag 6.270 Views | | Thema zu Favoriten hinzufügen

Neues Thema erstellen Antwort erstellen

Zum Ende der Seite springen Variable ändert sich einfach so
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
schnofeli
Mitglied


Dabei seit: 01.11.09
Beiträge: 5
Fähigkeiten: WBB Lite 1 Anfänger
Herkunft: schweiz
Forenversion: 2.3

 Variable ändert sich einfach so Antworten Zitieren Editieren Melden       UP

Ich brauche einmal eine Hilfe von einem Profi für das wbb light 1.0.2 in der usercp.php

im Abschnitt else
php:
1:
2:
3:
4:
5:
6:
7:
if($action=="options_change") {
 if(isset($_POST['send'])) {....
}else {
...
  $r_raubueberfall $wbbuserdata['raubueberfall'];
  $r_raubpn $wbbuserdata['raubueberfallpn'];
...}

werden die hinterlegten Werte ausgelesen die im Profil dann angezeigt werden.

Jetzt habe ich folgenden Abschnitt:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
if ($userself == 1) {
         if(isset($r_raubueberfall)) $raubueberfall[$r_raubueberfall]=" selected=\"selected\"";
         if(isset($r_raubpn)) $raubpn[$r_raubpn]=" selected=\"selected\"";

      if ($wbbuserdata['tueberfall'] > 0)  $selraub " disabled=\"disabled\"";   

      $raubuseronoff="<tr bgcolor=\"{tabletitlecolor}\" id=\"tabletitle\">
      <td colspan=2><smallfont color=\"{fontcolorsecond}\"><b>» Raubüberfall Spiel</b></font></td>
       </tr>
       <tr id=\"tableb\" bgcolor=\"{tablecolorb}\">
        <td><normalfont><b>Am Raubüberfall Spiel teilnehmen ?</b></font><br><smallfont>W&auml;hle diese Option, wenn du am Raubüberfall teilnehmen möchtest.<br><b>Wenn heute schon ein Raubüberfall verübt wurde, kann man erst morgen wieder umstellen!</b></font></td>
        <td><select name=\"r_raubueberfall\"$selraub>
         <option value=\"1\"$raubueberfall[1]>Ja</option>
         <option value=\"0\"$raubueberfall[0]>Nein</option>
        </select></td>
        </tr>
        <tr id=\"tableb\" bgcolor=\"{tablecolorb}\">
        <td><normalfont><b>Willst Du per per PN benachrichtigt werden ?</b></font><br><smallfont>W&auml;hle diese Option, wenn du bei Überfällen eine PN erhalten möchtest.<br><b>Wenn heute schon ein Raubüberfall verübt wurde, kann man erst morgen wieder umstellen!</b></font></td>
        <td><select name=\"r_raubpn\"$selraubpn>
         <option value=\"1\"$raubpn[1]>Ja</option>
         <option value=\"0\"$raubpn[0]>Nein</option>
        </select></td>
        </tr>";}


Hier geht es mir um die 4. Zeile
php:
1:
($wbbuserdata['tueberfall'] > 0)  $selraub " disabled=\"disabled\"";


Sobald der Wert grösser als 0 ist funktioniert die Variable $r_raubueberfall nicht mehr. Diese wird immer auf 0 gesetzt wenn man die Option für $raubpn ändert. Im zuständigen Query Update ... sind die beiden Variablen richtig hinterlegt, denn wenn tueberfall = 0 ist, dann funktioniert alles einwandfrei.

Hat hier jemand ein Tipp für mich was ich falsch mache?

__________________
http://reichundschoenplaudertreff.de/index.php
26.10.14 20:34 schnofeli ist offline E-Mail WWW Finden Als Freund hinzufügen
Schrimm
Banned


Dabei seit: 21.08.11
Beiträge: 700

Antworten Zitieren Editieren Melden       UP

Hallo,

So aus dem Kontext gerissen, lässt sich das schwer sagen. Augenzwinkern

Das Problem könnte aber folgendes sein:
Wenn dein Wert der Variable "$wbbuserdata['tueberfall']" größer als "0" ist, wird doch die Variable "$selraub" mit einem "disable" beschrieben.

Jene befindet sich auch im Formular für "r_raubueberfall".
php:
1:
<select name="r_raubueberfall\"$selraub>

Das bedeutet, dass diese Feld somit ausgeblendet wird und keine Variable an die Datenbank übermittel bzw. an dein Skript wird.
Je nach Einstellung wird somit ein "Standardwert" für diesen Fall übernommen, der meist entweder "NULL" oder "0" ist, somit wäre deine Variable "r_raubueberfall" ausgeschaltet, sofern du mit "funktioniert nicht mehr" sowas gemeint hast. Augenzwinkern

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Schrimm: 27.10.14 01:48.

27.10.14 01:48 Schrimm ist offline Finden Als Freund hinzufügen
schnofeli
Mitglied


Dabei seit: 01.11.09
Beiträge: 5
Fähigkeiten: WBB Lite 1 Anfänger
Herkunft: schweiz
Forenversion: 2.3

Themenstarter Thema begonnen von schnofeli
Antworten Zitieren Editieren Melden       UP

Hallo Schrimm

herzlichen Dank für die schnelle Antwort. Das wird es wohl sein. Warum kann ich dann den hinterlegten Wert nicht noch einmal aus der DB lesen und der Variable $r_raubueberfall zuweisen?
Ich habe am Schluss des Skriptes dann versucht nochmals den Wert aus der DB zu lesen.
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:
if ($userself == 1) {
         if(isset($r_raubueberfall)) $raubueberfall[$r_raubueberfall]=" selected=\"selected\"";
         if(isset($r_raubpn)) $raubpn[$r_raubpn]=" selected=\"selected\"";

      if ($wbbuserdata['tueberfall'] > 0)  $selraub " disabled=\"disabled\"";   

      $raubuseronoff="<tr bgcolor=\"{tabletitlecolor}\" id=\"tabletitle\">
      <td colspan=2><smallfont color=\"{fontcolorsecond}\"><b>» Raubüberfall Spiel</b></font></td>
       </tr>
       <tr id=\"tableb\" bgcolor=\"{tablecolorb}\">
        <td><normalfont><b>Am Raubüberfall Spiel teilnehmen ?</b></font><br><smallfont>W&auml;hle diese Option, wenn du am Raubüberfall teilnehmen möchtest.<br><b>Wenn heute schon ein Raubüberfall verübt wurde, kann man erst morgen wieder umstellen!</b></font></td>
        <td><select name=\"r_raubueberfall\"$selraub>
         <option value=\"1\"$raubueberfall[1]>Ja</option>
         <option value=\"0\"$raubueberfall[0]>Nein</option>
        </select></td>
        </tr>
        <tr id=\"tableb\" bgcolor=\"{tablecolorb}\">
        <td><normalfont><b>Willst Du per per PN benachrichtigt werden ?</b></font><br><smallfont>W&auml;hle diese Option, wenn du bei Überfällen eine PN erhalten möchtest.<br><b>Wenn heute schon ein Raubüberfall verübt wurde, kann man erst morgen wieder umstellen!</b></font></td>
        <td><select name=\"r_raubpn\"$selraubpn>
         <option value=\"1\"$raubpn[1]>Ja</option>
         <option value=\"0\"$raubpn[0]>Nein</option>
        </select></td>
        </tr>";
       $r_raubueberfall $wbbuserdata['raubueberfall'];}

Wenn ich den dann mit echo ausgebe ist der dennoch 0. Also hier noch ohne
php:
1:
if ($wbbuserdata['tueberfall'] > 0)
um zu testen, dass die Variable auf jeden Fall einen Wert erhält

__________________
http://reichundschoenplaudertreff.de/index.php
27.10.14 17:37 schnofeli ist offline E-Mail WWW Finden Als Freund hinzufügen
Schrimm
Banned


Dabei seit: 21.08.11
Beiträge: 700

Antworten Zitieren Editieren Melden       UP

Hallo,

Da ich nicht weiß, wie genau die Daten in die Datenbank gelangen und wie du deine Daten wieder aus der Datenbank holst, ist dies schwer zu erkennen.

Eventuell bei den Tests immer gleich die SQL-Datenbank im Blick behalten und gucken, wie sich die Werte dort verhalten, wenn du bestimmte Einstellungen vornimmst.

Also direkt über das Admintool der SQL-Datenbank, falls vorhanden, nachschauen. Augenzwinkern
03.11.14 01:12 Schrimm ist offline Finden Als Freund hinzufügen
schnofeli
Mitglied


Dabei seit: 01.11.09
Beiträge: 5
Fähigkeiten: WBB Lite 1 Anfänger
Herkunft: schweiz
Forenversion: 2.3

Themenstarter Thema begonnen von schnofeli
Antworten Zitieren Editieren Melden       UP

Danke, das machte ich schon so, darum ist es mir auch aufgefallen, denn das mit dem "echo" habe ich noch nicht ganz raus wie das funktioniert. Einmal wird das auf der Seite angezeigt und in einem anderen Fall wieder nicht.

Es ist schon so, wie Du geschrieben hast, dass wenn "disable" dann wird 0 geschrieben, aber ich verstehe nicht, warum ich den Wert nicht aus der DB lesen kann wenn dort 1 steht und nicht 0 Mauer

Der update - Befehl der Tabelle kommt ja, zumindest wie ich es interpretiere, erst später.

Na ja, ich habe es nun halt so gelöst, dass beide Werde "disable" sind und erst einen Tag später, wenn der 1. Wert wieder aktiv ist geändert werden kann.

Aber interessiert hätte es mich schon warum das so ist, denn ich möchte etwas lernen und nicht einfach die "billige" Variante programmieren.

Jedenfalls herzlichen Dank für Deine Unterstützung.

__________________
http://reichundschoenplaudertreff.de/index.php
05.11.14 20:23 schnofeli ist offline E-Mail WWW Finden Als Freund hinzufügen
Schrimm
Banned


Dabei seit: 21.08.11
Beiträge: 700

Antworten Zitieren Editieren Melden       UP

Hallo,

Warum soll der Wert "1" nicht ausgelesen werden können?
Bist du sicher, dass du auf deinen Wert mittels "$wbbuserdata['raubueberfall']" zugreifen kannst?
Wie sieht denn dein ganzes Skript aus?

Erkläre auch eventuell, wie das Ganze genau funktionieren soll.
Wenn du im Grunde nur das Formular herzeigst und nicht wann jenes aufgerufen wird und wie genau es mit dem Datenbankeintrag zusammenhängt bzw. wie es die Daten aus der Datenbank holt, lässt sich nicht wirklich besonders viel sagen, wo das Problem liegt.

Wenn ich das richtig sehe ist das bei dir wie folgt:
Du gehst auf dein Profil und willst einstellen, ob du am Spiel teilnehmen willst.
Du fragst nun ab, ob dich jemand überfallen hat:
"if($wbbuserdata['tueberfall']>0) $selraub = " disabled=\"disabled\"";"

Dies deaktiviert den Ausstieg am Spiel, wenn du bereits überfallen wurdest.
Wenn du nun speicherst, ist folglich in der Datenbank der Wert "r_raubueberfall" dennoch "0", auch wenn er auf "1" war, da jener Fall, soweit ich das sehe, nicht berücksichtigt wird.

Du müsstest also eine Variable für den Fall "$wbbuserdata['tueberfall']>0" definieren.

In etwa so:
php:
1:
if($wbbuserdata['tueberfall'] > 0$querywert=$wbbuserdata['raubueberfall'];


"$querywert" steht hier für "$_POST['r_raubueberfall']", "$_GET['r_raubueberfall']" oder welche Übertragungsart auch immer im Update-Befehl verwendet wird.
05.11.14 23:39 Schrimm ist offline Finden Als Freund hinzufügen
schnofeli
Mitglied


Dabei seit: 01.11.09
Beiträge: 5
Fähigkeiten: WBB Lite 1 Anfänger
Herkunft: schweiz
Forenversion: 2.3

Themenstarter Thema begonnen von schnofeli
Antworten Zitieren Editieren Melden       UP

Hallo Schrimm

schön von Dir zu lesen. Also ich habe einmal die usercp.php angehängt. Dort wird im else - Teil von
php:
1:
if($action=="options_change") {

der Wert der Variable $r_raubueberfall zugewiesen.
php:
1:
$r_raubueberfall $wbbuserdata['raubueberfall'];


Aus diesem Grund denke ich, dass wenn die quasi am Anfang aus der DB gelesen wird, dass diese Variable auch abgefüllt sein müsste. Oder eben wieder zugewiesen werden kann, wie im vorletzten Beitrag von mir.

Der Updatebefehl kommt meiner Meinung nach erst später.

Dateianhang:
unknown usercp.php (60 KB, 1 mal heruntergeladen)


__________________
http://reichundschoenplaudertreff.de/index.php
06.11.14 18:16 schnofeli ist offline E-Mail WWW Finden Als Freund hinzufügen
Schrimm
Banned


Dabei seit: 21.08.11
Beiträge: 700

Antworten Zitieren Editieren Melden       UP

Das ist zwar korrekt, aber wenn du dein Formular absendest, wird der "else"-Teil nicht mehr ausgeführt und folglich, wenn das Formular auf "disabled" steht kein Wert für "$r_raubueberfall" übermittelt.

Du musst deine übermittelten Variablen vor dem Updatebefehl schreiben.
Also unter:
php:
1:
if(isset($_POST['send'])) {

Der "else"-Teil wird genau dann aufgerufen, wenn der "send"-Befehl nicht ausgeführt wurde.
Ebenfalls wird alles nach dem "else"-Teil nicht mehr wirksam für den Update-Befehl.

Ergo:
Für deinen Update-Befehl ist die Variable "$r_raubueberfall" immer "NULL" bzw. existiert Sie gar nicht und es wird somit einfach ein "Standard"-Wert übernommen.

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Schrimm: 06.11.14 19:57.

06.11.14 19:56 Schrimm ist offline Finden Als Freund hinzufügen
schnofeli
Mitglied


Dabei seit: 01.11.09
Beiträge: 5
Fähigkeiten: WBB Lite 1 Anfänger
Herkunft: schweiz
Forenversion: 2.3

Themenstarter Thema begonnen von schnofeli
Antworten Zitieren Editieren Melden       UP

Da bin ich nun aber schön auf dem Schlauch gestanden und habe den Wald vor lauter Bäumen nicht gesehen.

Habe das nun am richtigen Ort eingesetzt und es funktioniert einwandfrei.

Herzlichen Dank für Deine Geduld und die Erklärungen Blume

__________________
http://reichundschoenplaudertreff.de/index.php
09.11.14 11:39 schnofeli ist offline E-Mail WWW Finden Als Freund hinzufügen
Baumstruktur | Brettstruktur
Gehe zu:

Neues Thema erstellen Antwort erstellen

yourWBB » yourWBB Misc * » Das Proggen » MySQL und PHP » Variable ändert sich einfach so