meine funktion geht nicht :-(
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
befehl
beitrag
erste
fehler
fehlermeldung
fehlfunktion
funktion
haben
mache
schreibe
session
set
sicherheit
spalten
tabelle
update
ursache
variable
variante
versuchen
-
function build($build) { error_reporting(E_ALL); $sql_build = 'SELECT * FROM user WHERE id="'.$_SESSION['user_id'].'"'; $query_build=mysql_query($sql_build); $fetch_build = mysql_fetch_array($query_build); $sql_insert = 'UPDATE user SET '.$build.'='.$build.'+1 WHERE id="'.$_SESSION['user_id'].'"'; echo '<form method="post"><input type="submit" name="x'.$build.'" value="'.$fetch_build[$build].'"></form>'; if($_POST['x'.$build]) { $query_insert = mysql_query($sql_insert); echo '<br />gebaut...*g?hn*'; } return $fetch_build[''.$build.'']; }
Es ist eine Funktion, die eine Variable in der DB um eins erh?hen soll.
Dabei wird auch gleich ein Button und die dazugeh?rigr if($_POST) abfrage erstellt.
Nur geht das ganze eben nicht ;)
An was liegt das?
Die Datanbankverbindung geht. Die wird includiert.
EDIT:
Eine Fehlermeldung wird auch nicht ausgegeben.
Beitrag ge?ndert am 28.01.2006 19:21 von planschkuh -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
$sql_insert = 'UPDATE user SET '.$build.'='.$build.'+1 WHERE id="'.$_SESSION['user_id'].'"';
Ich weiss nicht ob das bei dir so auch geht, aber generell w?rd ich das eher so schreiben:
$sql_insert = 'UPDATE user SET '.$build.'='.($build+1).' WHERE id="'.$_SESSION['user_id'].'"';
Probier mal as, vll war es ja das.
mfg mace -
$sql_insert = 'UPDATE user SET '.$build.'='.$build.'+1 WHERE id="'.$_SESSION['user_id'].'"';
ich w?rds so machen:
$sql_insert = 'UPDATE user SET '.$build.'='".$build."+1"' WHERE id="'.$_SESSION['user_id'].'"';
bei dir ist der 1er au?erhalb der einfachen anf?hrungszeichen, und ich denk mir mal dann nimmt er die '1' nicht mehr mit und z?hlt somit auch nicht hoch.
probiers einfach mal aus die varianten
edit
@ untermir
haste recht
bin bin den doppelten und einfachen durcheinander gekommen, ich machs immer umgekehrt ^^
so habs nochmal getestet, probiers mal so der sql code stimmt obs updatet konnte ich nicht testen:
$sql_insert = "UPDATE user SET ".$build."='".$build."+1' WHERE id='".$_SESSION['user_id']."'";
Beitrag ge?ndert am 29.01.2006 10:31 von pointi -
ich w?rds so machen:
$sql_insert = 'UPDATE user SET '.$build.'='".$build."+1"' WHERE id="'.$_SESSION['user_id'].'"';
uh, allein die farben sagen schon, dass das nicht funktionieren kann ^^ -
es geht alles nicht
Aber es geht auch nicht, wenn ich die Funktion weglasse eun einfach:
$sql = 'UPDATE user SET titan_level=titan_level+1 WHERE id="'.$_SESSION['user_id'].'"';
Schreibe.
An was k?nnte das liegen? -
es geht alles nicht
Aber es geht auch nicht, wenn ich die Funktion weglasse eun einfach:
$sql = 'UPDATE user SET titan_level=titan_level+1 WHERE id="'.$_SESSION['user_id'].'"';
Schreibe.
An was k?nnte das liegen?
hast du schonmal den sql befehl ausgegeben?
steht da was drinnen in der session variable? es k?nnte leicht sein dass wir schon die ganze zeit an der falschen stelle herumdoktoren^^ -
In der Session steht was drin.
Die anderen Scripte funktionieren auhc mit der Session. -
gib mal den sql befehl aus, zur sicherheit.
und hast du den befehl schon im phpmyadmin versucht (im sql bereich)??
fehler kommt wirklich keiner? hmm dann d?rften die tabelle und die spaltennamen stimmen ...
mehr f?llt mir leider auch nicht mehr ein! -
$sql = 'UPDATE user SET titan_level=titan_level+1 WHERE id="'.$_SESSION['user_id'].'"';
Versuch's so:
$sql = 'UPDATE user SET titan_level=titan_level+1 WHERE id='.$_SESSION['user_id'];
Ich denke, die Ursache f?r die Fehlfunktion d?rfte an den beiden Anf?hrungszeichen, welche die SessionID umklammern, liegen.
-
pointi schrieb:
gib mal den sql befehl aus, zur sicherheit.
und hast du den befehl schon im phpmyadmin versucht (im sql bereich)??
fehler kommt wirklich keiner? hmm dann d?rften die tabelle und die spaltennamen stimmen ...
mehr f?llt mir leider auch nicht mehr ein!
Wenn ich in die funktion
echo $sql_insert;
schreibe, dann kommt bei der eingabe
build('strom_level')
folgendes raus:
UPDATE user SET strom_level=strom_level+1 WHERE id="1"
compactdisc schrieb:
$sql = 'UPDATE user SET titan_level=titan_level+1 WHERE id=''.$_SESSION['user_id'].''';
Versuch's so:
$sql = 'UPDATE user SET titan_level=titan_level+1 WHERE id='.$_SESSION['user_id'];
Ich denke, die Ursache f?r die Fehlfunktion d?rfte an den beiden Anf?hrungszeichen, welche die SessionID umklammern, liegen.
Geht auch nich ;( -
als erstes w?rde ich dir ein mysql_error() empfehlen...
function build($build) { $sql_build = 'SELECT * FROM user WHERE id='.$_SESSION['user_id']; $query_build=mysql_query($sql_build) or die(mysql_error() . '<br />'. $sql_build); $fetch_build = mysql_fetch_array($query_build); $sql_insert = 'UPDATE user SET '.$build.'='.$build.'+1 WHERE id='.$_SESSION['user_id']; echo '<form method="post"><input type="submit" name="x'.$build.'" value="'.$fetch_build[$build].'"></form>'; if($_POST['x'.$build]) { $query_insert = mysql_query($sql_insert) or die(mysql_error() . '<br />' . $sql_insert); echo '<br />gebaut...*g?hn*'; } return $fetch_build[''.$build.'']; }
das sollte (hoffentlich) etwas mehr licht ins dunckel bringen. -
irgendwie...wird so auch nix ausgegeben ;(
Es kommt einfach keine Fehlermeldung.
Aber geschrieben wird auch nix.-.-
EDIT:
ES geht!
Das Fehler war, dass man 0 nciht auf 1 erh?hen kann(was wei? ich warum)
Was mache ich nun?
Wie kann ich die Variable von 0 auf 1 erh?hen?
Beitrag ge?ndert am 31.01.2006 12:30 von planschkuh -
planschkuh schrieb:
irgendwie...wird so auch nix ausgegeben ;(
Es kommt einfach keine Fehlermeldung.
Aber geschrieben wird auch nix.-.-
EDIT:
ES geht!
Das Fehler war, dass man 0 nciht auf 1 erh?hen kann(was wei? ich warum)
Was mache ich nun?
Wie kann ich die Variable von 0 auf 1 erh?hen?
Beitrag ge?ndert am 31.01.2006 12:30 von planschkuh
Jap. so ist es.
Da hab ich gedacht, ich f?ge mal ne if-schleife hinzu:
if($fetch_build[$build]==0) { $sql_insert = 'UPDATE user SET '.$build.' = 1 WHERE id='.$_SESSION['user_id']; } else { $sql_insert = 'UPDATE user SET '.$build.'=('.$fetch_build[$build].'+1) WHERE id='.$_SESSION['user_id']; }
Aber ncihtmal das geht =(
Wei? einer, von euch, woooran das liegen mk?nnte? -
Spaltennamen geh?ren nicht in diese seltsamen Anf?hrungszeichen: 'spalte' ... wenn ?berhaupt, dann in solche `spalte`
//edit: *sch?m* tats?chlich
Ursache #2:
Kann es sein, dass du falsche Spaltennamen verwendest?
Ursache #3:
Der Spaltenname ist ein Schl?sselwort und m?sste somit in `` gesetzt werden.
... und lass - falls vorhanden - mit mysql_error() den zur?ckgegebenen Fehler ausgeben.
Beitrag ge?ndert am 31.01.2006 18:11 von compactdisc -
compactdisc schrieb:
Spaltennamen geh?ren nicht in diese seltsamen Anf?hrungszeichen: 'spalte' ... wenn ?berhaupt, dann in solche `spalte`
Die sind ja nachher wech.
Sind ja nur, um die Variable auszugeben.
(siehe ausgegeben query:
UPDATE user SET methan_level =1 WHERE id=1) -
Probier es mal so :
$sql = "UPDATE `user` SET `methan_level ` = user.methan_level + 1 WHERE `id` = '1'";
Achja und sage mal bitte, was du damit machen willst, bzw. was das Ganze bringen soll.
MfG Lucas -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage