[Funktion] Array Problemm

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Funktion] Array Problemm

    Hallo,

    ich hab da ein Problemm mit array()s, ich möchte mir im meinem Script zur auswahl von Kategorien ein Select menu mit den kategorien anzeigen lassen, das Anzeige Format ist:

    /index
    /index/allgemein/
    /index/allgemein/webdesign
    /index/PHP
    /Index/PHP/Scripte usw

    das funktioniert auch soweit bis auf die tatsache wenn ich die kategorien umverteile entweder die kategorie ohne namen also ein leerer Eintrag erscheint, oder einfach der vorherige eintrag doppelt vohanden ist. ich hab schon alles probiert und finde keine lössung, kann mir da mal jemand helfen. hier die functionen zum erstellen des Select Menus:

    PHP-Code:
    function selectgroup($subid=0) {
        global 
    $db$n;
                    
    // abfrage der einträge aufsteigent von 0 bis...
        
    $group $db->query("SELECT * FROM dp".$n."_newsgroup WHERE visible=1 ORDER BY 'group' ASC");
        
    $subgroup "<select name=\"group\">";
        
    $i=1;
        
    $grouparray[0][0] = "/Index"// angezeigte beschreibung
        
    $grouparray[0][1] = 0//Kategorie ID
        //ab hier werden die auswahl felder erstellt.
                   
    while ($row $db->fetch_array($group)) {
            
    $grouparray[$i][0] = getcat($row,$grouparray);
            
    $grouparray[$i][1] = $row['groupid'];
            
    $i++;
        }
        
    usort($grouparray'sortCatArray');
        foreach(
    $grouparray as $phat) {
            if (
    $row['groupid'] == $phat[1]) $subgroup .= "<option value=\"$phat[1]\" selected>$phat[0]</option>\n";
            else 
    $subgroup .= "<option value=\"$phat[1]\">$phat[0]</option>\n";
        }
        
    $subgroup .= "</select>";
        return 
    $subgroup;
    }
    // hier werden die Unterkategorien zusammen gefügt
    function getcat($row,$grouparray){
        
    $l $row['group']; 
        if(isset(
    $row['group'])) {
            if(isset(
    $grouparray[$l][1]) && $grouparray[$l][1] == $l) {
                
    $addgroup $grouparray[$l][0];
                
    $title .= $addgroup."/".$row[title];
                }
            } else {
                
    $title "/Index/".$row['title'];
            }
            return 
    $title;
    }
    hier werden die kompletten Kategorien sortiert
    function sortCatArray($a$b) {
        return 
    strcmp($a[0], $b[0]);

    und hier ist der SQL Dump

    PHP-Code:
     CREATE TABLE `dp1_newsgroup` (
      `
    groupidint(11unsigned NOT NULL auto_increment,
      `
    groupint(11) default '0',
      `
    titlevarchar(250collate latin1_general_ci NOT NULL default '',
      `
    descriptiontext collate latin1_general_ci NOT NULL,
      `
    imagesvarchar(255collate latin1_general_ci NOT NULL default '',
      `
    keywordstext collate latin1_general_ci NOT NULL,
      `
    countnewsint(11unsigned NOT NULL default '1',
      `
    visibletinyint(1NOT NULL default '0',
      
    PRIMARY KEY  (`groupid`)
    ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=;

    -- 
    -- 
    Daten für Tabelle `dp1_newsgroup`
    -- 

    INSERT INTO `dp1_newsgroupVALUES (10'Allgemein''Allgemeine News und Offtopic'''''01);
    INSERT INTO `dp1_newsgroupVALUES (20'PHP''News rund um PHP'''''01);
    INSERT INTO `dp1_newsgroupVALUES (32'Scripte''Neu erschienene PHP Scripte die man sich ansehen sollte.'''''01);
    INSERT INTO `dp1_newsgroupVALUES (40'hp-scripte.de''Neues über unsere Projekte'''''11);
    INSERT INTO `dp1_newsgroupVALUES (51'DPE''Hier finden Sie die aktuellen News zum DynamicPortal'''''11);
    INSERT INTO `dp1_newsgroupVALUES (60'MySQL''News rund um MySQL'''''01); 
    wie gesagt die anzeige funktioniert, nur halt nach einer umstellung der kategorien nicht.
    Zuletzt geändert von ; 17.01.2005, 11:00.

  • #2
    sortier doch im sql... das problem is wohl deine sortier funktion... die unnötig is
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      hi,

      die sortier function ist leider nicht unnötig da das Select Menu sortiert ausgegeben werden soll, bei der SQL DB muss die sortierung bei 0 anfangen da sonst die einträge zum zusammen fügen der Kategorien " /index/php/ usw nicht funktioniert. das Problem ist ja eigentlich imme rnur der array[$i][0] eintrag mit der beschreibung, den die ID wird immer korekt eingetragen nur halt die zusammen gefügte Kategorie nicht,
      wenn du bei der angegeben db nur den eintrag 5 also die MySQL kategorie der PHP kategorie (3) zuweist tritt der fehler auf, die menus werden an sonsten korrekt angezeigt und auch korrekt Sortiert

      also das sieht so aus

      0 = Index
      1 = Index/Allgemein
      5 = Index/Allgemein/DPE
      2 = Index/PHP usw....
      Zuletzt geändert von ; 17.01.2005, 11:31.

      Kommentar


      • #4
        Du holst alle daten aus der db also kannste da auch sortieren...
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          klar kann ich sortieren, tu ich ja auch und zwar nach Kategorie (group)

          von 0 aufsteigent, danach wird der array doch nur noch von A aufwärts sortiert, ich brauche immer die oberste Kartegorie zuerst also in meinem fall zuerst 0 dann 1 usw

          Mach ich das in der DB bekommen ich nicht die gewünschte anzeige, denn liegt zb die hauptkategorie 0 am ende und verweise mit einer kategorie darauf die am anfang steht finder die abfrage die Haupkategorie nicht weil sie ja noch nicht im array steht. also habe ich unvollständige einträge.

          schau dir mal den Dump an vieleicht weist du dann was ich meine.

          Zuletzt geändert von ; 17.01.2005, 11:51.

          Kommentar


          • #6
            sorry,

            ich glaub ich war was schwer von begriff, ich hab gar nicht an die doppelte sortierung gedacht,, gab die abfrage geänder und nun ist der fehler verschwunden hier jetzt mal der korekte bereich für den fall das es jemand brauchen kann.

            PHP-Code:
            function selectgroup($subid=0) {
                global 
            $db$n;
                
            $group $db->query("SELECT * FROM dp".$n."_newsgroup  WHERE visible=1 ORDER BY 'group' AND 'title' ASC");
                
            $subgroup "<select name=\"group\">";
                
            $i=1;
                
            $grouparray[0][0] = "/Index";
                
            $grouparray[0][1] = 0;
                while (
            $row $db->fetch_array($group)) {
                    
            $grouparray[$i][0] = getcat($row,$grouparray);
                    
            $grouparray[$i][1] = $row['groupid'];
                    
            $i++;
                }
                
            usort($grouparray'sortCatArray');
                foreach(
            $grouparray as $phat) {
                    if (
            $row['groupid'] == $phat[1]) $subgroup .= "<option value=\"$phat[1]\" selected>$phat[0]</option>\n";
                    else 
            $subgroup .= "<option value=\"$phat[1]\">$phat[0]</option>\n";
                }
                
            $subgroup .= "</select>";
                return 
            $subgroup;

            danke für für den hinweis.

            Kommentar

            Lädt...
            X