Seite 1 von 2

Ein kleines aber für mich großes Problem

Verfasst: 06.06.2009, 20:50
von Michael1967
Hallo,
ich habe ein kleines Problem und komme einfach nicht ans Ziel.

Ich habe ein Script - einen Content Generator plus Eintragshilfe.
Dort sind in einer Datenbank Tabelle – domaindaten die Domaindaten gespeichert. Zusätzlich kann ich von Domain zu Domain umschalten/wechseln. Dazu befindet sich ein Feld - aktiv in dieser Datenbank-Tabelle. Es ist immer die Domain aktiv wo im Feld aktiv eine 1 steht.

Nun habe ich eine weitere Tabelle, wo die Kataloge drin gespeichert sind. Wenn ich mich irgendwo eintrage - kann ich diesen Vorgang abspeichern. (auch hier noch ein Feld aktiv = 1 / wenn eine 1 drin steht wurde schon eingetragen). Nach dem Abspeichern ist der Link in der Liste nicht mehr aufrufbar.

Wenn ich jetzt zu einer anderen Domain umschalte, dann zeigt er mir natürlich die gespeicherten Einträge auch dort an, obwohl ich diese Domain noch nirgendwo eingetragen habe.

Wie schaffe ich es, dass ich die getätigten Einträge für jede Domain separat abspeichern kann? Na hoffentlich versteht das auch jemand, gg

Verfasst:
von
Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Verfasst: 06.06.2009, 21:05
von BKEAIM
Du könntest den Einträgen in den ersten beiden Tabellen jeweils ID-Nummern (oder andere Schlüssel) zuordnen, und in einer dritten Tabelle die Schlüsselkombinationen aus Domain- und Katalog-Tabelle speichern, sobald Du eine Domain in einen Katalog einträgst.

Verfasst: 06.06.2009, 21:08
von Michael1967
Hmmm, also die Tabelle für die Katalogliste verfügt schon über Ids. Jeder Katalog hat eine ID. Und nun soll ich eine weitere Tabelle anlegen? Wie genau sollte die aufgebaut sein und wie vergleiche ich das dann mit der Tabelle wo die Kataloge drin stehen?

Verfasst:
von

Verfasst: 06.06.2009, 21:15
von BKEAIM
Diese Tabelle bräuchte nur zwei Spalten, welche die Schlüssel aus den beiden anderen Tabellen als Fremdschlüssel referenzierten.

Das würde dann auch diese 1=aktiv-Geschichte erübrigen.

Verfasst: 06.06.2009, 21:19
von Michael1967
2 Spalten für beispielsweise 5 Domains? Verstehe ich jetzt irgendwie nicht. Und in den 2 Spalten kann ich dann die Einträge für Domain 1,2,3,4, und 5 speichern? :roll:

Und wie rufe ich die Katalogliste dann auf? Die schaut ja für jede Domain anders aus.

Gibt es für sowas irgendwo Beispiele?

Sorry, aber ich blicke das nicht - sehe nur noch Zeichen vor mir, gg

Verfasst: 06.06.2009, 21:30
von BKEAIM
OK, ein einfaches Beispiel sähe so aus:

Domain-Tabelle:

Code: Alles auswählen

DomainID | URL              | ...
==========================================

1        | www. example.com | ...
2        | www. example.net | ...
3        | www. example.org | ...
...
Katalog-Tabelle:

Code: Alles auswählen

KatalogID | URL              | ...
==========================================


1         | www. catalog.com | ...
2         | www. catalog.net | ...
3         | www. catalog.org | ...
...
Jetzt trägst Du example.com in catalog.com und catalog.org, example.net in catalog.net und catalog.org und example.org in catalog.com und catalog.net ein.

Domain-Katalog-Tabelle:

Code: Alles auswählen

DomainID | KatalogID 
=======================
1        | 1 
1        | 3
2        | 2
2        | 3
3        | 1
3        | 2

Verfasst: 06.06.2009, 21:36
von Michael1967
Ach so, nun habe ich das verstanden. Danke für deine Hilfe.

Werd ich dann mal ausproieren.

Nur eines noch - wie rufe ich jetzt die Katalogliste für jede Domain auf?

Bis jetzt mache ich das für 1 Domain so - wie muss es nach dieser Änderung aussehen?

Code: Alles auswählen

// ist noch eine Blätterfunktion drin
$abfrage = "SELECT * FROM kataloge order by titel ASC LIMIT ".($perpage*($page-1)).",".($perpage);
$ergebnis = mysql_query($abfrage);
   
while($row = mysql_fetch_object($ergebnis)) {

if($row->aktiv == "1")
    {
   echo"Zeigt nur den Titel<br />";
 &#125;
  else
    &#123;
   echo"Zeigt die URL<br />";
&#125;
&#125;

Verfasst: 06.06.2009, 22:00
von BKEAIM
Mit einer Abfrage in der Art von:

Code: Alles auswählen

SELECT * 
FROM domain AS d
   JOIN domainkatalog AS dk ON d.domainID = dk.domainID
   RIGHT JOIN katalog AS k ON dk.katalogID = k.katalogID
WHERE d.domainID = xyz
Die ID der anzuzeigenden Domain wäre hier xyz. Die Kataloge, in welche die Domain bislang noch nicht eingetragen wurde, hätten im Ergebnis dieser Anfrage NULL-Werte in den Spalten der Domain-Tabelle.

Verfasst: 06.06.2009, 22:05
von Michael1967
Okay, das mit dem Speichern klappt schon mal - jetzt versuche ich die Abfrage.

Vielen Dank erstmal - hast mir sehr geholfen!

Verfasst: 06.06.2009, 22:18
von Michael1967
Habe jetzt -

Code: Alles auswählen


$abfrage = "SELECT * FROM domaindaten AS d JOIN kataloge AS dk ON d.domainid  = dk.domainid 
RIGHT JOIN kataloge AS k ON dk.katalogid = k.katalogid 
WHERE d.domainid = 4 order by titel ASC LIMIT ".&#40;$perpage*&#40;$page-1&#41;&#41;.",".&#40;$perpage&#41;;

$ergebnis = mysql_query&#40;$abfrage&#41;;

Nun kommt - Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/......

Was ist da nun falsch?

Verfasst: 06.06.2009, 22:21
von BKEAIM
Wenn Du nach den Titeln der Kataloge sortieren möchtest, k.titel verwenden.

Außerdem joinst Du zwei Mal kataloge. Beim ersten Mal müsstest Du die Domain-Katalog-Tabelle verwenden.

Verfasst: 06.06.2009, 22:24
von Michael1967
Geht nicht, die Fehlermeldung bleibt.

Code: Alles auswählen

$abfrage = "SELECT * FROM domain AS d JOIN domaindaten AS dk ON d.domainid  = dk.domainid 
RIGHT JOIN kataloge AS k ON dk.katalogid = k.katalogid 
WHERE d.domainid = 4";

Verfasst: 06.06.2009, 23:16
von BKEAIM
Versuch' mal folgendes als Ausgangspunkt, weitere Spalten nach Bedarf ergänzen:

Code: Alles auswählen

$abfrage = "SELECT  k.katalogid, d.domainid  
FROM domaindaten dk 
   RIGHT JOIN kataloge k ON k.katalogid = dk.katalogid 
   LEFT JOIN domain d ON d.domainid = dk.domainid AND d.domainid = 4 
GROUP BY k.katalogid";

Verfasst: 06.06.2009, 23:26
von Michael1967
Ich glaube so kann es auch nicht gehen, weil die Tabellen so aufgebaut sind.

Tabelle domaindaten (dort steht die ausgewählte Domain drin)
Ausgewählt ist die Domain id per aktiv=1

Tabelle kataloge (hier stehen alle Kataloge drin)
id
titel
url

Tabelle domain (hier werden die Einträge gespeichert, so wie von dir vorgeschlagen).

domainid katalogid
4 173
4 97
4 202
4 205

Somit kann die Abfrage gar nicht funktionieren, Sorry aber das habe ich jetzt übersehen!

Die Tabelle domaindaten muss in der Abfrage nicht berücksichtigt werden.

Verfasst: 07.06.2009, 00:34
von Michael1967
Die Fehlermeldung ist nun weg, aber nun listet er mir nur die 4 Kataloge aus der Tabelle wo die einträge gespeichert werden.

Code: Alles auswählen

$abfrage = "SELECT * FROM domaindaten AS d JOIN domain AS dk ON d.domainid  = dk.domainid 
RIGHT JOIN kataloge AS k ON dk.katalogid = k.katalogid 
WHERE d.domainid = 4";

Hatte die Spalten überall umbenannt in domainid und katalogid. Müsste die Abfrage nicht mit SELECT * FROM kataloge beginnen, weil sonst komme ich doch nicht an den Inhalt der Katalogliste.