php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.05.2009, 20:43  
Neuer Benutzer
 
Registriert seit: 02.05.2009
Beiträge: 5
marc_tobien befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Insert nur bei Änderung der Daten

Hallo
Ich hoffe das mir jemand bei meinem Problem helfen kann.
Ich schreibe hiermit alle paar Minuten Logdatein in eine MySQL Datenbank.
Zitat:
$con = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd);
if (!$con) {
die('Verbindung nicht möglich : ' . mysql_error());
}

$db_selected = mysql_select_db($mysqldb, $con);
if (!$db_selected) {
die ('Kann db nicht benutzen : ' . mysql_error());
}

$sql1 = "INSERT INTO {$table1} (id, {$fields}) VALUES ('',{$sqldata})";
mysql_query($sql1);

$table1 ist der Tabelname
$fields Array mit 20 Strings
$sqldata Array mit 20 Daten ( z.B. '10 AB FF e1 12 00 a9 67')

Die Datenbank ergänzt die Daten noch einen aktuellen Timestamp und eine fortlaufende ID Nummer automatisch.
So komme ich insgesamt auf 22 Felder welche ich fülle.

Die Datenbank läuft aber sehr schnell voll, da fast im Minutentakt die Daten dort abgelegt werden. Dieses ist wichtig um die Änderungen mit zu bekommen. Es gibt aber Zeiten, wo sich über Stunden nichts ändert, also habe ich mal eben über 60 doppelte Einträge.

Ich möchte, bevor ich die Werte in die Datenbank schreibe, erst einmal prüfen ob diese schon vorhanden . Sind die Werte identisch so verwerfe ich den Eintrag und prüfe eine Minute später das selbe noch einmal, solange bis eine Änderung eingetreten ist. Diese schreibe ich dann in die Datenbank.
Doch wie fange ich das am besten an.
Marc

Geändert von marc_tobien (02.05.2009 um 20:52 Uhr).
marc_tobien ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.05.2009, 21:14  
Benutzer
 
Registriert seit: 11.05.2008
Beiträge: 71
PHP-Kenntnisse:
Fortgeschritten
prestige
prestige eine Nachricht über ICQ schicken
Standard

Zitat:
Ich möchte, bevor ich die Werte in die Datenbank schreibe, erst einmal prüfen ob diese schon vorhanden . Sind die Werte identisch so verwerfe ich den Eintrag und prüfe eine Minute später das selbe noch einmal, solange bis eine Änderung eingetreten ist. Diese schreibe ich dann in die Datenbank.
Doch wie fange ich das am besten an.
So wie du es geschrieben hast :P.

Zuerst auslesen, dann entscheiden - verwerfen oder einfügen.

Wo liegt das Problem?

Wenn du weisst, wie man Daten einfügt, solltest du ja auch wissen, wie man Daten ausliest, nicht?

Nach dem auslesen fragst du einfach mit einer FOR-Klause ab, ob sich der Wert geändert hat...

Beispiel:
PHP-Code:
<?php

// neue Daten in einen array speichern
$var1 "bla";
$var2 "blabla";
$aendern 0;
$data = array($var1$var2)

// auslesen der Daten aus der DB --> $result = mysql_fetch_array(mysql_query($sql)) ist deine Ausgabe

// vergleich mit den neuen Daten x ist die anzahl an Variablen bzw. Felder die du überprüfen willst/musst.

for($i=0$i<$i++)
{
    if(
$data[$i] != $result[$i])
    {
        
$aendern += 1;
        
$new[$result[$i]] = $data[$i]; 
    }
}

if(
$aendern == 0)
{
    
// nix passiert
    
exit;
}
else
{
    
// einfügen der neuen Daten.
}

?>
Vom Aufbau her sollte alles stimmen - bei den Funktionen hab ich mal was gebastelt - weiss nicht ob es so funzt ^^.

Mfg
__________________
Genau das wollte ich auch gerade sagen ^^

Geändert von prestige (02.05.2009 um 23:52 Uhr).
prestige ist offline   Mit Zitat antworten
Alt 02.05.2009, 22:25  
Neuer Benutzer
 
Registriert seit: 02.05.2009
Beiträge: 5
marc_tobien befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Antwort
Ich habe es auf eine ähnliche Art und Weise gelöst.
Code:
if ($data==$result)
{
}
else
{
}
Ich hatte gehoft, dass der Vergleich von mysql übernommen werden könnte.
Das Array erst zu zerlegen und einzelnt zu prüfen frist mir zuviel cpu und belaste den Rest des Programmes. Ich habe bereits Laufzeitprobleme mit meiner Datenbank. Darum mache ich das ganze Tuning überhaupt.
Danke
Marc
marc_tobien ist offline   Mit Zitat antworten
Alt 02.05.2009, 23:54  
Benutzer
 
Registriert seit: 11.05.2008
Beiträge: 71
PHP-Kenntnisse:
Fortgeschritten
prestige
prestige eine Nachricht über ICQ schicken
Standard

Zitat:
if ($data==$result)
{
}
else
{
}
Achja, stimmt, so gehts natürlich auch ^^ einfacher.

Mfg wenigstens hab ich dich auf den Richtigen Weg gebracht.
__________________
Genau das wollte ich auch gerade sagen ^^
prestige ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
insert into table / aber mehrere daten peroja PHP Tipps 2009 11 19.04.2010 02:03
[Erledigt] Insert into - Daten werden nicht in Datenbank geschrieben Baltasar PHP Tipps 2008 21 24.05.2009 06:56
Pathfinding Algorithmus optimieren? (Algorith. von Dijkstra) Martin13 PHP Tipps 2007 19 04.09.2007 19:20
Verständnisprobleme bei Utf8 > Character Set > Collate erna Datenbanken 4 20.03.2007 14:08
insert into für mehrere daten LP Datenbanken 4 10.10.2006 13:43
Differenz zwischen 2 Zahlen duderino PHP Tipps 2006 19 10.08.2006 22:12
PRoblem mit Cookie bei PHPbb-Board PHP Tipps 2007 8 12.12.2005 20:56
mysql dump einspielen (ohne phpmyadmin) PHP Tipps 2005-2 6 18.06.2005 21:50
[Erledigt] fehler den ich noch nie gesehen habe Datenbanken 7 09.06.2005 14:29
dynamisches MENÜ aus db lesen.probleme mit SUBid !! PHP Tipps 2005 26 24.03.2005 18:53
[Erledigt] MySQL-DB gibt keine Daten zurück!!! Datenbanken 4 21.12.2004 21:00
dem verzweifeln nahe PHP Tipps 2004 26 24.10.2004 17:28
Daten innerhalb einer Tab. mit insert duplizieren/kopieren Datenbanken 4 15.09.2004 15:12
Daten mit insert Befehl einfügen klappt nicht... PHP Tipps 2004 3 15.07.2004 14:33
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql insert nur bei datenänderung, in datenbank nur schreiben wenn änderung

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:52 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum