|
You last visited: Today at 19:04
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.
11/21/2012, 21:45
|
#1
|
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 :/
|
|
|
11/21/2012, 21:50
|
#2
|
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
|
|
|
11/21/2012, 21:56
|
#3
|
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 -.-
|
|
|
11/21/2012, 22:01
|
#4
|
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';
|
|
|
11/21/2012, 22:06
|
#5
|
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
|
Quote:
Originally Posted by マルコ
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?
|
|
|
11/21/2012, 23:15
|
#6
|
elite*gold: 0
Join Date: Apr 2010
Posts: 1,352
Received Thanks: 788
|
bilder = bilder+`1` ?
|
|
|
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
|
|
|
11/22/2012, 09:03
|
#8
|
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
|
Quote:
Originally Posted by Steini00
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.
|
|
|
11/22/2012, 09:40
|
#9
|
elite*gold: 0
Join Date: Jun 2011
Posts: 30
Received Thanks: 3
|
Quote:
Originally Posted by DasPrinzip.
Erstmal danke dir für die Hilfe.
|
Ich helfe doch gerne
Quote:
Originally Posted by DasPrinzip.
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.
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.
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.
|
|
|
11/22/2012, 09:58
|
#10
|
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
|
|
|
11/22/2012, 10:16
|
#11
|
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
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
|
|
|
11/22/2012, 10:51
|
#12
|
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
|
Quote:
Originally Posted by boxxiebabee
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.
|
|
|
11/22/2012, 10:56
|
#13
|
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
|
|
|
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.
|
|
|
11/22/2012, 12:35
|
#15
|
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
|
|
|
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.
|
|