tutorials.de Buch-Aktion 05/2012
Like Tree4Danke
  • 1 Beitrag von saftmeister
  • 1 Beitrag von saftmeister
  • 1 Beitrag von saftmeister
  • 1 Beitrag von Ch
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
237
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    raci raci ist offline Mitglied Bronze
    Registriert seit
    Nov 2011
    Beiträge
    40
    Hallo

    Ich lasse ein script alle 3 Minuten per cronjob abrufen was auch funktioniert.

    Nun mein Problem:

    Ich möchte nicht das doppelt gespeichert wird .

    Beispiel:

    ID News Datum

    1 Test 1 13:40

    2 Test 1 13:43

    3 Test2 13:46

    also ID 1 und 2 sind gleich möchte aber nur das es einmal eingetargen wird.

    Mit UNIQUE möchte ich es nicht lösen das es ja an nächsten Tag nicht angezeigt wird .

    Habe jetz folgendes probiert aber klappt nicht wirklich

    PHP-Code:
    mysql_select_db'datenbank' 
    or die ( 
    'Die Datenbank existiert nicht.' ); 
    $abfrage "SELECT News FROM datenbank ORDER BY id DESC LIMIT 1"
    $ergebnis mysql_query$abfrage )
    $row mysql_fetch_assoc$ergebnis );



    if ( 
    $neuste_news != $row['News'] ) {
        
    $eintrag "INSERT datenbank (News, Datum)
        VALUES ('
    $news', '$datum')";
        
    $eintragen mysql_query$eintrag );

        }

    Danke für eure Hilfe
     

  2. #2
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Du solltest nur Datensätze abholen, die dem Kriterium des Doppelten entsprechen. Dann brauchst du nur noch schauen, ob irgendwelche Datensätze gefunden worden sind. In etwa so:

    Code php:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    mysql_select_db( 'datenbank' ) 
    or die ( 'Die Datenbank existiert nicht.' ); 
    $abfrage = "SELECT News FROM datenbank WHERE News = '$news'"; 
    $ergebnis = mysql_query( $abfrage ) or die(mysql_error());
     
    if ( mysql_num_rows($ergebnis) == 0 ) {
        $eintrag = "INSERT datenbank (News, Datum)
        VALUES ('$news', '$datum')";
        $eintragen = mysql_query( $eintrag ) or die(mysql_error());
    }

    Natürlich könntest du es etwas professioneller machen, in dem du einen Index auf die Spalte News legst und dann INSERT .. ON DUPLICATE KEY UPDATE verwenden.
    Geändert von saftmeister (13.01.12 um 15:48 Uhr) Grund: Fehler in der if-Condition-Logik
    raci bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #3
    raci raci ist offline Mitglied Bronze
    Registriert seit
    Nov 2011
    Beiträge
    40
    Hallo saftmeister

    Vielen Dank für die schnelle Antwort.

    Wenn es nicht klappen sollte wie würde es dann mit INSERT .. ON DUPLICATE KEY UPDATE aussehen.Könntest du mir ein Bespiel geben habe mit sowas noch nie gemacht.Wie ich eine Index auf die Spalte anlege weis ich aber mit dem code nicht.

    Danke
     

  4. #4
    Avatar von Napofis
    Napofis Napofis ist offline require 'brain.php';
    Registriert seit
    Jun 2007
    Ort
    Bayern
    Beiträge
    587
    Zitat Zitat von raci Beitrag anzeigen
    Könntest du mir ein Bespiel geben habe mit sowas noch nie gemacht.
    http://bit.ly/A9BM2y
     

  5. #5
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Mir ist gerade aufgefallen, das UNIQUE für dich keine Option ist und somit mein Vorschlag nicht umsetzbar. Warum eigentlich?
    raci bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  6. #6
    raci raci ist offline Mitglied Bronze
    Registriert seit
    Nov 2011
    Beiträge
    40
    Hallo

    Gibt es keine andere Lösung um Dopplete Einträge nicht anzeigen oder eintragen zu lassen als UNIQUE.

    Danke
     

  7. #7
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Wieso anzeigen? Ich dachte, es ging ums Einfügen? UNIQUE bedeutet, das es nicht möglich ist, einen weiteren Datensatz hinzuzufügen, der den selben Wert enthält, wenn er schon vorhanden ist.

    Wenn du den Datensatz nur einmal anzeigen willst, kannst du die GROUP BY Klausel verwenden.
    raci bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  8. #8
    Ch Tutorials.de Gastzugang
    Was spricht denn gegen den Index, den er wahrscheinlich sowieso hat? Also einfach ID abfragen und mit ON DUPLICATE KEY UPDATE ran. Füge mal eine Wrapper Funktion für Codeigniter mit an.
    PHP-Code:
    public function insert_update$table NULL $set NULL $created_field '')
     {

        if ( empty( 
    $table ) || ! is_array$set ) || ! count$set ) )
       {
           return 
    FALSE;
       }          

        foreach ( 
    $set as $key => $value )
       {
            
    // $created_field is always created date
            
    if( $key != $created_field )
           {
               
    $update[] = "`" $key "` = " $this->db->escape$value );
           }
       }
        
    $sql $this->db->insert_string$table$set ).
                                   
    " ON DUPLICATE KEY UPDATE ".implode', '$update );

                if( 
    $this->db->simple_query$sql ) == FALSE )
                {
                    return 
    FALSE;
                }
                else
                {
                    return 
    $this->db->insert_id();
                }
            } 
    raci bedankt sich. 

Ähnliche Themen

  1. DB doppelter Eintrag verhindern
    Von strukturart im Forum PHP
    Antworten: 32
    Letzter Beitrag: 02.10.11, 18:31
  2. Verhindern von doppelter aus wahl...
    Von speedlocke im Forum .NET Datenverwaltung
    Antworten: 4
    Letzter Beitrag: 30.10.07, 23:58
  3. Verhindern von doppelter aus wahl...
    Von speedlocke im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 30.10.07, 18:45
  4. Doppelter Eintrag
    Von oOxsi im Forum PHP
    Antworten: 9
    Letzter Beitrag: 30.03.07, 21:15
  5. Antworten: 2
    Letzter Beitrag: 12.09.05, 09:44