kostenloser Webspace werbefrei: lima-city


Alle DB-Einträge zählen inkl. Updates

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Guten Abend Leute,

    man glaubt es kaum, aber ich brauche mal wieder einen Tipp
    Ich möchte die Einträge in einer DB-Tabelle Zählen, aber nicht nur die vorhandenen sondern auch die Updates die eingetragen werden.

    Die Einträge werden aus 2 unterschiedlichen Bereichen eingetragen also 2 Dateien mit nem insert zur gleichen DB-Tabelle.
    Einmal aus einem Java Script heraus und einmal aus einem „manuellem Bereich“.
    Liegt ein Eintrag schon vor wird ein Update durchgeführt und genau diese Einträge möchte ich mitzählen.

    Ich hoffe man versteht es, das Ganze Prinzip dahinter würde jetzt den Rahmen sprengen.

    Gibt es da eine Möglichkeit? Das Thema "DB-Einträge Zählen" über Google erweist sich als sehr Zähflüssig da überall erklärt wird wie man die vorhandenen Einträge zählt.

    Bin über jeden Tipp dankbar ich steh da gerade total auf dem Schlauch oder stell mich wie immer zu doof an.

    Schönen Abend noch.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich denke, das Einzige, was Du da machen kannst, ist immer einen weiteren Eintrag in einer Datei oder vielleicht auch in einer Datenbank hochzählen, wenn Du bestimmte Befehle in der Datenbank ausführst.
    So kannst Du natürlich nachträglich nichts mehr erreichen, aber das kannst Du meiner Meinung nach auch vergessen, weil nirgends gespeichert wird, wie die Datenzeilen irgendwann mal aussahen, sondern nur der aktuelle Stand.

    Das heißt, Du musst immer, wenn Du einen INSERT oder ein UPDATE ausführst, auch einen Zähler inkrementieren, der Dir dann als Wert die Anzahl der ausgeführten Kommandos liefert.
  4. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    tobiworlds schrieb:So kannst Du natürlich nachträglich nichts mehr erreichen, aber das kannst Du meiner Meinung nach auch vergessen, weil nirgends gespeichert wird, wie die Datenzeilen irgendwann mal aussahen, sondern nur der aktuelle Stand.
    Ja das ist klar, ich möchte es nur für die, die noch folgen.


    tobiworlds schrieb:Das heißt, Du musst immer, wenn Du einen INSERT oder ein UPDATE ausführst, auch einen Zähler inkrementieren, der Dir dann als Wert die Anzahl der ausgeführten Kommandos liefert.
    Das klingt nach dem was ich erreichen möchte, aber wo setze ich da an?

    Wenn ich das richtig verstehe, muss ich schon in der jeweiligen Datei mit dem insert, vor dem Eintragen, den "aktuellen Counterstand" abrufen, diesen +1 geben und als aktuellen Counter speichern.

    Dazu müsste ich eine weitere Tabelle erstellen, welche die Counterstände enthält, richtig :confused:

    So beim schreiben klingt es jetzt gerade ganz gut als Grundidee.
  5. Je nach Anwendungsfall könnte es auch leichter/sinnvoller sein, den Counter in einer txt-Datei zu speichern, aber wahrscheinlich ist für Dich die Datenbank-Variante besser geeignet.

    Wenn Du jeden Befehl (INSERT, UPDATE) genau dokumentieren willst, zum Beispiel mit Datum oder genauem Query, solltest Du auf jeden Fall eine neue Tabelle nutzen; falls Du aber nur einen Zähler erhöhen willst, kannst Du das auch in einer Settings-Tabelle oder so machen.
  6. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Ich möchte einfach nur einen Counter der Zählt. Datum oder sonstiges brauch ich nicht. Geht wirklich nur um die Menge die da so reinkommt. hätte gern mal ne Übersicht dafür für Statistiken.

    Wenn das mit einer txt geht klingt das ja noch einfacher als meine Idee.
  7. aff3m1tw4ff3 schrieb:
    Ich möchte die Einträge in einer DB-Tabelle Zählen, aber nicht nur die vorhandenen sondern auch die Updates die eingetragen werden.

    Im Gegensatz zu alten dBase-DBs speichert MySQL keine Historie der Updates.
    Das einfachste wäre, jedem Eintrag (jeder Zeile!) in einer Tabelle ein zusätzliches Feld hinzuzufügen, dessen Wert bei jedem Update des Datensatzes hochgezählt wird.
    Für das gewünschte Ergebnis reicht dann die Abfrage der Summe der Inhalte dieser Spalte.

    Beitrag zuletzt geändert: 10.11.2012 0:37:22 von fatfreddy
  8. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Das ist schon viel zu viel.
    Mir reicht es zu wissen wie oft die Einträge einer Tabelle zusammen erneuert wurden, mehr will ich nicht wissen. Ich brauche auch nicht den genauen wert aus jeder Spalte. Alle zusammen reichen.

    Quasi:

    In DB-Tabelle "Berlin" sind 500 Einträge erzeugt worden inkl Updates . Nicht mehr.

    Beitrag zuletzt geändert: 10.11.2012 0:33:29 von aff3m1tw4ff3
  9. aff3m1tw4ff3 schrieb:
    Das ist schon viel zu viel.

    Hä?

    In DB-Tabelle "Berlin" sind 500 Einträge erzeugt worden inkl Updates . Nicht mehr.

    Genau das könntest Du mit meinem Vorschlag erreichen. :wink:
    Ein Update erzeugt keine Zeile, sondern ändert sie. Wenn Du also die Updates mitzählen willst, mußt Du sie auch irgendwo protokollieren.

    Beitrag zuletzt geändert: 10.11.2012 0:36:29 von fatfreddy
  10. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Morgen,

    jetzt verstehe ich auch was Du meinst, war wohl gestern doch schon zu spät für mich.

    Gibt es denn ein Funktion in mysql mit der die Spalte dann automatisch weiter nach oben zählt, oder muss
    ich das dann wie bei der Idee oben, schon beim den "insert´s" ansetzen und dort hochzählen?

    Sorry wenn ich mich da gerade etwas glatt anstelle,
    genau an dieser Stelle stehe ich ja auf dem Schlauch, ich komm nicht drauf wo ich am besten ansetze?

  11. Du müsstest dann IN Deinem UPDATE das entsprechende Feld "counter" mit ändern und um eins erhöhen:
    UPDATE images SET counter=counter+1 WHERE image_id=15
  12. Der Befehl ist fast richtig.Korrekt sollte es so aussehen
    UPDATE tabelle SET zelle=zelle+'1'
  13. Da ich davon ausgegangen bin, dass es sich um eine Integer-Spalte handelt, ist meins eigentlich auch korrekt, aber sicherer ist auf jeden Fall Deins :wink:
  14. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    music-world schrieb:
    Der Befehl ist fast richtig.Korrekt sollte es so aussehen
    UPDATE tabelle SET zelle=zelle+'1'


    So habe ich es auch probiert, hinbekommen habe ich aber leider nicht.
    Der Counter wollte einfach nicht Zählen. Am Ende habe ich mich jetzt für die Variante über PHP in einer .txt Datei hochzählen entschieden, ich weiß das ist nicht die schönste Lösung, aber es läuft erst mal.

    Das hatte ich in der DB-Tabelle probiert, egal was ich gemacht habe, entweder wurden keine Werte eingetragen oder es wurde einfach nicht hoch gezählt in der Spalte count_bln (integer).

    INSERT INTO
    `kw_veri_berlin`
    (name, gangid, stadt, ip, count_bln)
    VALUES
    ('$name', '$gangid', '$stadt', '$ip')
    ON DUPLICATE KEY UPDATE name = '$name', gangid = '$gangid', ip = '$ip', count_bln=count_bln+'1']";





    Gelöst habe ich es am Ende nun so, immer wenn ein Wert erfolgreich gesendet wird
    zähle ich in einer .txt Datei hoch mit PHP.

    <?php
    if(!file_exists("count_berlin_auto.txt")){ //Wenn die Datei noch nicht existiert
     $counter=fopen("count_berlin_auto.txt", "a"); //wird sie angelegt und "geöffnet" (a)
    }
    else {//Wenn sie existiert
     $counter=fopen("count_berlin_auto.txt", "r+"); //wird sie "geöffnet" (r+)
    }
    $aufruf=fgets($counter,100); //speichert den aktuellen Wert aus der Datei in $aufruf
    $aufruf=$aufruf+1; //erhöht den "Kontostand" um 1
    rewind($counter); //Dateizeiger auf das erste Byte der Datei setzen
    fputs($counter,$aufruf); //Wert von $aufruf in der Datei speichern
    fclose($counter); //Datei schließen
    ?>




    Beitrag zuletzt geändert: 14.11.2012 10:39:59 von aff3m1tw4ff3
  15. Problematisch wird es halt, wenn mehrere Anfragen an die Datenbank gleichzeitig gestellt werden und somit mehrere Skripte die Datei bearbeiten wollen...Da wäre die Datenbank-Lösung besser geeignet.
    Poste doch mal Deinen nicht funktionierenden Code.

    Beitrag zuletzt geändert: 14.11.2012 16:52:12 von tobiworlds
  16. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Also der letzte Versuch, der zumindest die Werte übertragen hat, war der unten.
    Da habe ich nur im
    ON DUPLICATE KEY UPDATE
    am Ende den Eintrag
    count_muenchen = 'count_muenchen+'1''
    hinzugefügt. In der DB-Tabelle ist eine Spalte mit dem Namen „count_muenchen“ als integer,(10),NULL angelegt.

    Es werden alle Einträge gemacht bis auf die Spalte
    count_muenchen
    halt.

    // Starte verbindung
     $dbverbindung = mysql_connect ($host, $user, $password);
    
    // Datenbank wählen
    mysql_select_db($dbname,$dbverbindung) or die(mysql_error());
    
    // Start Prüfung durch mysql_real_escape_string
    $kw_name = mysql_real_escape_string($_POST['kw_name'], $dbverbindung);
    $kw_wert = mysql_real_escape_string($_POST['kw_wert'], $dbverbindung); 
    $kw_att = mysql_real_escape_string($_POST['kw_att'], $dbverbindung); 
    $kw_def = mysql_real_escape_string($_POST['kw_def'], $dbverbindung); 
    $kw_gangid = mysql_real_escape_string($_POST['kw_gangid'], $dbverbindung); 
    $kw_stadt = mysql_real_escape_string($_POST['kw_stadt'], $dbverbindung); 
    $datum = mysql_real_escape_string($_POST['datum'], $dbverbindung);  
    $ip = mysql_real_escape_string($_POST['ip'], $dbverbindung); 
    $sendeart = mysql_real_escape_string($_POST['kw_sendeart'], $dbverbindung); 
    $wut = mysql_real_escape_string($_POST['wut'], $dbverbindung); 
    $boost = mysql_real_escape_string($_POST['boost'], $dbverbindung); 
    $vali = mysql_real_escape_string($_POST['vali'], $dbverbindung); 
     
     // DB Einträge erzeugen
    $query = "
      INSERT INTO
        `$tabelle`
        (kw_name, kw_wert, kw_att, kw_def, kw_gangid, kw_stadt, date, ip, kw_sendeart, wut, boost, vali)
      VALUES
        ('$kw_name', '$kw_wert', '$kw_att', '$kw_def', '$kw_gangid', '$kw_stadt', '$date', '$ip', '$sendeart', '$wut', '$boost', '$vali')
      ON DUPLICATE KEY UPDATE kw_name = '$kw_name', kw_wert = '$kw_wert', kw_att = '$kw_att', kw_def = '$kw_def', kw_gangid = '$kw_gangid', date = '$datum', ip = '$ip', kw_sendeart = '$sendeart', wut = '$wut', boost = '$boost', vali = '$kw_ausblenden', count_muenchen = 'count_muenchen+'1''";


    Hab es auch mal mit
    count_muenchen=count_muenchen+'1'
    probiert, aber auch ohne Erfolg.
    Sobald ich versuche die Spalte im
    INSERT
    Bereich anzusprechen, bekomme ich eine Fehlermeldung. War irgendwas mit
    Fehler in Zeile 1. Falls das Relevant sein sollte kann ich das gern nochmal nachschauen.

    So das war nun mein letzter Versuch, Der Fehler ist wahrscheinlich so billig das ich mich gleich ganz Doll schämen werde.




  17. aff3m1tw4ff3 schrieb:
    Also der letzte Versuch, der zumindest die Werte übertragen hat, war der unten.
    Da habe ich nur im
    ON DUPLICATE KEY UPDATE
    am Ende den Eintrag
    count_muenchen = 'count_muenchen+'1''
    hinzugefügt. In der DB-Tabelle ist eine Spalte mit dem Namen „count_muenchen“ als integer,(10),NULL angelegt.

    Es werden alle Einträge gemacht bis auf die Spalte
    count_muenchen
    halt.

    Hab es auch mal mit
    count_muenchen=count_muenchen+'1'
    probiert, aber auch ohne Erfolg.
    Sobald ich versuche die Spalte im
    INSERT
    Bereich anzusprechen, bekomme ich eine Fehlermeldung. War irgendwas mit
    Fehler in Zeile 1. Falls das Relevant sein sollte kann ich das gern nochmal nachschauen.

    So das war nun mein letzter Versuch, Der Fehler ist wahrscheinlich so billig das ich mich gleich ganz Doll schämen werde.



    Sekunde.. Versteh ich das richtig, count_muenchen ist ein INTEGER, trotzdem sagst du in deinem query, dass er
    count_muenchen = 'count_muenchen+'1''
    machen soll? Damit übergibst du ihm einen String, der da Lautet "count_muenchen+Zahl"... Also wenn, dann müsstest du das ohne den Namen machen:

    count_muenchen = '+1'
  18. Du musst das natürlich in UPDATE machen ;)
  19. tobiworlds schrieb:
    Du musst das natürlich in UPDATE machen ;)


    Hmm?
    ON DUPLICATE KEY UPDATE
    ... Muss das trotzdem in ein eigenen Query rein? :confused:


    //EDIT ok hab nicht nachgedacht, frage hat sich erledigt..

    Er hat recht du musst das in einen UPDATE rein packen, weil kein Wert kommt doppelt vor, du zählst den ja hoch ^^

    Beitrag zuletzt geändert: 14.11.2012 22:41:07 von kill-a-teddy
  20. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    So als erstes mal wie immer DANKE für die Hilfe. Warum ich da nun
    count_muenchen = 'count_muenchen+1'
    gemacht habe weiß ich auch nicht, jetzt wo ich es sehe frage ich mich das auch.

    Hab es jetzt mal mit
    count_muenchen = '+1'
    getestet und siehe da, der Zähler fängt an zu zählen.
    Das Ganze natürlich im
    UPDATE
    :thumb:

    Nun mag er aber nicht weiter zählen, beim erstellen einer Zeile ist der Count auf 0, beim ersten Update schaltet er weiter auf 1, ab dem zweiten Update bleibt der Zähler nun auf 1 stehen.

    Hat da noch jemand nen Tipp für mich?
  21. Ja, Du sagst der DB lediglich jedes Mal, dass der Wert auf "positiv 1" gesetzt werden soll. Versuch doch nochmal
    count_muenchen = count_muenchen+1
    ...
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!