Ergebnis 1 bis 15 von 18

Thema: MySQL Frage

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registriert seit
    27.07.2007
    Beiträge
    225
    aso,

    vb code

    strSQL = "UPDATE fms_fz SET status_fz='" & strSimple(6) & "', tki='" & strSimple(9) & "', user='" & user & "' WHERE kennung='" & strSimple(1) & "'"

    ich hoffe, das du hier mit was anfangen kannst.

  2. #2
    Registriert seit
    28.11.2005
    Beiträge
    2.759
    Dieses Statement bearbeitet eine schon vorhandene Zeile, es fügt keine neue ein..

    Hast du die falsche Stelle erwischt? ;)

    Ich schau trotzdem mal mit dem Screenshot, ob ich nen "Einzeiler" gezaubert kriege..
    Der müsste übrigens in jeder Datenquelle laufen, sonst bringt es nichts..

    Gruss,
    Tim


    *EDIT* Bitte finde doch mal eine Zeile, in der "INSERT INTO" am Anfang steht ;)

    Sollte es (nicht unbedingt SQL-Standard) nur die UPDATE-Zeile geben, könntest
    du (in allen Datensendern) folgendes versuchen:

    Code:
    strSQL = "UPDATE `fms_fz` SET `status_fz`='" & strSimple(6) & "', `tki`='" & strSimple(9) & "', `user`='" & user & "' WHERE `kennung`='" & strSimple(1) & "' AND DATE_SUB( NOW( ), INTERVAL 15 SECOND) <= `timestamp`;"
    Zur Erklärung: Das Original-Statement hat einen "WHERE" Abschnitt, je nach Ergebnis
    dieses Abschnitts wird das UPDATE durchgeführt. Neben den fehlenden " ` " für Feld-
    Bezeichner habe ich am Ende des Originals den Zusatz "AND ..." angefügt. Im
    Zusatz wird die aktuelle Uhrzeit zum Zeitpunkt der Abfrage und "15 Sekunden" subtrahiert,
    also ein Zeitstempel "erzeugt", der 15 Sekunden vor der Abfrage lag. Diese Zeit wird
    mit dem Zeitstempel der aktuellen UPDATE-Reihe verglichen. Ist die Aussage (<=)
    wahr (und alle anderen WHERE-Expressions auch), wird das Update ausgeführt, ansonsten
    nicht. Da ich nur diese Zeitstempel-Abfrage angefügt habe, ist also das Ziel erreicht,
    einen Datenbankeintrag nur dann zu aktualsieren, wenn innerhalb der letzten 15 Sekunden
    keine andere Änderung derselben Kennung vorgenommen wurde.
    An sich passt das aber nicht, da ein "UPDATE"-Befehl einfach nicht passt für die Aufgabe,
    die hier geleistet werden soll (INSERT INTO) ..

    Naja, zumindest weisst du also jetzt, wie du "die letzten 15 Sekunden" abfragst ^^
    Geändert von Shinzon (12.07.2009 um 13:12 Uhr)
    --
    In a world without walls and fences, who needs Windows and Gates ??

    Meine private Webseite: http://www.db1jat.org

  3. #3
    Registriert seit
    01.08.2007
    Beiträge
    557
    du könntest das ganze auch mit dem MySQL Statement GROUP BY machen

    so habe ich das gelöst bei der Digitalalarmierung:

    "SELECT * FROM pocsag GROUP by ric,funktion,meldung,datum,uhrzeit ORDER BY id DESC"

  4. #4
    Registriert seit
    27.07.2007
    Beiträge
    225
    danke schön,

    gibt es keine möglichkeit wo ich einen befehl in der db eintragen kann der bei jeder aktualisierung die einträge überprüft?
    ich finde dass das einfacher wäre als die upload softwae anzugleichen.

    mfg

  5. #5
    Registriert seit
    01.08.2007
    Beiträge
    557
    die zeile die ich gepostet habe ist, wird beim abruf eingefügt, sprich in das Skript, über das du die datenbank abfragst

  6. #6
    Registriert seit
    27.07.2007
    Beiträge
    225
    aah, ok, danke

  7. #7
    Registriert seit
    27.07.2007
    Beiträge
    225
    uiuiui,

    kannst du mir helfen die zeile einzubinden?

    das ist mein code

    $sql = 'SELECT date_format(h.timestamp, "%H:%i:%s") as timestamp, date_format(h.timestamp, "%d.%m.%Y") as datum, h.kennung, h.ID, h.tki, h.status, h.richtung, f.fahrzeug, f.rufname '
    .'FROM '.$tbl_fms_hist.' h LEFT JOIN '.$tbl_fms_fz.' f ON(h.kennung=f.kennung) '
    .'ORDER BY h.timestamp DESC '
    .'LIMIT '.(isset($limitfms) ? $limitfms : 100);

    mfg

  8. #8
    Registriert seit
    14.12.2004
    Beiträge
    930
    Hallo,

    Zitat Zitat von Firefighter Heiti Beitrag anzeigen
    du könntest das ganze auch mit dem MySQL Statement GROUP BY machen

    so habe ich das gelöst bei der Digitalalarmierung:
    hmm, das filtert bei mir leider keine doppelten Meldungen heraus.

    Kannst du mir mal deinen kompletten Quelltext zur Verfügung stellen?

    Gruß,
    Sebastian

  9. #9
    Registriert seit
    01.08.2007
    Beiträge
    557
    Hoffe ich kann mit dem Code ein bisschen verwirrung stiften rausnehmen
    PHP-Code:
    <?php header('Content-Type: text/html; charset=iso-8859-1'); ?>
    <?php 
    include("aufschluesselung.php");
    $timestamp time();
    $Verzögerung $timestamp  60*2;
    $Verzögerung date("H:i:s",$Verzögerung);
    ?>
    <div id="content">
    <div class="feature">
    <h3 align="center">Die letzten 10 Alarmierungen</h3>
          <table width="100%" align="center" border="0" cellpadding="7" cellspacing="5">
        <tr bgcolor="#cc0000">
          <td width="70"><b><font color="#FFFFFF">Datum:</font></b></td>
          <td width="70"><b><font color="#FFFFFF">Uhrzeit:</font></b></td>
          <td width="155"><b><font color="#FFFFFF">Alarmiert:</font></b></td>
          <td width="100"><b><font color="#FFFFFF">Ort:</font></b></td>
          <td width="150"><b><font color="#FFFFFF">Straße:</font></b></td>
          <td width="181"><b><font color="#FFFFFF">Stichwort:</font></b></td>
          <td width="60"><b><font color="#FFFFFF">Karte:</font></b></td>
        </tr>

    <?php
          
    include("config.php");
          
    $abfrage "SELECT * FROM pocsag GROUP by ric,meldung,funktion,datum,uhrzeit ORDER BY id DESC LIMIT 10";
          
    $ergebnis mysql_query($abfrage);
          while(
    $row mysql_fetch_object($ergebnis))
          {
          
    // Initialisieren eines Strings, welches als Quellstring genutzt werden soll
          
    $quellstring "$row->meldung";
          
    // String mit einem Leerzeichen als Trennerzeichen aufteilen
          
    $woerter explode (','$quellstring);
          
    // Anzahl der Worte im Beispielsatz
          // echo 'Anzahl der Worte im String: ' . sizeof ($woerter) . '';
          // Inhalt des Arrays ausgeben
          //print_r ($woerter);
          // Über den Trenner maximal drei Elemente extrahieren
          // $ersten_drei = explode (' ', $quellstring, 5);
          // Und wieder das Ergebnis anzeigen
          // print_r ($ersten_drei);
            
    {
             if(
    $row->ric == 1234567 and $row->funktion == 1)
             {
             
    $return ='RIC FUNKTION A';
             }
             elseif(
    $row->ric == 1234567 and $row->funktion == 2)
             {
             
    $return ='RIC FUNKTION B';
             }
             else
             {
             
    $return ="$row->ric";
             }
             echo 
    "
        <tr>
        <td align=\"left\">"
    .$row->datum."</td>
        <td align=\"left\">"
    .$row->uhrzeit."</td>
        <td align=\"left\">"
    .$return."</td>
        <td align=\"left\">"
    .strtr("$woerter[1]"$trans)."</td>
            <td align=\"left\">"
    .strtr("$woerter[2]"$trans)."</td>
            <td align=\"left\">"
    .strtr("$woerter[0]"$trans)."</td>
            <td align=\"center\"><a target=\"_blank\" href=\"http://maps.google.de/maps?f=q&source=s_q&hl=de&geocode=&q="
    .strtr("$woerter[2]"$trans)."+".strtr("$woerter[1]"$trans)."\">Zeige Ort</a></td>
      </tr>"
    ;
    }
    }
    ?>
    </table>
    </div>
    </div>
    Geändert von Firefighter Heiti (12.07.2009 um 22:24 Uhr) Grund: Ändern

  10. #10
    Registriert seit
    28.11.2005
    Beiträge
    2.759
    Moin..

    Naja, du gehst aber in deinem Code nicht von der Grundannahme aus, das mehrere
    Datenquellen evtl. Telegramme doppelt oder dreifach einfügen.

    Denn dazu wollte er eine Möglichkeit, die Einträge aus der Datenbank zu löschen.

    Die erste Variante, das er beim Einfügen der Daten aus den Datenquellen eingreift,
    wenn schon die gleichen Daten vorhanden sind, haben ihm nicht gefallen, eine andere
    Darstellung wird es vmtl. auch nicht.

    Jetzt aber mit nem Crontab-Skript anzukommen, wird ihm auch wieder nicht gefallen,
    aber was er will, das nach jedem Datenbank-Commit ein kleines Reinigungsskript aus-
    geführt wird.. na DAS will ich ihm nicht antun, dafür müsste er im besten Falle die
    Datenbank neu compilieren..

    Gruss,
    Tim
    --
    In a world without walls and fences, who needs Windows and Gates ??

    Meine private Webseite: http://www.db1jat.org

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •