php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.04.2011, 11:58  
Benutzer
 
Registriert seit: 13.01.2011
Beiträge: 58
PHP-Kenntnisse:
Anfänger
ejay befindet sich auf einem aufstrebenden Ast
Standard mit if bei update überprüfen ob Konto leer, dann Fehler ausgeben

Ich hab ein Problem mit meinen Update Formular und brauche Hilfe

Hier mal meine Anweisung
"UPDATE meine_tabelle SET gelesen = +1, // Zähler
konto = konto - 0.5 // Zieht 0.5 Punkte von Konto ab
WHERE uid = '$uid'";

Jetzt wollte ich noch überprüfen ob das Konto auch Punkte aufweist.
Also wenn das Konto =0 ich dann soll das Update nicht ausgeführt werden.

Und so wollte ich das dann machen
"UPDATE meine_tabelle SET gelesen = +1,
konto = konto - 0.5
WHERE uid = '$uid' and konto = '<0'");

Aber mit der and konto = '<0' in der WHERE-Bedingung erreiche ich da gar nichts. Dem Konto werden auch wenn es auf 0 steht Punkte abgezogen so dass ich -0.5...-1 Punkte erhalte

Die Fehlerausgabe benötige ich nicht nur ob ich das ich dieser Art und weise überprüfen kann.
Ich bin euch sehr dankbar wenn ihr mir hierbei helfen könnt.
mfg ejay
ejay ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.04.2011, 12:01  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

SQL-Syntax ist offensichtlich schwer ...

probier es mal mit

Code:
"UPDATE meine_tabelle SET gelesen = gelesen+1,
konto = konto - 0.5
WHERE uid = '$uid' and konto >0 "
dann wertest du in PHP das Ergebnis dieses Updates aus (die affected rows ) und kannst dann Misserfolg erkennen -> 0 affected rows .. oder aber du "kennst" in PHP schon den Kontostand und kannst die Abfrage daher gleich abbrechen mit entsprechender Meldung, dass nicht mehr genug Kontoreserve vorhanden ist
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 15.04.2011, 12:14  
Benutzer
 
Registriert seit: 13.01.2011
Beiträge: 58
PHP-Kenntnisse:
Anfänger
ejay befindet sich auf einem aufstrebenden Ast
Standard

Also bin einen Schritt weiter .
Wenn das Konto auf 0 Punkte angekommen ist werder keine weiteren Punkte abgezogen aber leider bekomme ich auch keine Fehlerausgabe.
Ich vermute mal das ich die if Anweisung auch ändern muss.
Jetzt ist die Frag nur was. Ich schätze mal $_SESSION['konto'] = $konto;

PHP-Code:
<?php
if($result)
    {
        
$_SESSION['gelesen'] = $gelesen;
        echo 
"<Script>alert('Danke! Sie k&ouml;nnen ...')</script>";
        echo 
"<Script>window.location='index.php'</script>";
        exit();
    }
    else
    {
        
$_SESSION['konto'] >0;
        echo 
"<Script>alert('Ihr Konto ist 0...')</script>";
        echo 
"<Script>history.back();</script>";
        exit();
    }
?>

Geändert von Chriz (15.04.2011 um 12:41 Uhr). Grund: BBCode eingefügt, das nächste mal bitte selbst einfügen
ejay ist offline   Mit Zitat antworten
Alt 15.04.2011, 12:43  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Mit mysql_affected_rows() [wie bereits erwähnt] kannst du feststellen, wieviele Datensätze bei einem manipulativen Query (UPDATE) betroffen sind. Wenn dieser Wert 0 ist, hat dein UPDATE-Query keine Änderung an der DB vorgenommen, das Konto ist also bei 0 gewesen. Vorausgesetzt, deine $uid hätte einen Datensatz getroffen.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 15.04.2011, 13:52  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

korrekterweise müsstest du eigentlich sogar prüfen, ob auf dem Konto mindestens "Betrag X" vorhanden ist, den du abziehen willst .....

Code:
"UPDATE meine_tabelle SET gelesen = gelesen+1,
konto = konto - 0.5
WHERE uid = '$uid' and konto >= 0.5 "
dann darf der User das Buch nur "erwerben", wenn er auch genug "Währung" hat
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 15.04.2011, 14:09  
Benutzer
 
Registriert seit: 13.01.2011
Beiträge: 58
PHP-Kenntnisse:
Anfänger
ejay befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für den Hinweis "eagle275"

Leider hab ich mit mysql_affected_rows() probleme da ich nicht weiss wie und wo ich es einbauen muss

mfg ejay
ejay ist offline   Mit Zitat antworten
Alt 15.04.2011, 14:14  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

genau da wo if ($result) in deinem script steht


schau mal - du zeigst nicht besonders viel code - woher sollen wir denn da genau wissen, wo es hinmuss ? aber grundsätzlich
PHP-Code:
$sql="Abfrage";
$resultat=mysql_query($sql);
if (
$resultat!==FALSE AND mysql_affected_rows()==0) {
  echo 
"auf dem Konto war nicht genug Reserve vorhanden";
}
else {
    if (
$resultat===FALSE)
      echo 
"SQL-Fehler ".mysql_error(); // Fehler abfangen
   // weiter im Script

__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 15.04.2011, 14:15  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von ejay Beitrag anzeigen
Leider hab ich mit mysql_affected_rows() probleme da ich nicht weiss wie und wo ich es einbauen muss
Dann beschreibe bitte konkret, wo nach dem Durchlesen der Funktionsbeschreibung im Handbuch und Anschauen der dort gegebeben Beispiele dein Verständnisproblem liegt.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 15.04.2011, 14:44  
Benutzer
 
Registriert seit: 13.01.2011
Beiträge: 58
PHP-Kenntnisse:
Anfänger
ejay befindet sich auf einem aufstrebenden Ast
Standard

Also mein Code sieht folgendermassen aus

Einentlich habe ich 2 Probleme

1. Bei der checkbox soll man zuerst bestätigen bevor das Buch gelesen werden kann aber bei mir ist es so das die Daten auch ohne die Bestätigung geändet werden.

2. Eine Fehlerausgabe ( Konto weist 0 Punkte auf ), wenn das Konto auf 0 ist, bzw. wenn die Punkte nicht mehr ausreichen sind.


PHP-Code:
include ("meine DB");
if(isset(
$_POST['submit_USER']))
{

    if(!
ereg("^[[:digit:]]*$"$gelesen $_POST['gelesen'])||  // Hier wirde der Zähler erhöht
       
!ereg("^[a-z0-9A-Z üäö ÜÄÖ ? @ ß ! . , ; : _ -- * + ~ \/ == \r\n]*$"$ebuch1 $_POST['ebuch1'])  // Hier wird der Buchtext in die Zeile eingetragen

      
)

    {
        echo 
"<Script>alert('Es ist ein Fehler aufgetreten!')</script>";
        echo 
"<Script>history.back();</script>";
        exit();
    }
    else
    {
        
$result mysql_query("UPDATE meine_tabelle
                               SET gelesen = gelesen + 1,
                                   konto = konto - 0.5,
                                   ebuch1 = 'ebuch' // Hier wird in Zeile ebuch1 das Wort ebuch eingetragen
                               WHERE uid = '$uid' and konto >0"
);
    }
    if(
$result)
    {
        
$_SESSION['gelesen'] = $gelesen;
        
$_SESSION['ebuch1'] = $ebuch1;

        echo 
"<Script>alert('Danke! Sie können Ihr buch jetzt lesen')</script>";
        echo 
"<Script>window.location='index.php'</script>";
        exit();
    }
    else
    {
        
$_SESSION['konto'] >0;
        echo 
"<Script>alert('Ihr Konto ist 0!')</script>";
        echo 
"<Script>history.back();</script>";
        exit();
    }
}
mysql_close(); 
<form action = "<?php echo $PHP_SELF ?>" method = "post">
<input type="checkbox" name="gelesen" value="1">
<input type="submit" name="submit_USER" style="font-weight: 700" value="eBuch lesen" />

Ich danke euch allen für eure Hilfe
mfg ejay

PS: Hoffe ich habe nicht zuviele Fehler eingebaut da ich ja noch anfänger bin.

Geändert von ejay (15.04.2011 um 14:55 Uhr).
ejay ist offline   Mit Zitat antworten
Alt 15.04.2011, 14:51  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von ejay Beitrag anzeigen
Einentlich habe ich 2 Probleme

1. Bei der checkbox soll man zuerst bestätigen bevor das Buch gelesen werden kann aber bei mir ist es so das die Daten auch ohne die Bestätigung geändet werden.

2. Eine Fehlerausgabe ( Konto weist 0 Punkte auf ), wenn das Konto auf 0 ist, bzw. wenn die Punkte nicht mehr ausreichen sind.
Das sind beides nur die Aufgaben, die du umsetzen willst.
Welche Probleme du dabei hast, beschreibt das immer noch nicht.

Und bitte nutze die [php]-Tags zur Formatierung, wenn du Beispielcode zeigst.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fehler im UPDATE Code für MySQL Plague PHP Tipps 2005 7 22.05.2005 02:03
Fehler im UPDATE Code für MySQL Plague Datenbanken 1 21.05.2005 16:55
Fehler beim Update PHP Tipps 2005 1 21.04.2005 19:08
Fehler mit UPDATE PHP Tipps 2005 8 21.04.2005 15:05
Fehlermeldung - aber kein fehler... Tschuu HTML, Usability und Barrierefreiheit 16 14.03.2005 15:56
fehler nach update? robo47 Off-Topic Diskussionen 10 28.02.2005 22:31
Update auf PHP Version 4.3.10 Sablot XML gibt jetzt Fehler a tekknotrip PHP Tipps 2005 1 23.02.2005 16:14
fehler beim update Datenbanken 8 20.02.2005 16:04
Datenbankinhalt ausgeben, finde keinen Fehler PHP Tipps 2004-2 9 11.12.2004 15:21
Problem bei MYSQL / Update Resource #id Fehler PHP Tipps 2004 2 29.09.2004 13:09
Daten in Spalten ausgeben, wo ist mein fehler?? PHP Tipps 2004 5 28.09.2004 12:37
[Erledigt] UPDATE = NO Update aber kein fehler..dringend hilfe suchend Datenbanken 2 25.09.2004 16:28
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
[Erledigt] fehler nach suse update PHP-Fortgeschrittene 2 17.08.2004 17:56
kann ich bei Fehler auch MessageBox ausgeben !? PHP Tipps 2004 7 27.07.2004 19:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql update dann ausgeben, prüfen, ob mysql update ohne fehler, php script kontodaten prüfen, update set where knjizba, if im update, sql php update überprüfen, update set leer, php mysql update wenn leer, php wenn fehler dann, if sql ist lehr dann, php formular überprüfen und fehler ausgeben, php wenn benutzer vorhanden dann fehlermeldung, php code kontonummer auf korrektheit prüfen, if php update set from, php wenn leer dann sonst ausgeben, mysql update set wenn 1 dann 0 und wenn 0 dann 1, php zuerst auf null setzen und dann updaten

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:36 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum