Anzeige:
Ergebnis 1 bis 14 von 14

Thema: Doppelt wert speichern

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.08.2001
    Beiträge
    37

    Doppelt wert speichern

    Hallo,

    ich habe einen kleinen script im php geschrieben, bei dem ein Ausdruck in eine Datenbank geschrieben wird.
    Wenn ich den "Submit"-Knopf drücke, bekomme ich immer den Ausdruck 2x ( zwei mal) in dei Datenbank gechrieben.
    Kann jemand helfen ?

    [PHP]<?php

    // Datenbank Identifikation
    $mysqlhost = "router";
    $mysqluser = "ich";
    $mysqlpasswd ="dochich";
    $mysqldb = "testfotos";

    $link = @mysql_connect($mysqlhost, $mysqluser, $mysqlpasswd);
    if ($link == FALSE) {
    echo "<p><b> Kack </b></p>\n";
    exit();
    }


    mysql_select_db($mysqldb);

    ?>

    <body background="_pics/marble4.gif">

    <table align="left" border="2">
    <tbody>
    <tr>
    <TD width="140">&nbsp;</TD>
    <td width="140">&nbsp;</td>
    <td width="140">&nbsp;</td>
    <td width="140">&nbsp;</td>
    <td width="140">&nbsp;</td>
    </tr>
    <form action="index.php" method="GET"><tr>"
    <tr>";
    <TD colspan="5" align="center" valign="top"><input type="Submit" name="OK" value=">>"></td>
    </tr>
    // </form>
    <?php
    // Datenbank mit Verzeichnisnamen füllen
    if (isset($_GET['OK'])) {
    mysql_query("INSERT INTO verzeichnis (name_verz) VALUES ('dummer August')");}
    ?>
    <tr>
    </tr>
    </tbody>
    </table>
    </body>
    regards

    ramon

  2. #2
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von ramon
    ich habe einen kleinen script im php geschrieben, bei dem ein Ausdruck in eine Datenbank geschrieben wird.
    Wenn ich den "Submit"-Knopf drücke, bekomme ich immer den Ausdruck 2x ( zwei mal) in dei Datenbank gechrieben.
    Wenn ich mir das Script so angucke dürfte das nicht passieren.

    Zitat Zitat von ramon
    <input type="Submit" name="OK" value=">>">
    Das solltest du erstmal ändern in
    <input type="Submit" name="OK" value="&gt;&gt;">

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.08.2001
    Beiträge
    37
    Hallo,

    an der Stelle hängt es nicht.
    <input type="Submit" name="OK" value=">>">
    habe ich schon mit :
    HTML-Code:
    <input type="Submit" name="OK" value="JA">
    probiert, aber ohne Erfolg.

    Ich hätte eher vermutet, daß im Teil
    PHP-Code:
    mysql_query("INSERT INTO verzeichnis (name_verz) VALUES ('dummer August')");} 
    etwas schief geht.
    In der Tabelle gibt es 3 Spalten :
    ID =smallint(6)-Autoincrement,
    name_verz = varchar(255) und
    link_verz=varchar(255).

    Ich erzeuge nun neue Zeilen, in denen der Autowert automatisch gesetzt wird, und der link_verz als "NULL" eingetragen wird.

    kann der doppelte Eintrag daher kommen ?
    regards

    ramon

  4. #4
    Registrierter Benutzer
    Registriert seit
    05.08.2001
    Beiträge
    37
    Hallo,

    es liegt tatsächlich entweder an der Datenbank, oder den Einstellungen bei Mysql, ich habe einen neuen script gebastelt, der nur noch enthält :

    PHP-Code:
    $mysqlhost "router";
    $mysqldb "testfotos";
    $mysqluser "ich";
    $mysqlpasswd ="jaich";
    $link = @mysql_connect($mysqlhost$mysqluser$mysqlpasswd);
    mysql_select_db($mysqldb);
        
    mysql_query("INSERT INTO verzeichnis (ID_verz, name_verz, link_verz) VALUES ('', 'dummer August', 'http://')"); 
    un schon hier wird der "dumme August" zweimal eingetragen.
    die Mysql-version ist 4.0.24

    weiß noch jemand rat ?
    regards

    ramon

  5. #5
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von ramon
    an der Stelle hängt es nicht.
    Du solltest es trotzdem ändern, weil das sonst AFAIK kein gültiges HTML ist.

    Zitat Zitat von ramon
    Ich erzeuge nun neue Zeilen, in denen der Autowert automatisch gesetzt wird, und der link_verz als "NULL" eingetragen wird.

    kann der doppelte Eintrag daher kommen ?
    Nein.

    Zitat Zitat von ramon
    es liegt tatsächlich entweder an der Datenbank, oder den Einstellungen bei Mysql, ich habe einen neuen script gebastelt, der nur noch enthält: (...)

    un schon hier wird der "dumme August" zweimal eingetragen.
    Das ist wirklich komisch. Damit es ganz eindeutig ist könntest du folgendes probieren:
    1. Vor dem INSERT noch ein "TRUNCATE TABLE `verzeichnis`" (also den Tabelleninhalt vom Script löschen lassen)
    2. Nach dem INSERT direkt die Anzahl der Zeilen mit "SELECT COUNT(*) FROM `verzeichnis`" auslesen und anzeigen - das Ergebnis dann hier posten.

    Was mir als letzte Möglichkeit noch einfiele: Sind vllt. irgendwelche Trigger definiert, die das doppelte Schreiben übernehmen?

  6. #6
    Registrierter Benutzer
    Registriert seit
    05.08.2001
    Beiträge
    37
    Hallo,

    habe ich gemacht.

    der Script sieht jetzt so aus :

    PHP-Code:
    $mysqlhost "router";
    $mysqldb "testfotos";
    $mysqluser "ich";
    $mysqlpasswd ="jaich";

    $link = @mysql_connect($mysqlhost$mysqluser$mysqlpasswd);
    mysql_select_db($mysqldb);
    mysql_query("TRUNCATE TABLE `verzeichnis`");
    mysql_query("INSERT INTO verzeichnis (ID_verz, name_verz, link_verz) VALUES ('', 'dummer August', 'http://')");
    $result mysql_query("SELECT * FROM `verzeichnis`");

    echo 
    "done";
    echo 
    "Anzahl = ".mysql_num_rows($result); 
    Und das Ergebnis ist genau wie erwartet. Nämlich Anzahl = 1 !
    Das ist schön.
    Wenn ich das "TRUNCATE TABLE " auskommentiere und den Script aufrufe, ist
    "Anzahl = 3".
    Ich kann ja jetzt nicht immer die komplette Tabelle löschen !?
    regards

    ramon

  7. #7
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von ramon
    Wenn ich das "TRUNCATE TABLE " auskommentiere und den Script aufrufe, ist
    "Anzahl = 3".
    Ich kann ja jetzt nicht immer die komplette Tabelle löschen !?
    Ne, wenn du das auskommentierst, dann müsste sich die Anzahl mit jedem Seitenaufruf um eins erhöhen - überprüf das mal, indem du die Seite mehrmals aufrufst.

  8. #8
    Registrierter Benutzer
    Registriert seit
    05.08.2001
    Beiträge
    37
    Hallo,

    schon gemacht.
    Die Reihe ist :
    1,2,4,6,8,...
    das bedeutet, nach dem Löschen fügt er einen Datensatz in die Tabelle, wenn etwas in der Tabelle drin ist, dann fügt er zwei identische Datensätze mit unterschiedlichen IDs (autoincrement) ein.
    Ich bin noch einen Schritt weiter gegangen und füge im Script in einem Aufruf 3 unterschiedliche Datensätze ein.
    die Reihe ist dann 3,6,12,18,...
    interessanter Weise stehen nicht die gleichen Datensätze untereinander, sondern immer 1,2,3 - 1,2,3 - 1,2,3 - 1,2,3 nicht

    der Script dazu :
    PHP-Code:
    $link = @mysql_connect($mysqlhost$mysqluser$mysqlpasswd);
    mysql_select_db($mysqldb);
    //mysql_query("TRUNCATE TABLE `verzeichnis`");
    mysql_query("INSERT INTO verzeichnis (ID_verz, name_verz, link_verz) VALUES ('', 'dummer August', 'http://')");
    mysql_query("INSERT INTO verzeichnis (ID_verz, name_verz, link_verz) VALUES ('', 'schwarzer Peter', 'http://')");
    mysql_query("INSERT INTO verzeichnis (ID_verz, name_verz, link_verz) VALUES ('', 'gestiefelter Kater', 'http://')");
    $result mysql_query("SELECT * FROM `verzeichnis`");

    echo 
    "done";
    echo 
    "Anzahl = ".mysql_num_rows($result); 
    Geändert von ramon (03-10-2005 um 10:10 Uhr)
    regards

    ramon

  9. #9
    Registrierter Benutzer
    Registriert seit
    05.08.2001
    Beiträge
    37
    Hallo,

    langsam wird mir das ganze ziehmlich komisch.
    Ich habe jetzt mal nach jedem Auftruf der Seite die Daten in phpmyadmin nachgeschaut.
    dort sieht es ganz anders aus.
    Er schreibt beim Löschen und Einfügen genau einen Datensatz in die Datenbank.
    Das ist in phpmyadmin und auf der Webseite (php) gleich.
    Beim zweiten mal Einfügen zeigt er in phpmyadmin 3 Datensätze (1,2 u.3) , auf der Webseite (php) aber nur 2 (1 u. 2).
    Beim 3. mal Einfügen zeigt er in phpmyadmin 5 Datensätze (1,2,3,4 u.5), auf der Webseite nur 4 (1,2,3 u, 4).
    Wenn ich den auf der Webseite nicht angezeigten Datensatz (5) lösche und die Webseite wieder aufrufe, dann zeigt er auf der Wenseite 5 Datensätze (1,2,3,4 u. 6)
    in phpmyadmin 7 Datensätze (1,2,3,4,6 u. 7).
    In Klammern stehen die autoincrement IDs, die ich mit den Werten auslese.
    Das habe ich mit dem Zusatz :
    PHP-Code:
    while(list($id,$name,$link) = mysql_fetch_row($result)){
        echo 
    "ID = ".$id." - Text = ".$name." - Link = ".$link."<br>\n";} 
    gemacht.

    Weißt Du noch Rat ?
    regards

    ramon

  10. #10
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Existiert das Problem eigentlich auch bei anderen Tabellen in der Datenbank?

    Zitat Zitat von ramon
    Weißt Du noch Rat ?
    Ne, da ist es langsam an der Zeit, diese komische Tabelle einfach mal zu löschen und neu zu erstellen

  11. #11
    Registrierter Benutzer
    Registriert seit
    05.08.2001
    Beiträge
    37
    Hallo,

    nett gemeinter Rat.
    Ich habe eine neue Datenbank angelegt, mit einer neuen Tabelle.
    Der Effekt ist aber der gleiche !

    ?????? was nun ??????
    regards

    ramon

  12. #12
    Registrierter Benutzer Avatar von ClausVB
    Registriert seit
    05.08.2005
    Ort
    NRW - Deutschland
    Beiträge
    106

    Question Rückfrage

    Zitat Zitat von ramon
    ?????? was nun ??????
    Hast Du die Möglichkeit das Skript an mehreren PC's zu testen? Ein Kunde von mir hatte den Effekt bei einer meiner Applikationen. Er konnte ihn aber nur an 2 von 10 PCs reproduzieren (ich überhaupt nicht).

    Wir haben nach langem Hin und Her festgestellt, dass seine Maus
    - entweder über den "Eingabehilfen-Assistent"
    - oder über die Doppel-Klick Geschwindigkeit
    so eingestellt war, dass ein Einfach-Klick in einen Doppelklick umgewandelt wurde.

    Was passiert, wenn Du ganz schnell hintereinander 5x mal auf den Mausknopf drückst? Wird der DB-Eintrag, dann 3, 4 oder 5 Mal eingetragen?

    Gruß
    Claus

  13. #13
    Registrierter Benutzer
    Registriert seit
    05.08.2001
    Beiträge
    37
    Hallo,

    Du bist super gut drauf !
    Das Problem scheint wirklich bei den Mauseinstellungen zu liegen.

    Ich danke euch beiden für die Unterstützung !
    regards

    ramon

  14. #14
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    Evtl. kannst Du das Problem mit ein klein wenig Javascript umgehen...
    Code:
    <input type="submit" value="Daten senden" onclick="this.value='Daten werden gesendet'; this.disabled='true';">
    Ich hab das allerdings nur im Mozilla getestet... keine Ahnung, ob der IE dann evtl. die Daten nicht mehr sendet...

Lesezeichen

Berechtigungen

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