php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 23-05-2009, 23:48
donatelloii
 Registrierter Benutzer
Links : Onlinestatus : donatelloii ist offline
Registriert seit: May 2009
Beiträge: 13
donatelloii befindet sich auf einem aufstrebenden Ast
Exclamation 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
Mit Zitat antworten
  #2 (permalink)  
Alt 24-05-2009, 01:11
stekoe2000
 Registrierter Benutzer
Links : Onlinestatus : stekoe2000 ist offline
Registriert seit: Jul 2003
Beiträge: 342
stekoe2000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #3 (permalink)  
Alt 24-05-2009, 13:16
donatelloii
 Registrierter Benutzer
Links : Onlinestatus : donatelloii ist offline
Registriert seit: May 2009
Beiträge: 13
donatelloii befindet sich auf einem aufstrebenden Ast
Standard

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 $stat bei
PHP-Code:
if ($artnum == $stat
bedeuten kann, sowie wass der artnum damit zu tun haben kann.
Mit Zitat antworten
  #4 (permalink)  
Alt 24-05-2009, 13:32
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

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?
Mit Zitat antworten
  #5 (permalink)  
Alt 24-05-2009, 14:38
donatelloii
 Registrierter Benutzer
Links : Onlinestatus : donatelloii ist offline
Registriert seit: May 2009
Beiträge: 13
donatelloii befindet sich auf einem aufstrebenden Ast
Standard

Leider nicht,

verstehe wenig von datenbank.
Wie performt Ihre code?
Mit Zitat antworten
  #6 (permalink)  
Alt 24-05-2009, 15:14
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

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.

Geändert von onemorenerd (24-05-2009 um 15:17 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 24-05-2009, 15:42
donatelloii
 Registrierter Benutzer
Links : Onlinestatus : donatelloii ist offline
Registriert seit: May 2009
Beiträge: 13
donatelloii befindet sich auf einem aufstrebenden Ast
Standard

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 "$mein" etc...
Mit Zitat antworten
  #8 (permalink)  
Alt 24-05-2009, 16:06
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
Zitat von donatelloii Beitrag anzeigen
Mein probleme ist das ich kein JOINs verwenden kan.
Warum nicht?
Mit Zitat antworten
  #9 (permalink)  
Alt 24-05-2009, 16:07
donatelloii
 Registrierter Benutzer
Links : Onlinestatus : donatelloii ist offline
Registriert seit: May 2009
Beiträge: 13
donatelloii befindet sich auf einem aufstrebenden Ast
Standard

weil ich nicht weiss wie ich es machen soll
Mit Zitat antworten
  #10 (permalink)  
Alt 24-05-2009, 16:39
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #11 (permalink)  
Alt 24-05-2009, 16:49
donatelloii
 Registrierter Benutzer
Links : Onlinestatus : donatelloii ist offline
Registriert seit: May 2009
Beiträge: 13
donatelloii befindet sich auf einem aufstrebenden Ast
Standard

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.


Zitat:
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
Mit Zitat antworten
  #12 (permalink)  
Alt 24-05-2009, 20:59
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

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.
Mit Zitat antworten
  #13 (permalink)  
Alt 24-05-2009, 21:08
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

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


Mit Zitat antworten
  #14 (permalink)  
Alt 25-05-2009, 17:24
donatelloii
 Registrierter Benutzer
Links : Onlinestatus : donatelloii ist offline
Registriert seit: May 2009
Beiträge: 13
donatelloii befindet sich auf einem aufstrebenden Ast
Standard

Danke für die information.
Ich habe schon vor ein par tagen ein job eingesetzt und biz jetz noch kein angebot
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bei mir wird der Servername als E-Mail absender angezeigt. Brauche E-Mail Adresse! HansDerLange PHP Developer Forum 2 23-05-2008 17:24
mail() => HTML Seite wird in mail nicht angezeigt lightdisc PHP Developer Forum 2 20-12-2006 17:37
arrays mit mail versenden/Artikelliste per mail verschicken thargor1 PHP Developer Forum 2 24-08-2003 10:37
Frage zu mail () - Irgendwie kommt die mail häufig nicht an Thommy PHP Developer Forum 4 19-07-2002 10:28
mail an mehrere Empfänger mittels mail-mime-class und mysql-DB Ralf PHP Developer Forum 2 16-10-2001 13:12

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:52 Uhr.