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

update==false aber wieso?

Status
Für weitere Antworten geschlossen.
I

incendium

Guest
hi @ all, kann mir einer sagen wo der fehler in dem folgenden script ist.das update liefert immer false.

PHP:
<?php
session_start();
?>
<?php

if(!isset($_SESSION["username"]))
   {
   echo "Sie haben keine Berechtigung diese Seite zu sehen, da sie nicht eingeloggt sind.";
   exit;
   }
else{


if((!isset($_POST['metallmine'])) AND (!isset($_POST['kristallmine']))){
   echo" Sie haben keine Berechtigung diese Seite anzuschauen";
}

if(isset($_POST['metallmine'])){

mysql_connect('localhost', 'Kevin', '++++');
mysql_select_db('homepage');

$abfrage = "SELECT * FROM login";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
$metallmine = $row->metall;
$user = $row->username;
$metallmine ++;
$aendern = "UPDATE login Set
$metall='".$metallmine."' WHERE $user = ".$_SESSION['username']; 
$update = mysql_query($aendern);
if($update == true){
echo " Die Metallmine wurde erfolgreich ausgebaut! <a href=\"mine.php\">Weiter</a>";
exit;
}
else{ echo " Ein Fehler ist aufgetaucht! ";
}

}

if(isset($_POST['kristallmine'])){

mysql_connect('localhost', 'Kevin', '++++');
mysql_select_db('homepage');

$abfrage = "SELECT * FROM login";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
$kristallmine = $row->kristall;
$kristallmine ++;
$aendern = "UPDATE login Set
kristall='$kristallmine'";
$update = mysql_query($aendern);
if($update == true){
echo " Die Kristallmine wurde erfolgreich ausgebaut! <a href=\"mine.php\">Weiter</a>";
exit();
}
}
}

?>
 
Werbung:
dein SQL ist mal wieder total falsch...

PHP:
<?php
$sql = "UPDATE login SET metall = '".$metallmine."' WHERE user = '".$_SESSION['username']."'";
?>

wo ist $metallmine definiert? das hier verweist auf was leeres.

änder' nach diesem muster auch noh den unteren befehl ab.

Nils aka XraYSoLo
 
aber wieso heißt es metall und nicht $metall und user und nicht $ user ich hab die variablen doch unter:

PHP:
$abfrage = "SELECT * FROM login";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
$metallmine = $row->metall;
$user = $row->username;

definiert???wieso soll ich keine variable nehmen??
 
Werbung:
du greifst auf die datenbank zu, nicht auf registrierte variablen, deswegen sollte "user" so heißen, wies in der datenbank angegeben wurde.

wenn dus mit fetch_object machst:

PHP:
<?php
$sql = "UPDATE login SET ".$row -> metall." = '".$metallmine."' WHERE ".$row -> user." = '".$_SESSION['username']."'";
?>

dann so, aber das kann nicht funktionieren.

Nils aka XraYSoLo
 
das problem ist: DEIN CODE FUNKT NICHT: ich hab ihn so eingebaut und er liefert immer den else berreich des echos am schluss:

PHP:
<?php
session_start();
?>

<?php

if(!isset($_SESSION["username"]))
   {
   echo "Sie haben keine Berechtigung diese Seite zu sehen, da sie nicht eingeloggt sind.";
   exit;
   }
else{


if((!isset($_POST['metallmine'])) AND (!isset($_POST['kristallmine']))){
   echo" Sie haben keine Berechtigung diese Seite anzuschauen";
}

if(isset($_POST['metallmine'])){

mysql_connect('localhost', 'Kevin', '****');
mysql_select_db('homepage');

$abfrage = "SELECT * FROM login";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
$metallmine = $row->metall;
$user = $row->username;
$metallmine ++;
$sql = "UPDATE login SET metall = '".$metallmine."' WHERE user = '".$_SESSION['username']."'"; 
$update = mysql_query($sql);
if($update == true){
echo " Die Metallmine wurde erfolgreich ausgebaut! <a href=\"mine.php\">Weiter</a>";
exit;
}
else{ echo " Ein Fehler ist aufgetaucht! ";
}

}

if(isset($_POST['kristallmine'])){

mysql_connect('localhost', 'Kevin', '****');
mysql_select_db('homepage');

$abfrage = "SELECT * FROM login";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
$kristallmine = $row->kristall;
$kristallmine ++;
$aendern = "UPDATE login Set
kristall='$kristallmine'";
$update = mysql_query($aendern);
if($update == true){
echo " Die Kristallmine wurde erfolgreich ausgebaut! <a href=\"mine.php\">Weiter</a>";
exit();
}
}
}

?>
PS: der kristallmine teil ist unwichtig.
 
deine komplette abfrage ist undefinierbar falsch, schreibs lieber noch mal neu und dann aber richtig. hier alles zu kontrollieren und korrigieren wäre mehr aufwand als eine neuentwicklung.

Nils aka XraYSoLo
 
Werbung:
ich habs jetzt so geschreiben:

PHP:
<?php
session_start();
?>

<?php

if(!isset($_SESSION["username"]))
   {
   echo "Sie haben keine Berechtigung diese Seite zu sehen, da sie nicht eingeloggt sind.";
   exit;
   }
else{

if(isset($_POST['metallmine'])){
mysql_connect('localhost','Kevin','de381?!#');
mysql_select_db('homepage');

$abfrage = "SELECT * FROM login";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
$metallmine = $row->metall;
$user = $row->username;
$metallmine ++;
$sql = "UPDATE login SET metall = '".$metallmine."' WHERE user = '".$_SESSION['username']."'"; 
$update = mysql_query($sql);
if($update == true){
echo " Die Metallmine wurde erfolgreich ausgebaut! <a href=\"mine.php\">Weiter</a>";}
else {echo " Ein Fehler ist aufgetaucht. ";}
                                }

    }
?>

wieso funkts nicht?
 
du prüfst ja nicht ob das ereignis eingetreten ist, sondern nur, ob die variabe $update true ist...
...dann ist es klar, dass da nichts bei 'rauskommt.

Nils aka XraYSoLo
 
Werbung:
Hallo,

mysql_query() liefert z.B. false, wenn die Abfrage falsch ist. Das heißt dein UPDATE Befehl enthält mit großer Wahrscheinlichkeit einen Fehler. Lass dir im else-Fall mal die Meldung von mysql_error() ausgeben.

Poste am besten mal noch deine Tabellenstruktur (und was du beabsichtigst), dann können wir besser Fehler finden.



N43
 
Werbung:
die tabellenstruktur ist:

id int(8)
UNSIGNED Nein
auto_increment username varchar(150) latin1_general_ci
Nein

passwort varchar(32) latin1_general_ci
Nein

metall int(255)

Nein
kristall int(255)

Nein


nj vll. gehts auch anders. ich sags ma in worten. ich möchte nur dass es bei den user metall um eins erhöht, der auch den usernamen hat, mit den man angemeldet ist. wie kann ich das machen?

Edit - Smileys ausgeschaltet damit man die Tabellenstruktur lesen kann (Frank)
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

in der Tabelle hast du die Spalte username, nicht user.

Code:
[COLOR=#000000][COLOR=#0000bb]$sql [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#dd0000]"UPDATE login SET metall = '"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]$metallmine[/COLOR][COLOR=#007700].[/COLOR][COLOR=#dd0000]"' WHERE user = '"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]$_SESSION[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]'username'[/COLOR][COLOR=#007700]].[/COLOR][COLOR=#dd0000]"'"[/COLOR][COLOR=#007700];[/COLOR][/COLOR]
musste in
Code:
[COLOR=#000000][COLOR=#0000bb]$sql [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#dd0000]"UPDATE login SET metall = '"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]$metallmine[/COLOR][COLOR=#007700].[/COLOR][COLOR=#dd0000]"' WHERE username = '"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]$_SESSION[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]'username'[/COLOR][COLOR=#007700]].[/COLOR][COLOR=#dd0000]"'"[/COLOR][COLOR=#007700];[/COLOR][/COLOR]
Um dir die Select Abfrage vorher zu sparen kannste auch
Code:
[COLOR=#000000][COLOR=#0000bb]$sql [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#dd0000]"UPDATE login SET metall = metall+1[/COLOR][COLOR=#dd0000] WHERE username = '"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]$_SESSION[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]'username'[/COLOR][COLOR=#007700]].[/COLOR][COLOR=#dd0000]"'"[/COLOR][COLOR=#007700];[/COLOR][/COLOR]
nehmen. Das erhöht den metall-Wert um 1.

Und lass dir wie gesagt am besten im else-Fall über
Code:
echo mysql_error();
den Fehler ausgeben. Das teilt einem nämlich gerade solche Fehler mit.

N43
 
ok danke. wie kann ich jetz machen dass es ausgibt, wenn das script ging, also metall um eins erhöht wurde?
 
Werbung:
if (mysql_query($sql)) { echo 'Ja es hat geklappt'; } else { echo 'da ist der wurm drinne :-('; }
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben