Vorheriges Thema: Nächstes Thema: |
Autor |
Nachricht |
rassehunde_de
Anmeldungsdatum: 15.11.2006 Beiträge: 3
|
Verfasst am: 15.11.2006 19:11:10 Titel: Hallo HTML-World-Gemeinde |
|
|
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 |
|
|
admin Site Admin
Anmeldungsdatum: 16.01.2005 Beiträge: 323 Wohnort: Berlin
|
Verfasst am: 15.11.2006 19:17:03 Titel: |
|
|
grundgütiger, kannst du nicht noch mehr code posten!? |
|
Nach oben |
|
|
rassehunde_de
Anmeldungsdatum: 15.11.2006 Beiträge: 3
|
Verfasst am: 15.11.2006 19:33:15 Titel: sorry |
|
|
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 |
|
|
admin Site Admin
Anmeldungsdatum: 16.01.2005 Beiträge: 323 Wohnort: Berlin
|
Verfasst am: 15.11.2006 19:38:07 Titel: |
|
|
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 |
|
|
rassehunde_de
Anmeldungsdatum: 15.11.2006 Beiträge: 3
|
Verfasst am: 15.11.2006 19:42:04 Titel: hallo Admin |
|
|
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 |
|
|
Sir Quicksand Häufiger Poster
Anmeldungsdatum: 19.01.2005 Beiträge: 304 Wohnort: Hannover
|
Verfasst am: 15.11.2006 21:12:17 Titel: |
|
|
Alter Schwede, hab mich ja gefreut daß wieder einer mal ins PHP Forum was postet, aber das ist mir viel zu viel. |
|
Nach oben |
|
|
admin Site Admin
Anmeldungsdatum: 16.01.2005 Beiträge: 323 Wohnort: Berlin
|
Verfasst am: 16.11.2006 19:17:38 Titel: |
|
|
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 |
|
|
|
|
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.
|
|
|