Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 19:04

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



PHP Datenbankeintrag nach Submit um 1 erhöhen

Discussion on PHP Datenbankeintrag nach Submit um 1 erhöhen within the Web Development forum part of the Coders Den category.

Closed Thread
 
Old   #1


 
DasPrinzip.'s Avatar
 
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
PHP Datenbankeintrag nach Submit um 1 erhöhen

Hallo liebe Community,

ich hab mich mit PHP noch nicht viel beschäftigt. Kann die Basics und so weiter aber komme einfach nicht auf ein passendes Script:

Wenn jemand den Submitbutton betätigt, wird er auf eine 2. Seite weitergeleitet. Dort soll der Datenbankeintrag des jeweiligen Nutzers um 1 erhöht werden. Ein kleines Schema:

Datenbanktabelle:

id | Username | Passwort | E-Mail | Nr.
1 | hans | md5 | ..@.. | 0

nachdem er den Submit Button klickt sollte es so aussehen:

id | Username | Passwort | E-Mail | Nr.
1 | hans | md5 | ..@.. | 1

Falls ihr versteht was ich meine.

Achso, ich weiß nicht ob das was zur Sache tut, aber der User ist mit einer Session angemeldet.

Vielen Dank schonmal für Antworten!

Und bitte nicht Hart zu mir sein :/
DasPrinzip. is offline  
Old 11/21/2012, 21:50   #2
 
.Mystic's Avatar
 
elite*gold: 0
Join Date: Oct 2012
Posts: 70
Received Thanks: 5
Ziehe dir den Script von vote4coins ist ein pub prg. für metin2 hp´s da ist es auch so in irgeneiner zeile das es um einensteigt oder du machst es nach dem vote prinzip immer wen er draufklickt halt als vote anlegen und deswegen steigt das mehr weis ich leider auch nicht weil ich php einlich nur zum questen nutze
.Mystic is offline  
Thanks
1 User
Old 11/21/2012, 21:56   #3


 
DasPrinzip.'s Avatar
 
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
Danke schomal.. Ich hab das jetzt so mal geschrieben:

PHP Code:
        $verbindung mysql_connect("localhost""***" "****")
            or die(
"Verbindung zur Datenbank konnte nicht hergestellt werden");
            
mysql_select_db("****") or die ("Datenbank konnte nicht ausgewählt werden");
            
$session $_SESSION['username'];    
            
mysql_query("UPDATE user SET bilder = 'bilder+1' WHERE username = '$session'" or die ('Fehlgeschlagen')); 
Aber da erhöht sich nichts -.-
DasPrinzip. is offline  
Old 11/21/2012, 22:01   #4

 
マルコ's Avatar
 
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
Code:
UPDATE user SET user.bilder = user.bilder + 1 WHERE user.username = '$session';
マルコ is offline  
Thanks
1 User
Old 11/21/2012, 22:06   #5


 
DasPrinzip.'s Avatar
 
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
Quote:
Originally Posted by マルコ View Post
Code:
UPDATE user SET user.bilder = user.bilder + 1 WHERE user.username = '$session';
Klappt trotzdem nicht.. :/

`bilder` int(20) NOT NULL,

Das ist der Eintrag. Muss ich da was an der Tabelle ändern?

Wenn ich den Username der Session ausgebe, steht der Username da. Also wählt er den richtigen ja aus.
An was kann das noch liegen?
DasPrinzip. is offline  
Old 11/21/2012, 23:15   #6
 
elite*gold: 0
Join Date: Apr 2010
Posts: 1,352
Received Thanks: 788
bilder = bilder+`1` ?
yym3 is offline  
Old 11/22/2012, 03:30   #7
 
elite*gold: 0
Join Date: Jun 2011
Posts: 30
Received Thanks: 3
Ich kenne da auch so ein Spiele bei dem die Kinder herum hüpfen und raten welche Türe ihnen das Gesicht verbrennen könnte

Man kann während UPDATE auch ein REPLACE verwenden.

PHP Code:
mysql_query("UPDATE user SET bilder = REPLACE(bilder, bilder,bilder+1) WHERE username = $session"); 
Alles Andere würde wenig Sinn machen.

PS:
Quote:
mysql_query("UPDATE user SET bilder = 'bilder+1' WHERE username = '$session'" or die ('Fehlgeschlagen'));
Wer solche Zeilen schreibt, hat entweder keine Ahnung von PHP, ErrorReporting oder beidem.
versuch es doch mal mit
PHP Code:
mysql_query($parameter) OR DIE ($paramter
davon abgesehen ist eine Fehlerausgabe erst dann Sinnvoll, wenn sie dir auch einen Fehler ausgibt. Das würde dir dann Stundenlanges rätseln ersparen. Und eine richtige Fehlerausgabe wäre ein
PHP Code:
OR DIE ( '['.mysql_errno().'] ->  '.mysql_error()); 
an der Stelle von Fehlgeschlagen
Steini00 is offline  
Thanks
1 User
Old 11/22/2012, 09:03   #8


 
DasPrinzip.'s Avatar
 
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
Quote:
Originally Posted by Steini00 View Post
Ich kenne da auch so ein Spiele bei dem die Kinder herum hüpfen und raten welche Türe ihnen das Gesicht verbrennen könnte

Man kann während UPDATE auch ein REPLACE verwenden.

PHP Code:
mysql_query("UPDATE user SET bilder = REPLACE(bilder, bilder,bilder+1) WHERE username = $session"); 
Alles Andere würde wenig Sinn machen.

PS:


Wer solche Zeilen schreibt, hat entweder keine Ahnung von PHP, ErrorReporting oder beidem.
versuch es doch mal mit
PHP Code:
mysql_query($parameter) OR DIE ($paramter
davon abgesehen ist eine Fehlerausgabe erst dann Sinnvoll, wenn sie dir auch einen Fehler ausgibt. Das würde dir dann Stundenlanges rätseln ersparen. Und eine richtige Fehlerausgabe wäre ein
PHP Code:
OR DIE ( '['.mysql_errno().'] ->  '.mysql_error()); 
an der Stelle von Fehlgeschlagen
Erstmal danke dir für die Hilfe.
Mal eine kleine Info an dich: Was gibt dir das Recht einfach zu sagen, weil jemand das so gelernt hat, dass derjenige keine Ahnung von PHP hat?
Ich denke niemand hier ist perfekt, und nach 6 Stunden Code schreiben, geht die Konzentration ein wenig verloren.
2. Lern ich PHP seit Neuestem erst. Konntest du am Anfang alles perfekt?

Tut mir leid, dass ich das schreiben musste, aber sowas kann bitte nicht sein.

Trotzdem nochmal danke für die Hilfestellung. Ich werde es jetzt mal ausprobieren.
DasPrinzip. is offline  
Old 11/22/2012, 09:40   #9
 
elite*gold: 0
Join Date: Jun 2011
Posts: 30
Received Thanks: 3
Quote:
Originally Posted by DasPrinzip. View Post
Erstmal danke dir für die Hilfe.
Ich helfe doch gerne
Quote:
Originally Posted by DasPrinzip. View Post
Mal eine kleine Info an dich: Was gibt dir das Recht einfach zu sagen, weil jemand das so gelernt hat, dass derjenige keine Ahnung von PHP hat?
Du kannst das so nicht gelernt haben, weil das so nicht funktioniert. Es geht hierbei nicht um Schönheitsfehler oder falsche Schreibform. Sondern um ganz grobe Fehler, die so auf keinen Fall funktionieren können.
Quote:
Originally Posted by DasPrinzip. View Post
Ich denke niemand hier ist perfekt, und nach 6 Stunden Code schreiben, geht die Konzentration ein wenig verloren.
Ich arbeite täglich mehr als 12 Stunden am PC und mir ist klar, dass man da mal Fehler machen kann. Aber sowas ist einfach kein "hab mich verschrieben"-Fehler sondern ein ganz klarer "mir fehlt die Erfahrung"-Fehler.

Quote:
Originally Posted by DasPrinzip. View Post
2. Lern ich PHP seit Neuestem erst. Konntest du am Anfang alles perfekt?

Tut mir leid, dass ich das schreiben musste, aber sowas kann bitte nicht sein.

Trotzdem nochmal danke für die Hilfestellung. Ich werde es jetzt mal ausprobieren.
Versteh ich jetzt nicht... Also entweder du kannst PHP oder ich hatte Recht mit meiner Aussagen, dass du keine Ahnung von PHP und ErrorReporting hast.

Du solltest dir wirklich einen besseren Editor zulegen. Dein Syntax-Highlighter hätte dir einen solchen Fehler knall rot um die Augen schleudern müssen.
Steini00 is offline  
Old 11/22/2012, 09:58   #10


 
DasPrinzip.'s Avatar
 
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
Quote:
[1054] -> Unknown column '***' in 'where clause'
Der Fehler kommt dabei raus.. '***' steht wohlmöglich der Session Username
DasPrinzip. is offline  
Old 11/22/2012, 10:16   #11

 
boxxiebabee's Avatar
 
elite*gold: 0
Join Date: May 2008
Posts: 1,222
Received Thanks: 500
Was willst denn eig. erreichen? Wieviele Bilder der User hochgeladen hat?
Wenn ja, dann mach ne neue Table und für jedes Bild nen neuen Eintrag, dazu seine user id eintragen, und über COUNT(*) dann die Anzahl ermittlen.


Quote:
Originally Posted by Steini00 View Post
Ich kenne da auch so ein Spiele bei dem die Kinder herum hüpfen und raten welche Türe ihnen das Gesicht verbrennen könnte

Man kann während UPDATE auch ein REPLACE verwenden.

PHP Code:
mysql_query("UPDATE user SET bilder = REPLACE(bilder, bilder,bilder+1) WHERE username = $session"); 
Alles Andere würde wenig Sinn machen.

PS:


Wer solche Zeilen schreibt, hat entweder keine Ahnung von PHP, ErrorReporting oder beidem.
versuch es doch mal mit
PHP Code:
mysql_query($parameter) OR DIE ($paramter
davon abgesehen ist eine Fehlerausgabe erst dann Sinnvoll, wenn sie dir auch einen Fehler ausgibt. Das würde dir dann Stundenlanges rätseln ersparen. Und eine richtige Fehlerausgabe wäre ein
PHP Code:
OR DIE ( '['.mysql_errno().'] ->  '.mysql_error()); 
an der Stelle von Fehlgeschlagen
Wer im Glashaus sitzt sollte nicht mit Steinen werfen. Da Fehlen die Hochkommas bei dir
boxxiebabee is offline  
Thanks
1 User
Old 11/22/2012, 10:51   #12


 
DasPrinzip.'s Avatar
 
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
Quote:
Originally Posted by boxxiebabee View Post
Was willst denn eig. erreichen? Wieviele Bilder der User hochgeladen hat?
Wenn ja, dann mach ne neue Table und für jedes Bild nen neuen Eintrag, dazu seine user id eintragen, und über COUNT(*) dann die Anzahl ermittlen.




Wer im Glashaus sitzt sollte nicht mit Steinen werfen. Da Fehlen die Hochkommas bei dir
Schön das du mitdenkst und wusstest was ich machen wollte Hat so super funktioniert
Ich lebe eher immer gerne auf einer Datenbank .. Aber naja 2 Schaden auch nie

Problem erledigt.
DasPrinzip. is offline  
Old 11/22/2012, 10:56   #13


 
Cr4nkSt4r's Avatar
 
elite*gold: 74
Join Date: Oct 2008
Posts: 619
Received Thanks: 288
Quote:
[1054] -> Unknown column '***' in 'where clause'
Der Fehler kommt dabei raus.. '***' steht wohlmöglich der Session Username
Wieso wohl möglich?
Du musst schon genau wissen und sagen was dort steht. Wie soll man dir sonst helfen?


Gibt viele Varianten die man testen kann, alles schön einklammern damit auch nie SQL bei einem Wert denken könne es gehöre zu SQL o.Ä., den vorherigen Wert auslesen und abändern, dann abspeichern, vernünftige Fehler ausgeben lassen und nicht zensieren -.-, und und und...



PHP Code:
mysql_query("UPDATE `user` SET `bilder` = bilder + 1 WHERE `username` = '".$session."'"); 

PHP Code:
$bilder mysql_query("SELECT `bilder` FROM `user` WHERE `username` = '".$session."'");

$bilder $bilder 1;

mysql_query("UPDATE `user` SET `bilder` = ".$bilder." WHERE `username` = '".$session."'"); 


~ regards
Cr4nkSt4r is offline  
Old 11/22/2012, 12:26   #14
 
elite*gold: 0
Join Date: Jun 2011
Posts: 30
Received Thanks: 3
Zum Thema Glashaus und Steine - Ich habe es nicht als Ziel gesehen, eine fertige Lösung zu präsentieren, sondern wollte mit meinem Beispiel lediglich einen Lösungsansatz bieten.
PHP Code:
mysql_query($parameter) OR DIE ($paramter
Auch das hier ist nur ein Ansatz und kann so nicht verwendet werden.

Zum Thema extra Tabelle und COUNT - Mir entzieht sich der Lösungsansatz von boxxiebabee jeglicher Logick. (Bitte nicht persönlich nehmen)
Wenn du mit SELECT Spaltenname an Stelle von SELECT * arbeitest, stört es eigentlich nicht, wenn du es sogar in der selben Tabelle hast. Du kannst es aber auch gerne in einer extra Tabelle machen. Auf jeden Fall würde ich dir aber von 1 Eintrag pro Bild abraten. Und somit auch von COUNT. Ich kann dir auch an einem kleinen Rechenbeispiel zeigen warum.

Situation: 1.000 User laden täglich ein Bild hoch. Dauer - 3 Jahre
Somit hast du 1000 x 1 x 3 x 365 = ~ 1.000.000 Bilder
Das entspricht etwa 1.000 Bilder pro User.
Weiter hat es zur Folge, dass deine Tabelle 1 Mio Datensätze hat. Ein COUNT müsste also für jeden Aufruf, bei dem die Bilderanzahl eines Users abgefragt werden, 1 Mio Datensätze durchsuchen und auf 1.000 hochzählen.
Ein weiterer Punkt wäre noch etwas wie die "Top 5". Hast du mal daran gedacht, wie ein Script aussehen könnte, das dir die Top 5 User mit den meisten Bildern anzeigt? Am Ende läuft es dann darauf hinaus, dass du 1.000 User durchzählen musst, was 1.000 x 1.000.000 Datensätze bedeutet.

Mein Ansatz:
Neue Tabelle - Ein Eintrag pro User (nicht pro Bild) - hoch zählen
Warum?
1. Die Tabelle hat somit 1.000 statt 1 Mio Datensätze
2. Abfrage nach Bildermenge läuft schneller und verbraucht weniger Leistung
3. Sortierfunktion (Order BY Bilderanzahl oder oder BY Username/UserID)
4. Top 5 Funktion ganz einfach durch ORDER BY und LIMIT 5

Ich kenne dein Projekt nicht, habe keine Ahnung wie viele User du dir in 10 Jahren anlachen wirst und wie viele Bilder es werden. Aber ich halte meinen Lösungsweg für deutlich Sinnvoller, da er einfach flexibler und performanter ist.
Steini00 is offline  
Old 11/22/2012, 12:35   #15


 
Cr4nkSt4r's Avatar
 
elite*gold: 74
Join Date: Oct 2008
Posts: 619
Received Thanks: 288
Für ORDER BY und LIMIT 5 etc. brauchst man dennoch nicht zwangsweise eine neue Tabelle, er kann einfach die behalten die er hat.
Ich denke nicht dass dort irgendwann so viele User angemeldet sein werden oder das Script "nutzen" dass es dann dank Performance nicht mehr zügig weiter geht. Da braucht er schon ne Menge User bis es an fängt langsam zu werden.
Außerdem wären nach deinem Vorhaben auch wieder zwei Abfragen notwendig bzw. eine JOIN Abfrage um an alle Daten zu kommen wenn man sie denn möchte.
Nimmt sich bei so wenig Spalten eig. nichts, egal wie man es macht.

Ich für meinen Teil würde lieber sehen wie es nun um den Fehler steht und ob der TS schon weiter gekommen ist ohne die COUNT Methode zu nutzen.


~ regards
Cr4nkSt4r is offline  
Closed Thread


Similar Threads Similar Threads
[Frage] Baulimit nach oben erhöhen ?
01/21/2013 - Minecraft - 12 Replies
Hallo, Ich habe mir gestern einen Server bei Nitrado gekauft und wollte mal fragen wie man dort die max. Bauhöhe (nach oben) verändern kann. Das jetzt unendlich nach oben bauen kann ohne irgendeine Grenze. Hoffe mir kann da jemand weiterhelfen, lg Bones
Datenbankeintrag
08/17/2011 - Flyff Private Server - 8 Replies
Hallo Ihr!! Ich habe ein Problemchen ... und zwar ich versuche eine neue waffenreihe zu machen, alle datein soweit bearbeitet doch ich weiß nich wie ich die jetzt in die Datenbank eintrage und anschließend "batche". Wenn mir einer helfen könnte wäre super danke :D Freundliche Grüße
Ram nach den Einstellungen erhöhen
11/14/2010 - Metin2 Private Server - 1 Replies
Hallo zusammen, ich will meinen Server bearbeiten aber wenig ram geben, damit ich noch sachen am PC machen kann. Kann ich nachdem ich den Server bearbeitet den RAM wieder Vergrößern ? MfG



All times are GMT +1. The time now is 19:04.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.