Forum
Tipps
News
Menu-Icon

PHP + mysql Problem

Hallo,

ich hab ein kleines - aber sehr ärgerliches Problem mit ner DB-Query...
Also ich hab nen Memberbereich, und möchte beim einloggen einen Zähler (Anzahl bisheriger Besuche) hochzählen. Das Problem ist, der zählt nicht um EINS hoch, sondern um ZWEI. Und ich hab keinen blassen wieso...
Ich hab das Teil (Skript) jetzt bis in alle Einzelteile auseinandergenommen, und das auf eine Query eingekreist.

$alt = @mysql_result(@mysql_query("SELECT anzahl_besuche FROM users WHERE session='". session_id()."'"),0);  
//in $alt steht z.B. 14

$alt = $alt + 1;
//dementsprechend hat $alt den Wert 15

@mysql_query("UPDATE users SET anzahl_besuche=".$alt." WHERE session='". session_id()."'");
//in die DB wird der Wert 16 geschrieben.

übrigens...
@mysql_query("UPDATE users SET anzahl_besuche=anzahl_besuche+1 WHERE session='". session_id()."'");
ergibt das gleiche Ergebnis.
Mehr mache ich nicht.

Hat jemand schonmal so'n Fehler gehabt? Das Datenbankfeld ist ein ganz normales INT(11) ohne jede Zusätze. Mein letzter Versuch wäre jetzt noch, einfach das DB-Feld löschen und neu anlegen, in der Hoffnung da is was schiefgegangen. Aber das kanns ja auch net sein...

Mario 8)


Antworten zu PHP + mysql Problem:

hallo,

so sollte es gehen:

require('config.php');
$sql = ("SELECT anzahl_besuche FROM users WHERE session='". session_id()."'",0);  
$result = mysql_query($sql) OR die(mysql_error());    

                           
if(mysql_num_rows($result)) {      
   while($row = mysql_fetch_assoc($result)) {
      $alt = $row['anzahl_besuche'];
                                                                                     
        }
}
$neu = $alt + 1;
$sql = ("UPDATE users SET anzahl_besuche='$neu' WHERE session='". session_id()."'");
$result = mysql_query($sql);

ist zwar etwas umgeschrieben, macht seine sache jedoch hervorragend  ;)

pascal

« Letzte Änderung: 30.11.03, 11:23:39 von Pascal »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Habt ihr wirklich so richtig ordentlich Ahnung mit MySQL? Ich hab da ein paar Fragen... :-)

nico

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

*lool* nö, aber wer hat das schon... bin ja hauptberuflich weder als PHP noch als MySQL Programmierer tätig. Deshalb vertraue ich jetzt ma darauf, dass Du (ihr) mit eurer Firma da, mir mal helfen könnt. Und vor allem, was würdeste an dem Code verbessern? ???

Also ich habs gestern noch aufgegeben, Pascals Lösung ist ja in etwa die gleiche, der erhöht auch um 2. Irgendwie muss der das alles 2 mal aufrufen, ich weiß aber nicht wieso. Weil wenn er das 2 mal ausführt, müsste er ja auch nen echo-Befehl, den ich dahinter Testweise ausgebe 2 mal ausgeben, macht er aber nicht. Und die gleiche Zeile nur mit nem anderen Zähler funktioniert auf einer anderen Script seite einwandfrei.
Mehr Code hab ich in dieser Seite hier nicht drin. Also drüber wird noch die Session-ID erzeugt, und darüber folgt noch eine Abfrage:
if($_REQUEST['action']=="login"){ ...


Mario 8)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo |

Finde die Sache auch recht merkwürdig, das Script sieht ja doch fehlerfrei aus.
Hast du für das Datenbankfeld zufällig auto_increment definiert? Das könnte evtl. das doppelte hochzählen erklären.

greez 8)
JoSsiF

komisch, bei mir hatte das ganze testweise funktioniert.
und @nico, nein so wirklich ahnung hab ich von mysql nicht, aber es reicht noch für das übliche aus ;)

gruß pascal


« PhpBilder auf der hp werden nicht angezeigt! »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Zwei Faktor Authentifizierung
Auch "Zwei Faktor Autorisierung" oder "Zwei-Faktor-Authentisierung" genannt: Siehe 2FA...

Set Top Box
Als Set-top-Box, englisch für Draufstellkasten oder Beistellgerät, wird ein Spezialisierter Grafik- und Kommunikationscomputer bezeichnet, den man an den Fernse...

Update
Als Update bezeichnet man eine aktualisierte Version einer bereits besessenen Software, die registrierte Anwender meist zu einem Bruchteil des Preises des ursprüngli...