PHP Datenbankeintrag nach Submit um 1 erhöhen

11/22/2012 12:46 DasPrinzip.#16
Quote:
Originally Posted by Cr4nkSt4r View Post
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
Also, ich hab die Methode mit der neuen Tabelle jetzt genommen.
Die Eintragung in die Tabelle funktioniert und die Ausgabe.

Jetzt muss ich aber dennoch Steini00 recht geben, dass das dann alles ziemlich mit der Leistung runtergehen wird. Es wir aber auch kein großes Projekt.
Trotzdem wäre mir die Methode, Pro User eine Spalte, und dort hochzählen lieber. Warum? Weil genau was Steini00 angesprochen hat, ich noch eine Top 5 machen will. Daher überlege ich mir das nochmal, teste und schreib dann falls mir irgendwelche Fehler unterlaufen.

Danke trotzdem nochmal an alle. Und macht euch nicht fertig, weil einer einen anderen Lösungsansatz hat, als der andere.
11/22/2012 12:46 Steini00#17
Ich würde hier gerne zwei deiner Punkte aufgreifen.

1. Ich habe dem TS genau das geschrieben, was du gesagt hast.

Quote:
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.
Für was er sich entscheidet, liegt an ihm und seinem Daten-/Tabellenumfang

2. Wenn er selber sagt, dass er gerade php/mysql lernt, warum dann nicht gleich richtig? Nur weil es nicht gleich 1.000 User sind, muss man es ja nicht umständlich/falsch machen. Nach der Lösung "Datensatz pro Bild" kannst du immer noch keine* Top oder ORDER BY machen.

*möglich ist es, aber nur sehr umständlich.
11/22/2012 13:05 boxxiebabee#18
Es kommt darauf an wofür man es braucht.
Sollte man die Bilder einzeln anzeigen können, oder sollte ein Titel / eine Beschreibung, zusätzliche Infos, oder ein Hit-Counter dabei sein dann sollte man die Methode mit der extra Tabelle verwenden.

Wird jedoch wirklich nur die Anzahl der hochgeladenen Bilder gebraucht, und sonst nichts, ja dann reicht ne zusätzliche Spalte in der User-Tabelle. Aber dann stellt sich mir die Frage, wofür sollte man das dann brauchen?
11/22/2012 13:08 DasPrinzip.#19
Quote:
Originally Posted by Cr4nkSt4r View Post
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
Danke dir nochmal, mit dem 1. Script klappt das perfekt. Mit dem 2. gehen die Werte in der Datenbank auf 9 und dann tut sich nichts mehr. ;)

Naja ich werde wohl noch etwas brauchen bis ich PHP mal richtig anwenden kann <.<
11/22/2012 13:10 Steini00#20
Quote:
Originally Posted by DasPrinzip. View Post
Danke dir nochmal, mit dem 1. Script klappt das perfekt. Mit dem 2. gehen die Werte in der Datenbank auf 9 und dann tut sich nichts mehr. ;)

Naja ich werde wohl noch etwas brauchen bis ich PHP mal richtig anwenden kann <.<
Welchen Wert hast du denn der Spalte gegeben? int(1)
11/22/2012 13:12 Zettabytes*#21
Quote:
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.
Lustig, habe bis dato immer gedacht das es mehrer möglichkeiten gibt und es nicht nur eine gibt die man benutzen kann.
11/22/2012 13:17 DasPrinzip.#22
Quote:
Originally Posted by Steini00 View Post
Welchen Wert hast du denn der Spalte gegeben? int(1)
int(20)
11/22/2012 13:18 Steini00#23
Quote:
Originally Posted by Zettabytes* View Post
Lustig, habe bis dato immer gedacht das es mehrer möglichkeiten gibt und es nicht nur eine gibt die man benutzen kann.
Ja, Möglichkeiten gibt es viele. Aber falsche Syntax ist falsche Syntax. Und hat nichts mit einer Möglichkeit zu tun :p

Quote:
Originally Posted by DasPrinzip. View Post
int(20)
Also dann sollte es eigentlich gehen. Zeig doch einfach nochmal deinen Code.
Ich habe es eben selber noch mal getestet mit int(2) und komme ohne Probleme über 10
11/22/2012 13:54 Cr4nkSt4r#24
Mach doch bitte mal folgendes:

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

echo 
"#1: ".var_dump($bilder)."<br />#2: ";

$bilder $bilder 1

echo 
var_dump($bilder)."<br />"
Aber wenn der erste Ansatz klappt, ist der 2. eig. auch egal, außer du willst mit dem Wert noch weiter herum spielen.

Und bez. der Top 5, kannst du auch mit der "nur eine Tabellen" Methode machen.

PHP Code:
$bilder mysql_query("SELECT `bilder` FROM `user` ORDER BY `bilder` DESC LIMIT 0,5");