Mysql-Übergabe fehlerhaft?

Hi,

ok.. ich bastel dann auch schon mal am Skript weiter! Würd' gern deinen Ansatz sehen, wenn du was neues geschrieben hast! Noch ein schönes Wochenende!
 
Hi nordi,

die Liste mit den Links ist auch nicht schlecht. Hier mal mein geistiger Erguss vomk WE:


Liste mit den Links:

Code:
$query=mysql_query("SELECT artist FROM $table GROUP BY artist");
while($result=mysql_fetch_array($query))
{
// Liste Künstler aufgeben mit Link der jeweiligen ID des Künstlers..
    echo "<a href=maske.php?id=".$result[0]."' target='artists'><b>".$result[0]."</b></a><br>";
}


Auflistung der Künstlerdetails:

Code:
$query=mysql_query("SELECT * FROM $table WHERE artist='".$_GET['id']."'");
echo "<table width='100%' border='0' cellspacing='0' cellpadding='1'>
  <tr>
    <td colspan='Anzahl der Spalten' align='center' >".$_GET['id']."</td>
  </tr><tr>
    <td>Titel</td>
    <td>L&auml,nge</td>
    // usw
  </tr>";
while($result=mysql_fetch_array($query))
{
  echo "
  <tr>
    <td>".$result['title']."</td>
    <td>".$result['duration']."</td>
    // usw
  </tr>
  ";
}
echo "</table>";


Gruß.
 
Hi, klappt bis jetzt alles super! Könntest du mir den "Trick" verraten, warum nun die Künstler nicht mehr doppelt angezeigt werden? Ich versteh da die Abfrage nicht ganz! So der Auflistung von der Artist-Werten. Dort gibt er mir die Fehlermeldung:

Code:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in [...]

dabei zeigt er auf folgenden Code:

PHP:
while($result=mysql_fetch_array($query))

Echt vielen Dank für deine Hilfe und Tipps..
 
Hi nordi,

Der "Trick" ist das "GROUP BY"-Argument in der SELECT-Anweisung. Dabei werden alle Einträge gruppiert (gleiche "Werte" werden nur einmal aufgeführt),


Der Fehler besagt, dass die Abfrage kein Ergebnis zurückgeliefert hat und somit das Lösungsarray "$result" nicht gefetcht (zerlegt) werden kann.

Ich weiss jetzt nicht, ob meine Abfrage exakt mit deiner Datenbank übereinstimmt. Der Aufbau der 2. Abfrage sieht wie folgt aus:

SELECT * FROM <Tabellenname> WHERE <Name der Spalte, in der die Künstlernamen gespeichert sind> = '<Name des Künstlers>

gegebenfalls musst du die Abfrage an deine DB anpassen.

Der Name des Künstlers sollte eigentlich mit dem Link übermittelt werden. (http://...maske.php?id=<Name des Künstlers>. Über $_GET['id'] extrahierst du den Namen aus dem Link. Überprüf doch mal bitte, ob bei dir die id mit übergeben wird.

(echo $_GET['id']; am Anfang des maske.php Skriptes)

Lokal bei mir hat die Auflistung der Künstlerdetails funktioniert.


Gruß.
 
Hi,

ah ok.. GROUP BY ist also das Zauberwort :)

Also die id wird übergeben.. habe aber den Fehler gefunden, glaube ich. Nehmen wir mal den ersten Künstler aus der Excelliste.. Bei der Maske wird nur "Alec" als id angegeben und nicht der komplette Name des Künstlers (Nachname fehlt also).. die Abfrage zielt ja auf einen Vergleich zwischen id (hier Name des Künstlers) und MySQL-Tabelle artist ab und findet keinen korrekten Verweis.. kann das sein?

Hab dir mal meine Abfrage nochmal reinkopiert.

PHP:
<?php
			include("../../config/config.php");
			
mysql_connect("$dbhost","$dbuser","$dbpass");
mysql_select_db("$dbtable");
$query=mysql_query("SELECT * FROM $artists WHERE artist='".$_GET['id']."'");
echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'>
            <tr>
              <td colspan='2'>".$_GET['id']."</td>
            </tr>";
while($result=mysql_fetch_array($query))
{
  echo "
            <tr>
              <td colspan='2'>//SPACER 5px</td>
            </tr>
            <tr>
              <td colspan='2'>//FLASHFILM</td>
              </tr>
            <tr>
              <td colspan='2'>//SPACER 5px</td>
              </tr>
            <tr>
              <td width='50%'>".$result['info']."</td>
              <td width='50%'>".$result['title']."</td>
            </tr>";
}
echo "</table>";
?>

Nur mal kurz ne andere Frage: Der Wert title in der Datenbank gibt ja die Bildnamen des jeweiligen Künstlers wieder. Zeigt die Abfrage, wenn sie dann funktioniert, alle Bildernamen an oder nur eins? Wenn es alle anzeigt, wie läuft das dann mit dem Info-Text beim Künstler? Der sollte ja nur einmal angezeigt werden..:rolleyes:
 
Hi nordi,

Ich bin grad verwirrt, weil bei mir alles ordnungsgemäß funktioniert. Der Name wird komplett übergeben. Ich kann auch sonst im Moment keinen Fehler mehr entdecken.

Wenn ich den Link von Alec Crichton anklicke, erhalte ich folgende Ausgabe:

########################################
Kuenstler: Alec Crichton
Code:
echo "Kuenstler: ".$_GET['id']."<br><br>";

A19<->Eremozoikum<->Alec Crichton
A27<->GRAS<->Alec Crichton
A33<->Haustauben<->Alec Crichton
A45<->Land 02<->Alec Crichton
A50<->Marienfeld<->Alec Crichton
A52<->Mauenheim<->Alec Crichton
A59<->Palomafuente<->Alec Crichton
A97<->wahit<->Alec Crichton
B02<->frequenzfluss<->Alec Crichton
########################################

Ich habe mir der Einfachkeit halber mal nur die ersten 3 Spalten aus der DB ausgeben lassen und durch das "<->" von einander getrennt.


Daher nochmal mein Lösungsvorschlag mit 2 Tabellen.

Beispiel
Alec hat 10 Bilder gemalt. Als Info zu Alec soll stehen: "Super Künstler". Also lautet deine Tabelle momentan wie folgt:

id <-> title <-> artist <-> ... <-> info <-> ...

A00 <-> Bild1 <-> Alec Crichton <-> ... <-> Super Künstler <-> ...
A01 <-> Bild2 <-> Alec Crichton <-> ... <-> Super Künstler <-> ...
A02 <-> Bild3 <-> Alec Crichton <-> ... <-> Super Künstler <-> ...
A03 <-> Bild4 <-> Alec Crichton <-> ... <-> Super Künstler <-> ...
A04 <-> Bild5 <-> Alec Crichton <-> ... <-> Super Künstler <-> ...
A05 <-> Bild6 <-> Alec Crichton <-> ... <-> Super Künstler <-> ...
A06 <-> Bild7 <-> Alec Crichton <-> ... <-> Super Künstler <-> ...
A07 <-> Bild8 <-> Alec Crichton <-> ... <-> Super Künstler <-> ...
A08 <-> Bild9 <-> Alec Crichton <-> ... <-> Super Künstler <-> ...
A09 <-> Bild10 <-> Alec Crichton <-> ... <-> Super Künstler <-> ...

Nun siehst du, dass du die Info 10x mitspeicherst (und den Namen auch). Viel besser wäre es mit 2 Tabellen

table1
kuenstler_id <-> name <-> Vorname <-> info <-> ...

1 <-> Crichton <-> Alec <-> Super Künstler <-> ...

table2
bild_id <-> bildname <-> kuenstler_id <-> ...

A00 <-> Bild1 <-> 1 <-> ...
A01 <-> Bild2 <-> 1 <-> ...
A02 <-> Bild3 <-> 1 <-> ...
A03 <-> Bild4 <-> 1 <-> ...
A04 <-> Bild5 <-> 1 <-> ...
A05 <-> Bild6 <-> 1 <-> ...
A06 <-> Bild7 <-> 1 <-> ...
A07 <-> Bild8 <-> 1 <-> ...
A08 <-> Bild9 <-> 1 <-> ...
A09 <-> Bild10 <-> 1 <-> ...


Und ganz nebenbei löst sich damit auch das Problem mit dem nicht übergebenen Nachnamen, weil man mit dieser Lösung die "kuenstler_id" mit dem Link übergibt und in die Abfrage einbindet.
Code:
$query=mysql_query("SELECT * FROM $artists WHERE artist=".$_GET['id'].");
$_GET['id'] entspricht nun einem Integerwert und muss nicht mehr in Hochkommas gesetzt werden.




Wenns dir zu kompliziert wird, kann ich dir mal eine Komplettlösung (Erstellung und Befüllung der DB, Linkliste und Künstlermaske) basteln.


Gruß.
 
Hi, ne bei mir gibt er nix aus? Bist du zufällig über ICQ oder sowas zu erreichen? ICQNr.: 76448987
 
Hi nordi,

ICQ oder sowas hab ich nicht.

Ich bastel dir mal ein einfaches Skript, in dem die Datenbank (mit 2 Tabellen) erstellt und befüllt wird, die Linkliste und die Künstlerdetails ebenso.


Gruß.
 
Hi nordi,

Es hat zwar ein bissel gedauert, aber nun hab ich was fertig.

Im Anhang findest du ein Archiv, in dem du die "nordi.php" und die "cliplist.csv" findest.
Die Cliplist musste ich ein Wenig verändern, also nimm bitte die aus dem Archiv.
Kopier bitte beide Dateien in deinen htdocs-Ordner.

Bevor du das Skript starten kannst, musst du es erst noch mal bearbeiten (wie und was, steht alles im Script als Kommentar).
Wenn du das Script angepasst hast, kannst du es mal ausführen. Dann sollte alles funktionieren.


Gruß.
 

Anhänge

Zurück