E-mail Benarichtigung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • E-mail Benarichtigung

    Hallo,

    habe ein kunde das will ein E-mail Benarichtigung einbinden lassen in seinen auktionshaus.Das ist ein script das bietet die moeglichkeit der besucher ein bestimt wort zu speichern.Sobald ein artikel eingestellt werde das diese wort enthält, werde er per mail benachrichtet.
    Der scrit ist mir fremd(hat er mir zugesendet), und muss ihn jetz anpassen. Alle habe ich noch geschafft bis an einen punkt das mich durchanander bringt.
    Beim erstellen der benachrichtigungs e-mail, der script check in datenbank die gespeicherte worte für benarichtung, und sucht an der neue auktion ob irgendein von diese gespeichert worte enthalt.

    Hier das code wo mir der schwere ist:







    PHP-Code:

    $agentabfrage 
    "SELECT * FROM agent";
    $agentergebnis mysql_db_query($mysqldbname,$agentabfrage,$db);
    while (list(
    $id,$agentnum,$agentinhalt,$agentemail) = mysql_fetch_row($agentergebnis)) //// hier ist mir klar das chekt die gespeichert worte
    {

    $agentkat  = ("SELECT * FROM $mein where inhalt like '%$agentinhalt%'");  ///Hier verstehe ich nicht ganz was $mein sein soll? die auktionen vieleicht, und inhalt?
    $ergebnisagent mysql_db_query($mysqldbname,$agentkat,$db);
    while (list(
    $id,$artnum,$kategorie,$unterkategorie,$kostenlos,$alias,$pass,$titel,$bild,$inhalt,$email,$zustand,$wunschpreis,$startdatum,$startuhr,$stueckzahl,$bieter,$gebot,$endzeit,$sofortkauf,$sofortpreis,$klick,$zahlungsart,$versandart,$ipnr) = mysql_fetch_row($ergebnisagent))
    {

    $eintrage "update $mein set kostenlos='$agentinhalt' where artnum='$artnum'";  // ist artnum vieleicht die auktionnummer?
    $resulte mysql_query($eintrage);

    $agentkati  = ("SELECT * FROM $mein where kostenlos='$agentinhalt'");  /// Hier kann auch nicht werstehen kostenlos, was fur ein table kan das sein ?
    $ergebnisagenti mysql_db_query($mysqldbname,$agentkati,$db);
    while (list(
    $id,$artnum,$kategorie,$unterkategorie,$kostenlos,$alias,$pass,$titel,$bild,$inhalt,$email,$zustand,$wunschpreis,$startdatum,$startuhr,$stueckzahl,$bieter,$gebot,$endzeit,$sofortkauf,$sofortpreis,$klick,$zahlungsart,$versandart,$ipnr) = mysql_fetch_row($ergebnisagenti))
    {

    $eintrage1 "update agent set agentnum='$artnum' where agentinhalt='$kostenlos'"// warum agentnum='$artnum  ?( 
    $resulte mysql_query($eintrage1);
    $eintrage2 "update $mein set kostenlos='' where artnum='$artnum'"// und wieder  ?( 
    $resulte mysql_query($eintrage2);

    if (
    $artnum == $stat)
    {
    $subject1 =  "Meldung von Auktionsagent!";
      
    $from    =  $von
    Wurde mich sehr freuen wenn jemend das verstehen kan und mich helfen wurde, diese part mache mich kaput seit 2 tagen
    haa sorry für meinen Deutsch

  • #2
    Abgesehen davon, dass es ein "Kunde" von dir will und daher hier wohl keiner helfen wird, da du nachher das Geld kassierst, solltest du vllt mal SQL Grundlagen lernen... $mein ist die Tabelle, in der abgefragt werden soll und kostenlos ist ein attribut (eine spalte in der tabelle $mein)...
    Liebe Grüße,
    SteKoe!

    PHP Tutorials
    Peter Kropff | Quakenet | Schattenbaum.net

    Kommentar


    • #3
      Guten Tag,

      ein "Kunde" von mir, aber nicht für diese änderung, ich habe ganz lang er ein script verkauft, das wass. Für diese einbindung der artikelalarm bekomme ich kein geld.Weil ich selber kein expert bin mit datenkanken und php, bin mir nicht sicher ob ich selber dieser änderung schaffen kann, desalp kann ich kein geld dafür verlangen.Ich habe Ihn gesagt ich probiere mal.

      Sie habem mir schon gut geholfen und bedanke ich mir dafür.

      Nun verstehe ich nich ganz wass [COLOR=#000000][COLOR=#0000cc]$stat bei [/COLOR][/COLOR]
      PHP-Code:
      if ($artnum == $stat
      bedeuten kann, sowie wass der [COLOR=#000000][COLOR=#0000cc]artnum damit zu tun haben kann.[/COLOR][/COLOR]

      Kommentar


      • #4
        Hast du mal darüber nachgedacht, wie dieser Code performt?
        PHP-Code:
        mysql_db_query();
        while (
        mysql_fetch_row()) {
            
        mysql_db_query();
            while (
        mysql_fetch_row()) {
                
        mysql_query();
                
        mysql_db_query();
                while (
        mysql_fetch_row()) {
                    
        mysql_query();
                    
        mysql_query();
        ... 
        Weißt du was ein JOIN ist?

        Kommentar


        • #5
          Leider nicht,

          verstehe wenig von datenbank.
          Wie performt Ihre code?

          Kommentar


          • #6
            Ich kenne deine DB-Inhalte nicht, aber dreifach verschachtelte Schleifen bedeuten kubische Komplexität (O(n^3)). Wahrscheinlich sagt dir das nichts, deshalb ein anschauliches Beispiel:
            Nehmen wir an, du hast jeweils 1000 Datensätze in den Tabellen agent und $mein. Außerdem nehmen wir an, dass die WHERE-Klauseln der SELECT-Queries die Ergebnismenge nicht einschränken.
            Dann wird die äußere Schleife 1000 Mal durchlaufen. In jedem Durchlauf wird die zweite Schleife ebenfalls 1000 Mal durchlaufen und in jedem dieser Durchläufe wird die innerste Schleifer wiederum 1000 Mal durchlaufen. Das macht 1000*1000*1000 Durchläufe der innersten Schleife!

            Und noch einmal, ganz anschaulich:
            PHP-Code:
            mysql_db_query();    // 1x ausgeführt, 1000 Datensätze selektiert
            while (mysql_fetch_row()) {
                
            mysql_db_query();    // 1000x ausgeführt, jeweils 1000 Datensätze selektiert
                
            while (mysql_fetch_row()) {
                    
            mysql_query("UPDATE ...");    // 1000*1000x ausgeführt
                    
            mysql_db_query();    // 1000*1000x ausgeführt, jeweils 1000 Datensätze selektiert
                    
            while (mysql_fetch_row()) {
                        
            mysql_query("UPDATE ...");    // 1000*1000*1000x ausgeführt
                        
            mysql_query("UPDATE ...");    // 1000*1000*1000x ausgeführt 
            Insgesamt werden also 1 + 1000 + 1000*1000 + 1000*1000 + 1000*1000*1000 + 1000*1000*1000 = 2002001001 Datenbankabfragen ausgeführt. Das sind 2 Milliarden! Die meisten Abfragen sind auch noch UPDATES, die dauern besonders lange.
            Wenn eine Abfrage im Durchschnitt eine Mikrosekunde dauert, braucht dieser Algorthmus 556 Stunden!
            Zugegeben, das ist eine Worst Case Rechnung. Aber selbst wenn die Selektivität der WHERE-Klauseln bei nur 1% liegt, sind es immer noch 221001 Abfragen und 3,5 Minuten.

            Du siehst hoffentlich ein, dass dein Algorithmus für eine Webanwendung absolut ungeeignet ist. Niemand wartet 3,5 Minuten auf eine Webseite!

            Muss auch nicht sein. Verwende JOINs für die Selektion der Datensätze und bau dir UPDATE-Queries zusammen, die mehrere Datensätze verändern. Damit kannst du die Anzahl der DB-Anfragen auf 4 reduzieren - konstant 4, unabhängig von der Selektivität oder den DB-Inhalten.

            PS: Ich habe mir die Details deiner Queries nicht angesehen. Möglicherweise kommst du mit 4 Queries nicht aus. Aber irgendwas unter 10 sollte möglich sein.
            Zuletzt geändert von onemorenerd; 24.05.2009, 15:17.

            Kommentar


            • #7
              Danke vielmals für Ihre erklärung.

              Mein probleme ist das ich kein JOINs verwenden kan.
              und da ich der script genau so bekommen habe, versuche ich ihn erst mal zu verstehen, damit ich die neue variable eisetzen kann, sowie die richtige tabellen namen.

              zb. Die neue tabelle soll "auctions" sein stat [COLOR=#000000][COLOR=#CC0000]"$mein" etc...
              [/COLOR][/COLOR]

              Kommentar


              • #8
                Zitat von donatelloii Beitrag anzeigen
                Mein probleme ist das ich kein JOINs verwenden kan.
                Warum nicht?

                Kommentar


                • #9
                  weil ich nicht weiss wie ich es machen soll

                  Kommentar


                  • #10
                    Hi,

                    ich denke, Du hast 2-3 Möglichkeiten.
                    1. Du eignest Dir erstmal die benötigten Datenbankkenntnisse an.
                    2. Du sagst Deinem Kunden, dass Du das nicht realisieren kannst (war ja anscheinend kein wirklicher Auftrag, sondern eher ein "ich guck mal").
                    3. Du holst Dir ein Angebot von jemandem, der sich damit auskennt(TM) und lässt Deinen Kunden dafür zahlen.

                    LG

                    Kommentar


                    • #11
                      Ja, das ist ja kein auftrag. Desalp wurde vieleicht besser der script so lassen, und nur die variable anpassen sowie die tabellen namen.

                      Nun dafur muss erste mal verstehen wass sind die alte variable und die alte tabellen namen. damit ich diese tauchen kann.

                      Wurde mich naturlich freuen um ein kleine hilfe über das.


                      3. Du holst Dir ein Angebot von jemandem, der sich damit auskennt(TM) und lässt Deinen Kunden dafür zahlen.

                      Hier weiss ich auch nicht wer mir ein angebot machen kan. Ich kann kein der sich damit auskennt

                      Kommentar


                      • #12
                        Um es auf den Punkt zu bringen: Lass es! Du kannst es nicht.

                        Wenn du diesen Code deinem Kunden gibst und er sich damit seinen Server zum Absturz bringt, wirst du dir wünschen, du hättest auf uns gehört.

                        Sei professionell! Sag deinem Kunden, dass das Crap ist und er für eine ordentliche Lösung einfach mal etwas Geld locker machen muss. Fähige Programmierer findest du nebenan im Forum für Jobangebote.

                        Kommentar


                        • #13
                          bzw. hier: php-resource.de Projekt- und Stellenausschreibungen
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar


                          • #14
                            Danke für die information.
                            Ich habe schon vor ein par tagen ein job eingesetzt und biz jetz noch kein angebot

                            Kommentar

                            Lädt...
                            X