PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nach Artikelnummer gruppieren


norbert3
23.10.2012, 21:27:46
Hallo Miteinander,
ich lese aus einem Ordner den Inhalt per Schleife aus und lege es in ein Array.


###Navigation direkt aus dem Ordner /.inhalt laden und sortiert ausgeben
$i = 0;
$buchstabe_alt = "";
$dir = opendir("./inhalt");
$linkarray=array();
while ($content = readdir($dir)){
if ($content != '.' && $content != '..') {
$linkarray[]=$content;
}
}

sort($linkarray);
foreach ($linkarray as $key => $val) {
$teile = explode(".", $val);
$buchstabe = substr($val, 0, 3);

$zahl = intval($buchstabe);


switch ($zahl){
case 10:$ausgabe = "<h4>Fahrwerk</h4>";
break;
case 20:$ausgabe = "<h4>Bremsen/Bremsanlagen</h4>";
break;
case 30:$ausgabe = "<h4>Wagen/Lok(allgemein)</h4>";
break;
case 40:$ausgabe = "<h4>Feldbahn</h4>";
break;
case 50:$ausgabe = "<h4>Muster</h4>";
break;
case 60:$ausgabe = "<h4>Zubeh&ouml;r</h4>";
break;
case 70:$ausgabe = "<h4>Schmalspur</h4>";
break;
case 80:$ausgabe = "<h4>Lok(allgemein)</h4>";
break;
case 101:$ausgabe = "<h4>Baugruppen/Bauteile</h4>";
break;
case 201:$ausgabe = "<h4>Fahrzeuge/Baus&auml;tze</h4>";
break;
}



Lasse ich mir per echo die $zahl anzeigen erhalte ich dies:102030406080101102201203

Nun zu meiner Frage: Wie gruppiere ich die Nummern 101 und 102 zu einer Gruppe und 201 und 203 zu einer.

Vielen Dank im Voraus.

mfg Norbert

vt1816
24.10.2012, 06:57:05
$zahl = intval($buchstabe);

switch ($zahl){
case 10:$ausgabe = "<h4>Fahrwerk</h4>";
break;
case 20:$ausgabe = "<h4>Bremsen/Bremsanlagen</h4>";
break;
case 30:$ausgabe = "<h4>Wagen/Lok(allgemein)</h4>";
break;
case 40:$ausgabe = "<h4>Feldbahn</h4>";
break;
case 50:$ausgabe = "<h4>Muster</h4>";
break;
case 60:$ausgabe = "<h4>Zubeh&ouml;r</h4>";
break;
case 70:$ausgabe = "<h4>Schmalspur</h4>";
break;
case 80:$ausgabe = "<h4>Lok(allgemein)</h4>";
break;
case 101:
case 102:$ausgabe = "<h4>Baugruppen/Bauteile</h4>";
break;
case 201:
case 203:$ausgabe = "<h4>Fahrzeuge/Baus&auml;tze</h4>";
break;
}

norbert3
24.10.2012, 18:26:11
Hallo und vielen Dank für die Antwort.

Leider funktioniert diese Gruppierung bei mir nicht.
Ich habe den Inhalt der $zahl noch einmal ausgeben lassen und erhalte 102030406080101102201203

Gibt es noch eine andere Lösung?

mfg Norbert

meikel (†)
24.10.2012, 19:05:02
Leider funktioniert diese Gruppierung bei mir nicht.
...
Gibt es noch eine andere Lösung?
Nicht für jedes schlechtes Projekt gibts ne Anleitung zum Aufbohren.

vt1816
24.10.2012, 19:22:15
[..]
Gibt es noch eine andere Lösung?

Beschreibe bitte was Du erwartest? Wie soll die Gruppierung aussehen?

norbert3
27.10.2012, 19:52:15
Hallo und vielen Dank für eure Geduld.
Aus dem Ordner ./inhalt wird per Linkarray alle Dateien eingelesen. Die Dateien beginnen im Dateinamen alle mit der Artikelnummer-Dateiname.php.
Aus dieser Artikelnummer welche mit 01001,02001,03001,04001,05001,06001,07001,08001,09001,10101,10201,2010 1,20301 beginnen, werden die ersten drei Zahlen für die Gruppierung benutzt.

Die Gruppierung soll am Ende so ausgegeben werden:

Fahrwerk
Bremsen/Bremsanlagen
Wagen/Lok(allgemein)
Feldbahn
Muster
Zubeh&ouml;r
SchmalspurLok(allgemein)
Baugruppen/Bauteile
Fahrzeuge/Baus&auml;tze


Die Gruppierung funktioniert, so wie hier vorgeschlagen wurde auch, aber ich möchte gern die 101 und 102 zusammen in eine Gruppe setzen. Das selbe gilt 201 und 203

mfg Norbert

vt1816
27.10.2012, 21:37:47
[..]

Die Gruppierung funktioniert, so wie hier vorgeschlagen wurde auch, aber ich möchte gern die 101 und 102 zusammen in eine Gruppe setzen. Das selbe gilt 201 und 203


Sorry, aber entweder habe ich Dein Problem noch nicht verstanden oder Du hast den oben genannten Code noch nicht probiert/umgesetzt/getestet.

Füge doch bitte ein Beispiel Deiner nächsten Antwort bei.

norbert3
28.10.2012, 11:42:18
Hey,
natürlich habe ich den Code so geändert wie er von dir vorgeschlagen wurde.
Über diesen link kannst du dir das mal Live ansehen:
http://ts.spur-ii.de/Bauteile/catalog/index.php

Vielen Dank im Voraus
Norbert

vt1816
28.10.2012, 16:27:41
Hallo Norbert,

da hatte ich Dein Problem doch richtig verstanden. Du möchtest die 101 & 102 sowie die 201 & 203 jeweils unter einem Link zusammenfassen.

Leider enthältst Du uns aber den weiteren Code vor, mit dem Du nach der Ermittlung der Dateien im Pfad ./inhalt die Struktur für die Linkliste erstellst. Da liegt auch Dein Problem begraben. Nicht in dem Code den Du uns hier bis jetzt gezeigt hast.
Wie geht der Code weiter? Wie und wo verarbeitest Du $ausgabe? Wo wird das Menue zusammengebaut?

norbert3
29.10.2012, 17:46:17
hey vt1816,
hier ist mal die komplette Seite. Danke für deinen Denkanstoß. Ich glaube dort liegt mein Fehler. Das werd ich heute Abend gleich mal testen.

Danke für deine Mühe.
mfg
Norbert

<?
require 'systems.php';

foreach($_GET as $getkey => $getvalue){
$$getkey = $getvalue;
// echo $getkey.'='.$$getkey.' | ';
}
//echo $br;

foreach($_POST as $postkey => $postvalue){
$$postkey = $postvalue;
// echo $postkey.'='.$$postkey.' | ';
}
//echo $br;

if ($clear){
session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])){
setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
}

session_start();
$sname=session_name();
$swert=session_id();

include 'func.php';

if(!$summe){
$summe="0";
}

### inhalte laden
if(!$seite){
$seite="start.php";}

if($seite=="agb.php" || $seite=="start.php" || $seite=="warenkorb.php" ||
$seite=="bez.php" || $seite=="widerruf.php" || $seite=="datenschutz.php" ||
$seite=="versandkosten.php" || $seite=="uebersicht.php" || $seite=="suchen.php" ||
$seite=="sonderangebote.php" || $seite=="versand.php" || $seite=="control.php" )
{
ob_start();
include("includes/$seite");
$inhalt = ob_get_contents();
ob_end_clean();}
else{

### produkt laden
if (file_exists("inhalt/$seite")){
if (is_file("inhalt/$seite")){
include("inhalt/$seite");
unset($Error);
}
else{
$Error=True;
}
}
else{
$Error=True;
}
if ($Error==True){
if (file_Exists('error.php')){
include("error.php");
}
else{
echo 'Es ist ein schwerer Fehler aufgetreten. Bitte versuchen Sie es zu einem sp&auml;teren Zeitpunkt erneut.';
}
}

if(!$pbild){
$pbild=$blankgif;}

# kleine Bilder vorladen
if(!$pbild1){
$pbild1=$blankgif;}

if(!$pbild2){
$pbild2=$blankgif;}

if(!$pbild3){
$pbild3=$blankgif;}

if(!$pbild4){
$pbild4=$blankgif;}

if(!$pbild5){
$pbild5=$blankgif;}

### produktanordnung laden
$file = $produktseite;
$string = file_get_contents($file);
$array = array(
'{BILD}'=>$pbild,
'{BILD1}'=>$pbild1,
'{BILD2}'=>$pbild2,
'{BILD3}'=>$pbild3,
'{BILD4}'=>$pbild4,
'{BILD5}'=>$pbild5,
'{PRODUKTNAME}'=>$pname,
'{CONTENT}'=>$content,
'{GEWICHT}'=>$gewicht,
'{PREIS}'=>$preis,
'{SNAME}'=>$sname,
'{SWERT}'=>$swert,);
$inhalt = strtr($string, $array);}

###Navigation direkt aus dem Ordner /.inhalt laden und sortiert ausgeben
$i = 0;
$buchstabe_alt = "";
$dir = opendir("./inhalt");
$linkarray=array();
while ($content = readdir($dir)){
if ($content != '.' && $content != '..') {
$linkarray[]=$content;
}
}

sort($linkarray);
foreach ($linkarray as $key => $val) {
$teile = explode(".", $val);
$buchstabe = substr($val, 0, 3);

## artikelnummer auslesen als bildnummer �bergeben
$bildNr = rtrim(substr($val, 0,6));
$ueberschrift = substr($val, 0, strrpos($val,"."));

if (!strstr($buchstabe_alt, $buchstabe)) {
$buchstabe_alt.= $buchstabe;

$zahl = intval($buchstabe);
switch ($zahl){
case 10:$ausgabe = "<h4>Fahrwerk</h4>";
break;
case 20:$ausgabe = "<h4>Bremsen/Bremsanlagen</h4>";
break;
case 30:$ausgabe = "<h4>Wagen/Lok(allgemein)</h4>";
break;
case 40:$ausgabe = "<h4>Feldbahn</h4>";
break;
case 50:
break;
case 60:$ausgabe = "<h4>Zubeh&ouml;r</h4>";
break;
case 70:$ausgabe = "<h4>Schmalspur</h4>";
break;
case 80:$ausgabe = "<h4>Lok(allgemein)</h4>";
break;
case 90:
break;
case 101:
case 102:$ausgabe = "<h4>Baugruppen/Bauteile</h4>";
break;
case 201:
case 203:$ausgabe = "<h4>Fahrzeuge/Baus&auml;tze</h4>";
break;
}

$i += 1;
$navigation.= "<dt><a href=# title=$buchstabe >$ausgabe</a></dt>"; //Block - Beschriftung anzeigen
$navigation.= "<dd id='smenu$i'>";
$navigation.= "<ul><li><a href=\"index.php?seite=$val&$sname=$swert\" onmouseover=\"InfoBoxAnzeigen(event,'<h6>$ueberschrift</h6> <img src=./produktbilder/thumb/$bildNr.JPG width=200 /> </dl>',20,-30);\" onmouseout=\"InfoBoxAusblenden();\" href=\"javascript:void(0);\" MouseOver f�r mehr Info\">$teile[0]
</a></li></ul>";
}else{
$navigation.= "<ul><li><a href=\"index.php?seite=$val&$sname=$swert\" onmouseover=\"InfoBoxAnzeigen(event,'<h6>$ueberschrift</h6> <img src=./produktbilder/thumb/$bildNr.JPG width=200 /> ',20,-30);\" onmouseout=\"InfoBoxAusblenden();\" href=\"javascript:void(0);\" MouseOver f�r mehr Info\">$teile[0]</a></li></ul>";
}
}
$navigation.= "</dd>";


### Layout laden
$file = $layout;
$string = file_get_contents($file);
$marray = array(
'{TITEL}'=>$titel,
'{BESCHREIBUNG}'=>$beschreibung,
'{KEYWORDS}'=>$keywords,
'{SESS}'=>"$sname=$swert",
'{SUMME}'=>number_format($summe,2,",","."),
'{PRODUKTLINKS}'=>$navigation,
'{GRUPPE}'=>$gruppe,
'{INHALT}'=>$inhalt,);

$ausgabe = strtr($string, $marray);

####################################

## Daten ausgeben
echo $ausgabe;

##### Ende
?>

vt1816
30.10.2012, 06:19:59
Dein Problem liegt hier:
## artikelnummer auslesen als bildnummer �bergeben
$bildNr = rtrim(substr($val, 0,6));
$ueberschrift = substr($val, 0, strrpos($val,"."));

if (!strstr($buchstabe_alt, $buchstabe)) {
$buchstabe_alt.= $buchstabe;
...

Somit macht die erste Anpassung innerhalb vom switch keinen Sinn (mehr).



Mit der folgenden Erweiterung/Anpassung sollte das Problem zu lösen sein:

## artikelnummer auslesen als bildnummer �bergeben
$bildNr = rtrim(substr($val, 0,6));
$ueberschrift = substr($val, 0, strrpos($val,"."));

switch ($buchstabe){
case 102:$buchstabe = "101";
break;
case 203:$buchstabe = "201";
break;
}

if (!strstr($buchstabe_alt, $buchstabe)) {
$buchstabe_alt.= $buchstabe;

$zahl = intval($buchstabe);
switch ($zahl){
case 10:$ausgabe = "<h4>Fahrwerk</h4>";
break;
case 20:$ausgabe = "<h4>Bremsen/Bremsanlagen</h4>";
break;
case 30:$ausgabe = "<h4>Wagen/Lok(allgemein)</h4>";
break;
case 40:$ausgabe = "<h4>Feldbahn</h4>";
break;
case 50:
break;
case 60:$ausgabe = "<h4>Zubeh&ouml;r</h4>";
break;
case 70:$ausgabe = "<h4>Schmalspur</h4>";
break;
case 80:$ausgabe = "<h4>Lok(allgemein)</h4>";
break;
case 90:
break;
case 101:$ausgabe = "<h4>Baugruppen/Bauteile</h4>";
break;
case 201:$ausgabe = "<h4>Fahrzeuge/Baus&auml;tze</h4>";
break;
}


** ungetestet!! **

norbert3
31.10.2012, 08:25:47
Hey an alle,
@vt1816: ein ganz großes Lob für deine Unterstützung. Jetzt funktioniert das ganze so wie es sein soll. Da wäre ich alleine nicht darauf gekommen.

Recht vielen Dank noch einmal!!

mfg Norbert

vt1816
31.10.2012, 12:13:54
[..]
Jetzt funktioniert das ganze so wie es sein soll.

... dafür sind wir hier.


[..]
Da wäre ich alleine nicht darauf gekommen.

... man(n) lernt täglich dazu.