HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Impressum
 

 
 

Anzeige 
 
HTMLWorld » Forum

Thema anzeigen - Hallo HTML-World-Gemeinde

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Hallo HTML-World-Gemeinde

 

Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   PHP
Vorheriges Thema:
Nächstes Thema:  
Autor Nachricht
rassehunde_de



Anmeldungsdatum: 15.11.2006
Beiträge: 3

BeitragVerfasst am: 15.11.2006 19:11:10    Titel: Hallo HTML-World-Gemeinde Antworten mit Zitat

ich, der neue und absolut ahnungslose, von php aber schon genervte, komme mit folgendem Anliegen seit zwei kompletten Nächten nicht weiter und Euren Tip:

Es existieren also 5 Tabellen und knapp 42.000 Newsleser.

Nun habe ich ein PHP-Script erstellt, welches beim Aufruf an alle Leser eine mail versendet. In der Mail wird eine URL angegeben mit .php?ID="XY"&USER="MUSTERMANN".

Die aufgerufene php-Datei soll nun anhand der übergebenen Variablen den User identifizieren und je nach Gruppenzugehörigkeit

Gruppe1 = Template1
Gruppe2 = Template2
Gruppe3 = Template3
Gruppe4 = Template4
...
...

das entsprechend vorgefertigte Templateincluden.

zum Verständnis: es gibt also z.B. Shopkunden allgemein, das sind also alle shopkunden, dann gibt es die Menge der in den allgemeinen Shopkunden enthaltenen Shopkunden, welche nach dem 11-03-2005 kauften und somit die Möglichkeit der Artikelbewertung haben und auch ein kleinere Gruppe der Shopkunden, deren Bestellung aus verschiedenen Gründen zur Stornierung führte. Weiters gibt es z.B. die Gruppe Züchter. In der Menge der Züchter sind 4 Untermengen enthalten.

Jede der in diesem Beispiel 2 Gruppen sollten jeweils einem Template zugeordnet werden, in welches dann je Untergruppe weitere untergruppenspezifizierte Templates included werden sollen.

Soweit das Konzept.
Nun ging ich an die Umsetzung und stiß bereits bei der Abfrage der 5 Datenbanktabellen in einer query auf massivste Probleme mangels meines Verständnisses und offensichtlich fehlender Bildung:

Hier mal die von mir creierte mysql-abfrage:

Code:
SELECT  g.nr , g.nachname , g.vorname , g.user , g.passwort ,
   g.email , g.homepage , g.rubrik , g.partnershop_id ,
   g.PartnerID , g.url , g.titel ,
   g.newsletter_status ,
   b.mitglied_id,b.warenkorb,b.bestellt_am,b.einkaufsgutschrift,b.storniert_am,
   z.mitglied,z.eintragsart,z.titel as zuechtertitel,z.hunderasse,z.zwingername,
   z.erstellungsdatum,z.letzte_aenderung,z.dateiname,z.domain,z.eigene_domain,
   h.id as hunderassen_id,h.name,
   w.id as welpengesuch_nr,w.mitglied_id as welpengesuch_mitglied,w.counter,w.region,
   w.hunderasse_id,w.hunderasse2_id`,w.beschreibung,w.status,w.erstelldat,w.geschlecht,
   w.hundealter,w.anzahl_zuechternachrichten
FROM    inner join mitglieder as g ,
   inner join shop_bestellung as b on nr==mitglied_id,
   inner join zuechter_hp as z on mitglied_id==mitglied,
   inner join hunderassen as h on z.hunderasse==h.id,
   inner join welpengesuche as w on welpengesuch_mitglied=nr 
WHERE   g.nr==mitglieds_id



ich habe diese Anfrage mehrfach (eine ganze lange Nacht von ca. 10h) gändert -> wieder und
wieder verschiedene Foren und Websites gelesen und dann aufgegeben, weil ich glaubte, die
Daten jeder Tabelle ja uch alle einzeln abfragen zu können.

Also eine Datenbankverbindung -> steht

Code:
//alle Newsleser
$abfrage  = "SELECT `nr`,`nachname`,`vorname`,`user`,`passwort`,`email`,`homepage`,`rubrik`,`partnershop_id`,`PartnerID`,`url`,`titel` FROM `mitglieder` WHERE 1 AND `nr` = $mitglieds_id Group by email ";
$ergebnis = mysql_db_query ($db, $abfrage1, $connect)or die (mysql_error());
   while($row=mysql_fetch_array($ergebnis1))
   {
      if(($row[nr]=$mitglieds_id) and ($user=$row[user]) and $row[newsletter_status]='ja')
      {
            //Bildschirmauswurf mitglieder :
                              echo    "<b>".$row[nr]."</b> |
                                       ".$row[nachname]." |
                                       ".$row[vorname]." |
                                       ".$row[user]." |
                                       ".$row[passwort]." |
                                       ".$row[email]." |
                                homepage: ".$row[homepage]." | <br>
                                 rubrik: ".$row[rubrik]." |
                              partnershop: ".$row[partnershop]." |
                               PartnerID: ".$row[PartnerID]." | 
                                    url: ".$row[url]." |
                                  titel: ".$row[titel]." |
                         newsletter_status: ".$row[newsletter_status]." | <p><br></p>";
            //Variablendeklaration
                        $zuechterhauptpfad       = "http://www.welpenvermittlungen.de/homepages/$row[eintragsart]/$name1/$row[nachname1]_$row[vorname1].shtml";
                        $sender              = "newsletterankuendigung@rassehunde.de";
                        $abmeldelink         = "http://www.dein-newsletter.de/abmelden.php?ID=$row[nr]&USER=$row[user]";
                        $newsl_dat             = "14_11_06";      //trage hier den aktuellen Monat_Jahr ein!
                        $dateiname             = "news_$newsl_dat";
                        $hauptpfad             = "http://www.dein-newsletter.de/newsletter/newsarchiv/1/Archiv";
                        $newslink              = "$hauptpfad/$dateiname.php?ID=$row[nr]";
                        $empfaenger          = "$row[email]";
                        $betreff             = "Wichtige Mitteilung für Hundefreund(in) $row[vorname] $row[nachname]: Hunde-Links.de informiert ";

                        $row[vorname1] = $row[vorname];   
                        $row[vorname1]= ereg_replace('/[\/\'?!#.:;,&+*\\%§=\(\){}\"]/',"_",$row[vorname1]);
                     // ersetzen von " ", "ä", "Ä", "ü" , "Ãœ" , "ö" , "Ö" , "ß" in dem Vornamen
                        $row[vorname1] =    ereg_replace(" ","$_",$row[vorname1]);
                        $row[vorname1] =    ereg_replace("ä","$ä",$row[vorname1]);
                        $row[vorname1] =    ereg_replace("Ä","$Ä",$row[vorname1]);
                        $row[vorname1] =    ereg_replace("ü","$ü",$row[vorname1]);
                        $row[vorname1] =    ereg_replace("Ãœ","$Ãœ",$row[vorname1]);
                        $row[vorname1] =    ereg_replace("ö","$ö",$row[vorname1]);
                        $row[vorname1] =    ereg_replace("Ö","$Ö",$row[vorname1]);
                        $row[vorname1] =    ereg_replace("ß","$ß",$row[vorname1]);
                     
                        $row[nachname1] = $row[nachname];   
                        $row[nachname1] = ereg_replace('/[\/\'?!#.:;,&+*\\%§=\(\){}\"]/',"_",$row[nachname1]);
                     // ersetzen von " ", "ä", "Ä", "ü" , "Ãœ" , "ö" , "Ö" , "ß" in dem Nachnamen
                        $row[nachname1] =    ereg_replace(" ","$_",$row[nachname1]);
                        $row[nachname1] =    ereg_replace("ä","$ä",$row[nachname1]);
                        $row[nachname1] =    ereg_replace("Ä","$Ä",$row[nachname1]);
                        $row[nachname1] =    ereg_replace("ü","$ü",$row[nachname1]);
                        $row[nachname1] =    ereg_replace("Ãœ","$Ãœ",$row[nachname1]);
                        $row[nachname1] =    ereg_replace("ö","$ö",$row[nachname1]);
                        $row[nachname1] =    ereg_replace("Ö","$Ö",$row[nachname1]);
                        $row[nachname1] =    ereg_replace("ß","$ß",$row[nachname1]);
            
                        $row[eintragsart1] = "$row[eintragsart]";
                     //   ereg_replace('/[\/\'?!#.:;,&+*\\%§=\(\){}\"]/',"_",$row[eintragsar?U?t1]);
                     //  ersetzen der Kleinschreibung mit der Großschreibung
                        $row[eintragsart1] =    ereg_replace("exquisit","$ex",$row[eintragsart1]);
                        $row[eintragsart1] =    ereg_replace("fulldate","$ful",$row[eintragsart1]);
                        $row[eintragsart1] =    ereg_replace("kostenlos","$los",$row[eintragsart1]);
            
                        $row[bundesland1] = "$row[bundesland]";
                     //*keinem der angegebenen Bundesländer* ersetzen
                        $row[bundesland1] =    ereg_replace("keinem der angegebenen Bundesländer","Bayern",$row[bundesland1]);

            if(($row[nr]=$row[mitglied_id]) and ($row[storniert_am] = ''))


    //alle Shopkäufer wo was im Warenkrob gespeichert und nicht storniert ist
               {
                     $abfrage2=" SELECT mitglied_id , warenkorb , bestellt_am , einkaufsgutschrift , storniert_am
                              FROM shop_bestellung
                              WHERE mitglied_id=$mitglieds_id
                              Group by '$empfaenger'
                              ";
                     $ergebnis2=  mysql_db_query ($db, $abfrage2, $connect)or die (mysql_error());
                  
                     while($row2=mysql_fetch_array($ergebnis2))
                     {
                              //Bildschirmauswurf Shop:
                                 echo "<b>mitgliedsnr im shop: ".$row2[mitglied_id]." | </b>
                                               warenkorb: ".$row2[warenkorb]." |
                                             bestellt_am: ".$row2[bestellt_am]." |
                                        einkaufsgutschrift: ".$row2[einkaufsgutschrift]." | <br>
                                             storniert_am: ".$row2[storniert_am]."<p><br></p>
                                             " ;
                           include ("$templ_pfad/14_11_06_3.htm");
    //alle Shopkäufer wo nach dem 11-03-2005 bestellten

                                 //3.1. Alle Shopkunden nach dem 11-03-05, weil ab diesem Datum das Bewerten der Artikel möglich ist
                                 // kommt in das Template zu 3.
                                 //   if (($row[nr]=$row[mitglied_id]) and ($row[bestellt_am] >= "2005-03-11"))
                                    if(($row2[warenkorb] != '') and ($row[bestellt_am] >= "2005-03-11"))
                                       {
                                             include ("$templ_pfad/14_11_06_3-1.htm");
                                       
                                       }      
                     }
               }   

     die hier verbleibende Restmenge soll auch einem Template zugeordnet werden   

    //alle Leser mit der Kennung 'Z' (also Züchter)
    $abfrage3 =
    $ergebnis3 =

        //alle Züchter mit Eintragsart 'a'
        $abfrage4 =
        $ergebnis4 =

        //alle Züchter mit Eintragsart 'b'
        $abfrage5 =
        $ergebnis5 =

        //alle Züchter mit Eintragsart 'c'
        $abfrage5 =
        $ergebnis5 =

     die hier verbleibende Restmenge, also weder 'a' noch 'b' oder 'c' soll auch einem
   Template zugeordnet werden   

    //alle Leser mit der Kennung 'W' (also Welpensuchende)
    $abfrage6 =
    $ergebnis6 =

        //alle Welpensuchende mit noch aktivem Welpengesuch
        $abfrage7 =
        $ergebnis7 =

     die hier verbleibende Restmenge, also ehemalige Welpensuchende soll auch einem
   Template zugeordnet werden   



die hier verbleibende Restmenge, also  weder 'Shopkunde', noch 'Züchter' oder
'Welpensuchender' soll auch einem Template zugeordnet werden   


GROUP BY 'email' ORDER BY 'nachname'
zwischenzeitlich habe ich jeweils mittels echo alle Daten auch auf dem Bildschirm gehabt.

nun, da ich aber die verschachtelten while und if eingebaut habe, sehe ich die betreffenden
daten nicht mehr.

Das deutet nun darauf hin, das ich nicht weiß und nun zu meinen Fragen, liebe Profies:

- wie würdet Ihr ein solches Script strukturieren?
- an welcher Stelle, innerhalb einer if-bedingung oder ausserhalb einer solchen
definiert Ihr die Variablen, welche in einer anderen Gruppe auch gebraucht werden?
- an welcher Stelle, innerhalb einer while-schleife oder ausserhalb einer solchen
definiert Ihr die Variablen, welche aus der betreffenden Abfrage heraus erst
definierbar werden in einer anderen Gruppe auch gebraucht werden?
- Warum funtzt meine erste $abfrage, wo alle Tabellen in einen row-array
zwischengespeichert werden sollten nicht??
- Was mache ich falsch??

Oder hat jemand von Euch zeit und Lust, mir ein Newsletterscript nach meinen Vorgaben zu
basteln??

Danke vorerst für Eure, hoffentlich fachlich basierten Antworten. Ich würde das, was
Ihr nun schreiben werdet gerne auch verstehen, bin aber blutiger Anfänger.

Danke, Euer rassehunde_de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
admin
Site Admin


Anmeldungsdatum: 16.01.2005
Beiträge: 323
Wohnort: Berlin

BeitragVerfasst am: 15.11.2006 19:17:03    Titel: Antworten mit Zitat

grundgütiger, kannst du nicht noch mehr code posten!? Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
rassehunde_de



Anmeldungsdatum: 15.11.2006
Beiträge: 3

BeitragVerfasst am: 15.11.2006 19:33:15    Titel: sorry Antworten mit Zitat

hallo Admin,

doch, ich habe doch nur einen Teil gepostet, damit man erkennen und eventuell helfen kann.

Ist das zuviel??

Dann darf ich Sie bitten den Beitrag zu löschen und ich werde mal schauen, ob ich anderswo vielleicht die von dieser Seite erhoffte Hilfe bekomme.

mfG


rassehunde_de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
admin
Site Admin


Anmeldungsdatum: 16.01.2005
Beiträge: 323
Wohnort: Berlin

BeitragVerfasst am: 15.11.2006 19:38:07    Titel: Antworten mit Zitat

von mir aus kannst du 2000 zeilen code posten, nur solltest du dir im klaren sein, je länger dein code wird umso weniger leute haben lust sich den überhaupt anzuschauen ...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
rassehunde_de



Anmeldungsdatum: 15.11.2006
Beiträge: 3

BeitragVerfasst am: 15.11.2006 19:42:04    Titel: hallo Admin Antworten mit Zitat

Nun, wer ihn sich nicht anschaut, wird entweder nicht helfen wollen, oder nicht können und wird sicherlich dann auch nicht erkennen, dass hier jemand sitzt, der verzweifelt und bereit ist, jemanden dafür zu bezahlen, der das Script nach meinen Vorgaben liefert. Aber schauen wir mal, was noch passiert. Bisher sind ja noch keine Antworten gekommen.

mfG


rassehunde_de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sir Quicksand
Häufiger Poster


Anmeldungsdatum: 19.01.2005
Beiträge: 304
Wohnort: Hannover

BeitragVerfasst am: 15.11.2006 21:12:17    Titel: Antworten mit Zitat

Alter Schwede, hab mich ja gefreut daß wieder einer mal ins PHP Forum was postet, aber das ist mir viel zu viel.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
admin
Site Admin


Anmeldungsdatum: 16.01.2005
Beiträge: 323
Wohnort: Berlin

BeitragVerfasst am: 16.11.2006 19:17:38    Titel: Antworten mit Zitat

also mal allgemein zum debugging von scripten:

eins nach dem anderen. wenn du nicht weisst ob deine sql-anweisung korrekt ist, prüf sie erstmal in einem sql-programm deiner wahl und schaue ob sie überhaupt die richtigen werte liefert. wenn das korrekt ist gehst du weiter und prüfst ob das korrekt ist. deine frage zur struktur hat sich damit also erübrigt, weil die struktur letztlich wurscht ist, solange es funktioniert.

was deine frage bzgl. programmieren deines scriptes angeht: wie wärs wenn du einfach eins nimmst das schon funktioniert und es nur noch umgestaltest?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   PHP
Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.