Hi zusammen,
ich beschäftige mich seit einige Monaten mit PHP und habe mich neben der Buchlektüre dazu entschlossen ein kleines Projekt zu erarbeiten um das Gelernte auch umzusetzten.
Ich habe dafür meine DVD Sammlung als Ausgangspunkt genommen und mir eine kleine DB geschrieben wo ich die Filme, Schauspieler, Regisseure etc. erfassen kann.
Soweit so gut. Die Hauptfunktionen der DB habe ich hingekriegt (Film anzeigen, suchen sortieren). Nun möchte ich aber noch gerne wissen welche Schauspieler in wie vielen Filmen mitgespielt haben. Dazu habe ich untenstehendes Script geschrieben, das mir die Schauspieler aus der DB liest und sie so gruppiert, dass mir angezeigt wird in wie vielen Filmen die Schauspieler mitgespielt haben. Hier mal das (funktionierende) Script:
Die Schauspieler sind in der DB als der Spalte schauspieler gespeichert und so erfasst: vorname nachname1, vorname nachname2, etc...
Nun möchte ich gerne noch zwei Funktionen einbauen. Das übersteigt meinen Horizont in Sachen PHP leider doch etwas. Habe sehr viele Foren durchsucht und Tutorials angeschaut, verzweifle aber doch langsam daran.
1. Möchte ich eine Meldung ausgeben, wenn es bei einem Buchstaben keine Schauspieler gibt. Ich weiss aber nicht wo ich das einbauen soll, denn bei allem was ich bis jetzt versucht habe, gibt er mir die Meldung immer bei allen Buchstaben aus und vor allem auch über der Ueberschriftstabelle.
2. Möchte ich das Resultat nach circa 20 Einträgen seitenweise verteilen. Ich habe jetzt sicherlich jeden Thread in diesem (und anderen Foren) zum Thema "blättern" gelesen, aber keinen Ansatz gefunden wie ich das hier in meinem Script anwenden könnte.
Ich wäre für jede Unterstützung bzw. Lösungshilfe dankbar.
Gruss
Michael
ich beschäftige mich seit einige Monaten mit PHP und habe mich neben der Buchlektüre dazu entschlossen ein kleines Projekt zu erarbeiten um das Gelernte auch umzusetzten.
Ich habe dafür meine DVD Sammlung als Ausgangspunkt genommen und mir eine kleine DB geschrieben wo ich die Filme, Schauspieler, Regisseure etc. erfassen kann.
Soweit so gut. Die Hauptfunktionen der DB habe ich hingekriegt (Film anzeigen, suchen sortieren). Nun möchte ich aber noch gerne wissen welche Schauspieler in wie vielen Filmen mitgespielt haben. Dazu habe ich untenstehendes Script geschrieben, das mir die Schauspieler aus der DB liest und sie so gruppiert, dass mir angezeigt wird in wie vielen Filmen die Schauspieler mitgespielt haben. Hier mal das (funktionierende) Script:
PHP-Code:
<?
include("inc/var.inc.php");
include("inc/functions.inc.php");
$db_table = "dvd";
include("inc/connect.inc.php");
//DB nnd Anzahl der Resultate abfragen
mysql_select_db($db_table,$db);
$result = mysql_query("SELECT id, schauspieler FROM $db_table");
$anzahl = mysql_num_rows(mysql_query("SELECT id, schauspieler FROM $db_table"));
// Array erstellen
$str = array();
while(list($id[],$schauspieler[]) = mysql_fetch_row($result));
for($i=0; $i < $anzahl; $i++)
{
// Array schauspieler bei jedem Durchlauf in array str anhängen.
array_push($str,$schauspieler[$i]);
}
// Datenbank schliessen
$db_close = @MYSQL_CLOSE($db);
$str = implode(", ", $str); //array in Zeichenkette umwandeln, um alle Teile zusammen zu fügen
$str = explode(", ", $str); //Schauspieler in einzelne Arrays unterteilen
// Funktion um Name und Vorname umzudrehen
foreach($str as $key => $wert){
$worte = explode(" ",$wert);
// ¨berprüfen ob Schauspieler 2 Vornamen hat und diese entsprechend zusammensetzten
if (isset($worte[2]))
{
$str[$key] = $worte[2]." ".$worte[0] . " " . $worte[1] ;
}
else
{
$str[$key] = $worte[1]." ".$worte[0];
}
}
// Array sortieren
natcasesort($str);
// überprüfen ob $buchstabe übergeben wurde
if(isset ($buchst))
{
// Tabelle erstellen für Ausgabe:
echo "<table width=\"800\" border=\"0\">
<tr>
<td width=\"700\"><strong><u>Schauspieler</strong></u></td>
<td width=\"100\"><b><u><div align=\"center\">Anzahl Filme</div></b></u></td>
</tr>";
// Array gruppieren
$anz_darsteller = array_count_values($str);
foreach($anz_darsteller as $darsteller=>$anzahl)
{
// überprüfen ob $darsteller mit dem übergebenen Buchstaben übereinstimmt
if(eregi("^$buchst.*",$darsteller))
{
// Zeichenkette $darsteller auseinander nehmen und in Vor- und Nachname unterteilen
$pos = strpos($darsteller, " ");
$nn = substr($darsteller,0,$pos);
$pos = $pos +1;
$vn = substr($darsteller,$pos);
// Ausgabe der Ergebnisse in Tabelle
echo "<tr>
<td width=\"700\">" . $vn . " " . $nn . "</td>
<td width=\"100\"><a href='index.php?site=search&what=darsteller&search="
.$vn ." ".$nn ."'><div align=\"center\">"
. $anzahl . "</div></a>
</b></td></tr>";
}
}
}
else
{
// Meldung falls kein Buchstabe übergeben wurde.
echo "Es wurde kein Buchstabe ausgewählt.";
}
echo "</table>";
?>
Nun möchte ich gerne noch zwei Funktionen einbauen. Das übersteigt meinen Horizont in Sachen PHP leider doch etwas. Habe sehr viele Foren durchsucht und Tutorials angeschaut, verzweifle aber doch langsam daran.
1. Möchte ich eine Meldung ausgeben, wenn es bei einem Buchstaben keine Schauspieler gibt. Ich weiss aber nicht wo ich das einbauen soll, denn bei allem was ich bis jetzt versucht habe, gibt er mir die Meldung immer bei allen Buchstaben aus und vor allem auch über der Ueberschriftstabelle.
2. Möchte ich das Resultat nach circa 20 Einträgen seitenweise verteilen. Ich habe jetzt sicherlich jeden Thread in diesem (und anderen Foren) zum Thema "blättern" gelesen, aber keinen Ansatz gefunden wie ich das hier in meinem Script anwenden könnte.
Ich wäre für jede Unterstützung bzw. Lösungshilfe dankbar.
Gruss
Michael
Kommentar