falke: checken ob zu dem wert schon eine zeile existiert

hallo leute

ich habe folgendes problem ich muss aus einem post einen einen query machen der prüft ob zu dem wert der grad an der Reihe ist eine Zeile existiert wenn ja dann soll der upgedatet werden wenn nicht eine neue zeile geschaffen!

der stand der sache:

foreach ($_POST as $key=>$value)
{
if(!empty($value))
{
$check = mysql_query("",$connect);

}

hoffentlich könnt ihr mir weiterhelfen!

mfg falke

  1. Hallo falke!

    [...] einen query machen der prüft ob zu dem wert der grad an der Reihe ist eine Zeile existiert wenn ja dann soll der upgedatet werden wenn nicht eine neue zeile geschaffen!

    foreach ($_POST as $key=>$value)
    {
    if(!empty($value))
    {
    $check = mysql_query("",$connect);
    }

    1. Warum gehst Du $_POST mit foreach durch? Welche Variablen brauchst Du denn überhaupt?

    2. Der SQL-Befehl ist an sich nicht schwer. Du kannst einfach mal nen UPDATE machen und dann schauen, ob eine Zeile aktualisiert wurde, und wenn nicht noch nen INSERT machen.
        Oder, ich finde das sauberer, Du prüfst erstmal mit nem SELECT, ob ein entsprechender Datensatz das ist, und machts dann je nachdem ein UPDATE oder ein INSERT.

    MfG
    Götz

    --
    Losung für Montag, 13. September 2004
    Mein Volk gehorcht nicht meiner Stimme. So hab ich sie dahingegeben in die Verstocktheit ihres Herzens, dass sie wandeln nach eigenem Rat. (Psalm 81,12.13)
    Christus spricht: Es kommt die Stunde und ist schon jetzt, dass die Toten hören werden die Stimme des Sohnes Gottes, und die sie hören werden, die werden leben. (Johannes 5,25)
    (http://www.losungen.de/heute.php3)
    1. das könnt ich so machen aber da gibt es einen kleien hacken der post variert in der größe es ist nicht immer die gleiche anzahl felder unter umständen steigen sie an.

      ich muss irgendwie vorher abgleichen welche ich upzudaten habe und welche ich neu inserten muss falls ich dich bloß falsch verstanden habe drück dich bitte etwas deutlicher aus!

      mit freundlichen Grüßen

      falke

      1. Hallo falke!

        das könnt ich so machen aber da gibt es einen kleien hacken der post variert in der größe es ist nicht immer die gleiche anzahl felder unter umständen steigen sie an.

        Also, Du weißt doch, welche Felder Du in der Datenbank aktualisieren bzw. einfügen willst?
        Und genau diese Felder nimmst Du aus $_POST heraus - ganz einfach.

        Nehmen wir mal an, Du hast ne Tabelle mit den Feldern id, bla, blub.
        Dann schaust Du erstmal, ob $_POST['id'] gesetzt und nicht leer ist. Ist dem so, wurde eine id angegeben, also handelt es sich schonmal wahrscheinlich nicht um einen neuen Datensatz (ich gehe mal davon aus, daß id ein auto_increment-Feld ist).
        Also brauchst Du dann ein UPDATE-Statement, in dem Du einfach dem Feld bla den Wert $_POST['bla'] und dem Feld blub den Wert $_POST['blub'] zuweist. Fertig.
        Wenn keine id angegeben wurde, dann mußt Du wohl eine neue Zeile einfügen. Also ein INSERT, und die Werte setzen. Fertig.
        Davor natürlich noch prüfen, ob die Variablen auch vernünftige Werte enthalten usw., siehe auch http://www.google.de/search?q=cache:yQ6MjuqOdMgJ:www.dclp-faq.de/q/q-sicherheit-parameter.html++site:www.dclp-faq.de+dclp-faq.de+böse+Variablen&hl=de bzw. http://www.google.de/search?q=cache:5p80IIPJJPQJ:www.dclp-faq.de/q/q-sicherheit-global.html++site:www.dclp-faq.de+dclp-faq.de+böse+Variablen&hl=de (die dclp-FAQ ist grad irgendwie denic-technisch offline, aber Google ist ja unser Helfer in der Not! ;).

        So irgendwie würde ich das jedenfalls machen.

        MfG
        Götz

        P.S.: Die Google-Links werden nicht verlinkt - keine Ahnung was daran nicht stimmt, vielleicht irgendwas nicht korrekt kodiert, mir jetzt aber egal. Copy&Paste ist ja auch nicht soo schwer.

        --
        Losung für Montag, 13. September 2004
        Mein Volk gehorcht nicht meiner Stimme. So hab ich sie dahingegeben in die Verstocktheit ihres Herzens, dass sie wandeln nach eigenem Rat. (Psalm 81,12.13)
        Christus spricht: Es kommt die Stunde und ist schon jetzt, dass die Toten hören werden die Stimme des Sohnes Gottes, und die sie hören werden, die werden leben. (Johannes 5,25)
        (http://www.losungen.de/heute.php3)
        1. Also, Du weißt doch, welche Felder Du in der Datenbank aktualisieren bzw. einfügen willst?

          die felder sind schon immer die gleichen aber ein kunde kann z.B mehrere partner haben und wenn er den einen noch nicht hatte der update post dann aber ein dazugibt muss ich eine neue zeile in der tabelle generieren für den kunden aber einen anderen partner!

          Und genau diese Felder nimmst Du aus $_POST heraus - ganz einfach.

          Nehmen wir mal an, Du hast ne Tabelle mit den Feldern id, bla, blub.
          Dann schaust Du erstmal, ob $_POST['id'] gesetzt und nicht leer ist. Ist dem so, wurde eine id angegeben, also handelt es sich schonmal wahrscheinlich nicht um einen neuen Datensatz

          wenn ich im allgemeinen update habe ich ja die id aber es kann trotzdem sein das für den kunden eine neue zeile hinzu kommt
          und wenn ich einen neuen kunde inseriere muss ich ja alle felder kommpett inserieren aber ich kann dafür keinen einheitlichen insert benutzen da ich immer davon ausgehen muss das neue partner hinzugekommen sind und sie berücksichtigen muss.
          das heißt ich muss aus dem post jeweils für normal update worin auch ein ich sag mal kleiner update vorkommen kann generieren sowie für inser an sich wenn es den kunden noch garnicht gibt.

          (ich gehe mal davon aus, daß id ein auto_increment-Feld ist).

          Also brauchst Du dann ein UPDATE-Statement, in dem Du einfach dem Feld bla den Wert $_POST['bla'] und dem Feld blub den Wert $_POST['blub'] zuweist. Fertig.

          mfg falke

          1. Hallo falke!

            die felder sind schon immer die gleichen aber ein kunde kann z.B mehrere partner haben [...]

            Ich versteh das nicht so ganz, weil ich Deine Datenbank nicht kenne.
            Aber wenn Du die potentiellen Felder kennst, dann prüf doch auf die, und nicht mit foreach.

            wenn ich im allgemeinen update [...]

            Das war mir jetzt für diese Uhrzeit irgendwie zu wirr.
            Aber wenn Du weißt, was Du machen mußt, warum probierst Du es dann nicht einfach mal?

            MfG
            Götz

            --
            Losung für Dienstag, 14. September 2004
            Ich will dich mit meinen Augen leiten. (Psalm 32,8)
            Jesus sah, dass die Jünger sich abplagten beim Rudern, denn der Wind stand ihnen entgegen. Er sprach: Seid getrost, ich bin's; fürchtet euch nicht!, und trat zu ihnen ins Boot, und der Wind legte sich. (Markus 6,48.50.51)
            (http://www.losungen.de/heute.php3)
            1. Hallo falke!

              die felder sind schon immer die gleichen aber ein kunde kann z.B mehrere partner haben [...]

              Ich versteh das nicht so ganz, weil ich Deine Datenbank nicht kenne.

              Das war mir jetzt für diese Uhrzeit irgendwie zu wirr.
              Aber wenn Du weißt, was Du machen mußt, warum probierst Du es dann nicht einfach mal?

              haha aber nichts für ungut

              MfG
              Götz