php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 03-11-2006, 13:15
lauderbachm
 Newbie
Links : Onlinestatus : lauderbachm ist offline
Registriert seit: Nov 2006
Beiträge: 2
lauderbachm ist zur Zeit noch ein unbeschriebenes Blatt
Standard Lösungsansätze für meinen Script

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:

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>";

?>
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
Mit Zitat antworten
  #2 (permalink)  
Alt 03-11-2006, 14:20
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
 $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))

Du hast hier ein paar variablen durcheinander geschmissen..

die erste Zeile benötigst du nicht, da du im anschluss mit foreach arbeitest...

foreach erwartet ein array...

hier also foreach($str as $darsteller)

denn jedes element von $str enthält genau einen darsteller...
nun sollte es funktionieren....


Insgesamt gibt es noch viele Stellen, die man einfach und eleganter lösen kann, aber für die ersten Gehversuche auf PHP nicht schlecht..

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #3 (permalink)  
Alt 03-11-2006, 14:49
lauderbachm
 Newbie
Links : Onlinestatus : lauderbachm ist offline
Registriert seit: Nov 2006
Beiträge: 2
lauderbachm ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo High,

danke für den Hinweis... aber:

Zitat:

die erste Zeile benötigst du nicht, da du im anschluss mit foreach arbeitest...

foreach erwartet ein array...

hier also foreach($str as $darsteller)

denn jedes element von $str enthält genau einen darsteller...
nun sollte es funktionieren....
ich benötige ja die Anzahl der Schauspieler also Schauspieler X spielt in *anzahl* Filmen mit. Wenn ich das weglasse Funktioniert die Zahlangabe nicht mehr.

Habs dann mal trotzdem ohne das Versucht und nach der if anweisung mit einer else Anweisung "keine Schauspieler gefunden" ausgegeben. Also so:

PHP-Code:
if(eregi("^$buchst.*",$darsteller))
{  
//code von oben }
else
{ echo 
"Keine Schauspieler gefunden"; } 
//code von oben 
Es gibt mir dann trotzdem bei allen Buchstaben ein "Kein Schauspieler gefunden".

Zitat:
Insgesamt gibt es noch viele Stellen, die man einfach und eleganter lösen kann, aber für die ersten Gehversuche auf PHP nicht schlecht..
Danke dir . Bin natürlich auch für verbesserungsvorschläge offen. Nur aus Fehlern lernt man schliesslich.

Gruss
Michael
Mit Zitat antworten
  #4 (permalink)  
Alt 03-11-2006, 16:50
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

und es ist auch klar warum.

Das $-zeichen deliniert das ende der regexp also sucht es nach "^$"

Du musst es entweder markieren oder besser so machen:

eregi("^".$buchst.".*",$darsteller)

noch besser wäre du würdest preg_match verwenden was schneller ist:

preg_match("^".$buchst.".*",$darsteller)
Mit Zitat antworten
Antwort

Lesezeichen


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

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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:42 Uhr.