php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 13-09-2007, 09:21
Paradoxx
 Newbie
Links : Onlinestatus : Paradoxx ist offline
Registriert seit: Sep 2007
Beiträge: 20
Paradoxx ist zur Zeit noch ein unbeschriebenes Blatt
Question Update über Variablenwerte funktioniert nicht

Hallo zusammen,

Ich habe folgendes Problem: Ich habe eine MySQL Tabelle welche "benutzerdaten" heißt. Dort stehen verschiedene Felder, wie z.B. der Nickname, die ID und unter anderem auch der Kontostand.

Jeder User hat einen bestimmten Kontostand und dieser soll von Personen, die die nötige Berechtigung dazu haben, verändert werden können.

Um Geld auf das Konto eines anderen Einzuzahlen, klickt er auf der Homepage auf Einzahlung. Es öffnet sich ein Fenster, in dem er über eine Listbox den User auswählen kann, auf dessen konto eingezahlt werden soll und den einzuzahlenden betrag eingeben kann.

Wenn er das ganze abschickt sollte der aktuelle Kontostand des Users mit der eingetippten Zahl addiert werden und der neue wert in das Datenbankfeld geschrieben werden. Hierfür habe ich folgenden Quellcode:


PHP-Code:
$res mysql_query("select Nickname, Kontostand from benutzerdaten where Nickname like '".$_POST["beguenstigter"]."'");
$num mysql_num_rows($res);

  echo 
"<tr>";
  echo 
"<td>" $dsatz["Nickname"] . "<br></td>";
  echo 
"<td>" $dsatz["Kontostand"] . "</td>";
  echo 
"</tr><br><br>";
  
$kontostand $dsatz["Kontostand"];
  
$kontostand_new $kontostand $_POST["betrag"];
  
$dsatz["Kontostand"] = $kontostand_new;
  echo 
$kontostand_new;

  
$sqlab "update benutzerdaten set Kontostand = '".$kontostand_new."' where nickname = '".$dsatz["Nickname"]."',";
mysql_query(sqlab);

$num1 mysql_affected_rows();
if (
$num1>0)
  echo 
"Der Datensatz wurde ge&auml;ndert<p>";
else
  echo 
"Der Datensatz wurde nicht ge&auml;ndert <p>"

Wenn ich das ausgeführt habe, steht allerdings immer noch der gleiche Wert in dem Kontostand-Feld des betreffenden Users.

Ich wäre über etwas Hilfe sehr dankbar.

P.S.: Die Forumssuche habe ich genutzt, aber nichts brauchbares gefunden

LG

Paradoxx
Mit Zitat antworten
  #2 (permalink)  
Alt 13-09-2007, 09:34
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$res mysql_query("select Nickname, Kontostand from benutzerdaten where Nickname like '".$_POST["beguenstigter"]."'");
$sqlab "update benutzerdaten set Kontostand = '".$kontostand_new."' where nickname = '".$dsatz["Nickname"]."',"
Betreib mal anständiges Debugging, wie es in den Board Regeln steht. MySql wird dir die Fehlermeldung schon um die Ohren hauen. Also mit den Spalten stimmt schonmal was nicht.
Aber bitte schreib hinter jede Query mal
PHP-Code:
mysql_query() OR die(mysql_error()); 
und als erste Zeile deines Codes mal
PHP-Code:
error_reporting(E_ALL); 
Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #3 (permalink)  
Alt 13-09-2007, 10:00
Paradoxx
 Newbie
Links : Onlinestatus : Paradoxx ist offline
Registriert seit: Sep 2007
Beiträge: 20
Paradoxx ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habe den Quellcode jetzt wie folgt abgeändert:

PHP-Code:

$res 
mysql_query("select Id, Nickname, Kontostand from benutzerdaten where Nickname like '".$_POST["beguenstigter"]."'") OR die(mysql_error());

$num mysql_num_rows($res);

while (
$dsatz mysql_fetch_assoc($res))
{
  echo 
"<tr>";
  echo 
"<td>" $dsatz["Id"] . "<br></td>";
  echo 
"<td>" $dsatz["Nickname"] . "<br></td>";
  echo 
"<td>" $dsatz["Kontostand"] . "</td>";
  echo 
"</tr><br><br>";
  
$kontostand $dsatz["Kontostand"];
  
$kontostand_new $kontostand $_POST["betrag"];
  
$dsatz["Kontostand"] = $kontostand_new;
  echo 
$kontostand_new;
}
  
$sqlab "update benutzerdaten set Kontostand = '".$kontostand_new."' where Id = '".$dsatz["Id"]."',";
mysql_query($sqlab) OR die(mysql_error());

$num1 mysql_affected_rows();
if (
$num1>0)
  echo 
"Der Datensatz wurde ge&auml;ndert<p>";
else
  echo 
"Der Datensatz wurde nicht ge&auml;ndert <p>"
wenn ich jetzt eine einzahlung mit 500 (als wert) ausfürhre erhalte ich folgende ausgabe:

5
admin
20000

20500You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

was nun? Ich hab mir nochmal alles angeschaut aber ich komm nich drauf
Mit Zitat antworten
  #4 (permalink)  
Alt 13-09-2007, 10:10
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$sqlab "update benutzerdaten set Kontostand = '".$kontostand_new."' where Id = '".$dsatz["Id"]."',"
Siehst du den Fehler wirklich nicht ? Tipp: Ein Zeichen gegen Ende der Query ist überflüssig.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #5 (permalink)  
Alt 13-09-2007, 10:15
Paradoxx
 Newbie
Links : Onlinestatus : Paradoxx ist offline
Registriert seit: Sep 2007
Beiträge: 20
Paradoxx ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok das "," (Komma) hatte ich wohl übersehen. Jetzt werden zwar keine Fehlermeldungen mehr gebracht, aber es erfolgt kein update.

Der Benutzer admin hat den Kontostand 20.000
Nun zahle ich dem Benutzer admin 500 auf sein konto ein.

Dann sollte er eigentlich 20.500 auf seinem Konto haben, richtig?

Ich bekomme zwar folgende ausgabe:

5
admin
20000

20500Der Datensatz wurde nicht geändert

20500

aber in der Datenbank steht trotzdem noch 20.000 drin.
Mit Zitat antworten
  #6 (permalink)  
Alt 13-09-2007, 10:19
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mach mal die einfachen Anführungszeichen um den Wert $dsatz['Id'] weg. Normaleweise ist Id ein Integer und du versuchst einen Integer mit dem String einer Zahl zu vergleichen.
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #7 (permalink)  
Alt 13-09-2007, 10:22
Paradoxx
 Newbie
Links : Onlinestatus : Paradoxx ist offline
Registriert seit: Sep 2007
Beiträge: 20
Paradoxx ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hab ich:

PHP-Code:
$sqlab "update benutzerdaten set Kontostand = '".$kontostand_new."' where Id = ".$dsatz["Id"]."";
mysql_query($sqlab) OR die(mysql_error()); 
Jetzt kommt folgende Ausgabe:

5
admin
20000

20500You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Ich weiß echt nich mehr weiter
Mit Zitat antworten
  #8 (permalink)  
Alt 13-09-2007, 10:29
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mach mal ein
PHP-Code:
echo $sqlab
Ach und als erste Zeile deines Codes haste sicherlich
PHP-Code:
error_reporting(E_ALL); 
gemacht?
Und wenn du testweise mal die id 5 von Hand in die Abfrage setzt, funzt es dann ?
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #9 (permalink)  
Alt 13-09-2007, 10:32
Paradoxx
 Newbie
Links : Onlinestatus : Paradoxx ist offline
Registriert seit: Sep 2007
Beiträge: 20
Paradoxx ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja wenn ich manuell die ID auf 5 setzt funktionierts.
Mit Zitat antworten
  #10 (permalink)  
Alt 13-09-2007, 10:33
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dann würde ich jetzt noch gerne das echo deiner Query sehen. (und zwar jener Query mit der Var bei Id)
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #11 (permalink)  
Alt 13-09-2007, 10:36
Paradoxx
 Newbie
Links : Onlinestatus : Paradoxx ist offline
Registriert seit: Sep 2007
Beiträge: 20
Paradoxx ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ah jetzt hab ichs geschafft:

PHP-Code:

$sqlab 
"update benutzerdaten set Kontostand = '".$kontostand_new."' where Nickname = '".$_POST["beguenstigter"]."'";
mysql_query($sqlab) OR die(mysql_error());

$num1 mysql_affected_rows();
if (
$num1>0)
  echo 
"Der Datensatz wurde ge&auml;ndert<p>";
else
  echo 
"Der Datensatz wurde nicht ge&auml;ndert <p>";
  
echo 
$sqlab
dann bekomme ich folgendes ergebnis:

5
admin
40800

45800Der Datensatz wurde geändert

update benutzerdaten set Kontostand = '45800' where Nickname = 'admin'


suuuupiie ^^

Danke dir...hast mir wirklich seeehr weitergeholfen
Mit Zitat antworten
  #12 (permalink)  
Alt 13-09-2007, 10:41
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du könntest sogar auf die erste Query verzichten und nur
PHP-Code:
$sqlab "update benutzerdaten set Kontostand = 'Kontostand+".$_POST['betrag']."' where Nickname = '".$_POST["beguenstigter"]."'"
schreiben
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #13 (permalink)  
Alt 13-09-2007, 10:42
Paradoxx
 Newbie
Links : Onlinestatus : Paradoxx ist offline
Registriert seit: Sep 2007
Beiträge: 20
Paradoxx ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hm...ne jetz lass ichs lieber mal ^^...bin ja schonmal froh dasses funzt ^^

Und nochmals vielen vielen Dank

LG

Paradoxx
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:56 Uhr.