<combie>
laeuft echt super =)
und ist sher viel code weniger, wie schon gesagt,
ich haette das so nie hinbekommen =D
jetzt habe ich auch etwas gelernt "wie vielseitig man mit wenig code sein kann" =)
</combie>
jetzt bastle ich noch die "navi" und "pro seite" funktionen ein und denn bin ich happy =D
obwohl ich es jetzt schon bin =D
thx, bye erstmal, bis denn =)
gez. das kleine dummi coding weiblein ;P
rsort() - array ab [0] verhindern
Einklappen
X
-
wow *fasziniertguck*
also so abkuerzen haette ich es bestimmt nie gekonnt *echt baff*
$akeys = array_keys($datei); hatte ich vorher.
das muss ich gleich mal testen =)
weisst du was combie =) du bist echt ein schatz =D
es werden die anderen maybe etwas meckern weil es sogesehen
vorgemacht wurde, aber ich zeige dafuer was ich bis jetzt erreicht
habe, was aber alles male nicht so gut ist wie dein code =)
zB index.php
tech/dynamic.phpPHP-Code:<?
$parameter="news"; //rubrik udn zugleich ordnnername
$news_wert=3; // anzahl der angezeigten artikel pro seite
include('tech/dynamic.php'); // ist der verarbeitende script
$parameter=""; // falls danach andere sachen folgen sollen zB notizen
?>
udn hiermit kann ich auch navigieren zBPHP-Code:<?
$req_param=$_REQUEST[$parameter];
$dir_raw="data/".$parameter;
if(!$news_wert) { $news_wert=3; };
$fname_link="";
//filename_link- falls nicht in die index.php includet wird , sondern zB seite.php
// <combie>
$datei = glob($dir_raw.'/*.html',GLOB_NOSORT); // <<-- Pfad und Endung anpassen
rsort($datei); // umdrehen
array_unshift($datei,'dummy'); // neues Element an pos 0
unset($datei[0]); // Element an pos 0 entfernen
#my_var_dump($datei); // und Zack, da isses wie gewünscht
// </combie>
// <Seitennummern als auswahl>
$Seitennummern="";
$zahlen="9";
$Maxdatei=count($datei);
for ($sn=1; $sn<=ceil (count($datei) / $news_wert); $sn++)
{
$Seitennummer="";
if ($sn==1 and $req_param>(($zahlen-1)/2)+1 and $Maxdatei>$zahlen) $Seitennummer="$sn...";
else if ($sn==1) $Seitennummer="$sn";
if ($sn > 1 and $sn < $Maxdatei)
{
if ($sn >= $req_param-((($zahlen-1)/2)-1) and $sn <= ($req_param+((($zahlen-1)/2)-1))) $Seitennummer="$sn";
else
{
if ($req_param<=((($zahlen-1)/2)+1) and $sn<$zahlen) $Seitennummer="$sn";
if ($req_param>$Maxdatei-(($zahlen-1)/2) and $sn>$Maxdatei-($zahlen-1)) $Seitennummer="$sn";
}
}
if ($sn==$Maxdatei and $req_param <= $Maxdatei-((($zahlen-1)/2)+1) and $Maxdatei>$zahlen) $Seitennummer="...$Maxdatei" ;
else if ($sn==$Maxdatei) $Seitennummer=$Maxdatei;
if ($Seitennummer <> "")
{
if ($Seitennummer == $req_param) $Seitennummern.= "<a class=\"link\" href=\"/$fname_link?$parameter=$sn\">$Seitennummer</a> ";
else $Seitennummern.= "<a href=\"/$fname_link?$parameter=$sn\">$Seitennummer</a> ";
}
}
echo $Seitennummern;
// </Seitennummern als auswahl>
// <datei-inhalte verabeiten>
if(!$req_param or $req_param==1)
{
$from = 1;
$to = $news_wert;
}
else
{
$from = $req_param*$news_wert-($news_wert-1);
$to = $req_param*$news_wert;
}
for ($i = $from; $i <= $to; $i++)
{
if($datei[$i]!=NULL)
{
{ // title
$fp=fopen($datei[$i], "r");
$titel_show = explode("<!--title-->",fread($fp,filesize($datei[$i])));
fclose($fp);
}
{ // author
$fp=fopen($datei[$i], "r");
$author_show = explode("<!--author-->",fread($fp,filesize($datei[$i])));
fclose($fp);
}
{ // text
$fp=fopen($datei[$i], "r");
$text_show = explode("<!--text-->",fread($fp,filesize($datei[$i])));
fclose($fp);
}
// date, filename START
$file_date_split = explode("_", $datei[$i]);
//$file_date_split { [0]="2007" [1]="06" [2]="18" [3]="12-00" [4]="news" [5]="filetagg.html" }
$file_date = ltrim($file_date_split[2],"0"); // tag
$file_date .= ".";
$file_date .= ltrim($file_date_split[1],"0"); // monat
$file_date .= ".";
$file_date .= $file_date_split[0]; // jahr
$file_date .= " r.";
// date, filename END
echo '<div style="height:15px; margin: 0px 4px;"><div style="float:left;"><b>Nr.</b> '.sprintf("%03d",
$akeys[$i]).'</div><div class="news_date" style="float:right;">'.$file_date.'</div></div>';
echo'<fieldset>';
if(trim($titel_show[1])!="") { echo '<legend align="center"><b>'.trim($titel_show[1]).'</b></legend>';}
if(trim($text_show[1])!="") { echo '<div align="justify" style=" line-height:14px;" >'.trim($text_show[1]).'</div>';}
if(trim($author_show[1])!="") { echo '<br /><br />'; author_link(trim($author_show[1])); }
echo'</fieldset><br />';
}
}
// </datei-inhalte verabeiten>
?>
http://host/?news=2
oder
http://host/?notizen=5
ist nichts angegeben so kommt das ins spiel
$news_wert=3; // anzahl der angezeigten artikel pro seite
ist "$news_wert" nicht angegeben so kommt wiederum das ins spiel
if(!$news_wert) { $news_wert=3; };
ich hoffe man versteht jetzt warum ich so dringend darauf bestanden hab =)
also meine version laeuft klasse dank der glob() loesung =)
jetzt muss sich nur noch die komplett combie loesung testen =)
thx combie =*Zuletzt geändert von Ricola; 16.07.2007, 22:20.
Einen Kommentar schreiben:
-
Zumindest das dreifache lesen der Datei ist überflüssig!
Auf foreach umgestellt:
Wo dein $akeys herkommt, oder wofür es gut ist knnte ich allerdings nicht feststellen..
PHP-Code:<?php
$filter = "./news/*.html"; // <<--anpassen
function author_link() // dummy
{}
$dateien = glob($filter,GLOB_NOSORT); // <<-- Pfad und Endung anpassen
rsort($dateien); // umdrehen
array_unshift($dateien,'dummy'); // neues Element an pos 0
unset($dateien[0]); // Element an pos 0 entfernen
//print_r($dateien); // und Zack, da isses wie gewünscht
$count = 0;
foreach($dateien as $datei)
{
$count++;
$content = file_get_contents($datei);
list(,$titel_show,) = explode("<!--title-->" ,$content);
list(,$author_show,) = explode("<!--author-->",$content);
list(,$text_show,) = explode("<!--text-->" ,$content);
// date, filename START
$file_date_split = explode("_", basename($datei));
$file_date = ltrim($file_date_split[2],"0"); // tag
$file_date .= ".";
$file_date .= ltrim($file_date_split[1],"0"); // monat
$file_date .= ".";
$file_date .= $file_date_split[0]; // jahr
$file_date .= " r.";
echo '
<div style="height:15px; margin: 0px 4px;">
<div style="float:left;">
<b>Nr.</b> '.sprintf("%03d",$count).'
</div>
<div class="news_date" style="float:right;">
'.$file_date.'
</div>
</div>';
echo '<fieldset>';
if(trim($titel_show)!="")
echo '<legend align="center"><b>'.trim($titel_show).'</b></legend>';
if(trim($text_show)!="")
echo '<div align="justify" style=" line-height:14px;" >'.trim($text_show).'</div>';
if(trim($author_show)!="")
echo '<br /><br />'; author_link(trim($author_show));
echo'</fieldset><br />';
}
?>
Einen Kommentar schreiben:
-
Bezog sich einfach nur aufbin zwar nicht blond aber ich weiss nicht worauf du deine frage beziehstSätze ohne Syntax sind schwierig.und merke ich gerade das bei der dump zwar die reichenfolge sich...
Einen Kommentar schreiben:
-
hm der aufbau ist genau so:
2007_06_18_08-03_news_warmersommer.html
datum_uhr-zeit_rubrik_orientirungstagg
orientirungstagg dafuer damit nicht die datei immer erst gleich geoeffnet werden muss um nach dem haupttagg zu suchen
wer der stimmt dan datei explode und filtern siehe kurzen ausschnitt:
und die files:PHP-Code:for ($i = $from; $i <= $to; $i++)
{
if($datei[$i]!=NULL)
{
{ // title
$fp=fopen($dir_raw."/".$datei[$i], "r");
$titel_show = explode("<!--title-->",fread($fp,filesize($dir_raw."/".$datei[$i])));
fclose($fp);
}
{ // author
$fp=fopen($dir_raw."/".$datei[$i], "r");
$author_show = explode("<!--author-->",fread($fp,filesize($dir_raw."/".$datei[$i])));
fclose($fp);
}
{ // text
$fp=fopen($dir_raw."/".$datei[$i], "r");
$text_show = explode("<!--text-->",fread($fp,filesize($dir_raw."/".$datei[$i])));
fclose($fp);
}
// date, filename START
$file_date_split = explode("_", $datei[$i]);
//$file_date_split { [0]="2007" [1]="06" [2]="18" [3]="12-00" [4]="news" [5]="titeltagg.html" }
$file_date = ltrim($file_date_split[2],"0"); // tag
$file_date .= ".";
$file_date .= ltrim($file_date_split[1],"0"); // monat
$file_date .= ".";
$file_date .= $file_date_split[0]; // jahr
$file_date .= " r.";
// date, filename END
echo '<div style="height:15px; margin: 0px 4px;"><div style="float:left;"><b>Nr.</b> '.sprintf("%03d",
$akeys[$i]).'</div><div class="news_date" style="float:right;">'.$file_date.'</div></div>';
echo'<fieldset>';
if(trim($titel_show[1])!="") { echo '<legend align="center"><b>'.trim($titel_show[1]).'</b></legend>';}
if(trim($text_show[1])!="") { echo '<div align="justify" style=" line-height:14px;" >'.trim($text_show[1]).'</div>';}
if(trim($author_show[1])!="") { echo '<br /><br />'; author_link(trim($author_show[1])); }
echo'</fieldset><br />';
}
PHP-Code:<!--title-->news title<!--title-->
<!--author-->phe<!--author-->
<!--text-->
lorem ipsum...
lorem ipsum...
lorem ipsum...
<!--text-->
Einen Kommentar schreiben:
-
Ganau das verstehe ich nicht!!!sondern mir ist es so nicht so umstaendlich beim einfuegen von news
Du hast da irgendwie einen Bock im Konzept
Aber ohne den Code zu sehen oder wenigstens einen Ablaufplan kann ich dazu wenig sagen.
Aus meiner Sicht gibt es KEINEN Grund am Index rum zu Pfuschen..
z.B:
Heißen deine Dateien ja "news_035.html" usw.
Da wäre die 35 genau die Zahl , an der ich mich orientieren würde!
Und Was passiert, wenn einer dort aus der Mitte rausgelöscht werden MUSS, Dann hängste da wieder mit deinem Konzept
Oder nicht?
Einen Kommentar schreiben:
-
das! war nur ein tippfehler ;POriginal geschrieben von penizillin
www.das-dass.de
dass! du dir aber eigentlich haettest schon denken koennen ;P
mir geht es nicht darum ob es schoener aussieht ;POriginal geschrieben von penizillin
und nicht, wie du es "schöner" findest.
sondern mir ist es so nicht so umstaendlich beim einfuegen von news
die exploded werden, ich habe das ganze "nicht" als sql laufen,
brauche ich auch nicht, denn laufen tut es spitze nur das mit der
sortierung und und dem [0] hat hier das ganze immer verschoben,
hab vor lauter +1 und -1 den ueberblick fast verloren und
dies ist so nun alle mal leichter und erfordert weniger code =)
Einen Kommentar schreiben:
-
Denke schon... darum ja auch GLOB_NOSORTsortierung bei windows und unix wurde die unterschiede machen?
Und Überhaupt, einmal in PHP sortieren reicht doch! Weil glob() würde die Dateien, für dich, in falscher Reihenfolge liefern.
Witzige Nebenerscheinung:
Unter Win ist das readdir Gedöns deutlich schneller als glob()
Unter linux ist die Situation genau umgekehrtZuletzt geändert von combie; 16.07.2007, 14:45.
Einen Kommentar schreiben:
-
www.das-dass.deweil ich gelesen hab das windows anders sortiert als ein unix system.
windows ist im gegensatz zu unix nicht case sensitive.
schließe mich combies erster antwort an: mach keinen unsinn und arbeite mit arrays so, wie sie aufgebaut sind, und nicht, wie du es "schöner" findest.
Einen Kommentar schreiben:
-
<combie>
soetwas aehnliches habe ich auch gerade geschrieben nur ohne dem glob(),
die glob() ist ja echt toll =)
kannte ich leider noch net.
sortierung bei windows und unix wurde die unterschiede machen?
weil ich gelesen hab das windows anders sortiert als ein unix system.
ich teste es gerade local,
muss erst alles anpassen und denn auf server online testen.
ich meld mich noch wie es ausschaut =)
danke =)
</combie>
<tontechniker>
hey na =)
bin zwar nicht blond aber ich weiss nicht worauf du deine frage beziehst
</tontechniker>
Einen Kommentar schreiben:
-
evtl hift dir dieses ja...PHP-Code:$test = glob('./*.php',GLOB_NOSORT); // <<-- Pfad und Endung anpassen
rsort($test); // umdrehen
array_unshift($test,'dummy'); // neues Element an pos 0
unset($test[0]); // Element an pos 0 entfernen
print_r($test); // und Zack, da isses wie gewünscht
Aber weiterhin, halte ich das Index Gedöns für recht Sinnfrei!
1. Man verwendet zum durchlaufen von Arrays normalerweise foreach und dem ist der Key erstmal egal
2. Solltest du for verwenden, kannst du problemlos vorwärts und rückwarts dadurch rennen...Zuletzt geändert von combie; 16.07.2007, 14:15.
Einen Kommentar schreiben:
-
maedls wissen es doch nicht besser *mist* ;P
und merke ich gerade das bei der dump zwar die reichenfolge sich
geaendert hat aber nur in form von "auf dem kopf stehend" (-.'-)
combie gut bemerkt weil das tatsaehclich nitch mit der frage hin kommt
weil die meine antwort zu frueh abgegeben hab x(
Einen Kommentar schreiben:
-
Na na...
Punkt1:
In deinem Eingangspostings Anforderungen wird NICHT der $key=> $value Bezug behalten! Also hast du jetzt was anderes, als du dir zu Anfang gewünscht hast
Punkt2:
Das Beispiel zu arsort im Handbuch, ist etwas dull
Weil: arsort ($fruits); dort Null Komma Null Wirkung hat !!
Punkt3:
Ich halte es für bedenklich assoziative und numerische Arrays "so" in einen Topf zu werfen. PHP hat da einige Fallen aufgestellt, in die man schnell mal eben Tappen kann.
Einen Kommentar schreiben:
-
=D danke das hat mir arsort() geklappt =)
keine sorge ich habe alle array functionen durchgelesen ich versuche mich an die reglen zu halten, hab nur leider die erklaerungen nicht
alle verstanden unter anderem die von arsort()
die hatte ich naemlich gestern abend schon versucht zu verstehen,
dumm war nur dass ich es nicht einfach getestet habe *schaem*
die erklarung von rsort() var besser verstaendlich deswegen hatte ich
diese genutzt.
nochmal thx =)
(^.^)Original geschrieben von combie
Wieso bestehst du auf sowas...?
Arrays haben mit 0 anzufangen,
was waere denn damit
d = Zitrone
a = Orange
b = Banane
c = Apfel
auszug manual
ich finde das ist das gleiche ding wie mit der "streit" um "short open taggs"
generel sagt fast jeder
benutze diese nicht, aber in wirklichkeit
werden diese trotzdem benutzt.
naja ist ja auch net schlimm
jetzt funzt es ja =D
thx bye =)
Einen Kommentar schreiben:
Einen Kommentar schreiben: