Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Menu i parametry - PILNE
#1
Witam! Sprawa jest pilna.
Jestem baardzo początkująca jeśli chodzi o tworzenie stron w innych językach niż html i właśnie mam pierwszy problem, z którym nie mogę sobie poradzić za pomocą prób i błędów czy też googli.
Muszę zaprojektować stronę w PHP + CSS, mam problem z menu. Tak to wygląda:
http://img824.imageshack.us/img824/4937/scrkj.jpg
Chciałabym, aby zakładki były bezpośrednio obok siebie, nawet jak zmieniam parametry, wygląda to fatalnie i niezależnie jak kombinuję, nie umiem ustawić tego tak, by było równo jedno obok drugiego.
Tu jest kod:

Kod PHP:
/*-- Submenu --*/
#submenu{
    
floattop;
margin1px;
margin-top40px;
margin-left10px

}
#submenu span{
    
display:  inline-table;
    
width:  inherit;
    
margin-bottom6px;
    
    
background:url('img/bg_sub.png'no-repeat center;

}
#submenu a{
    
color:      #FFF;
    
padding:    10px 72px 3px 80px;
    
font-size:  15px;
    
display:  inline-table;

}
#submenu a:hover{color:#000;}
/*--- header ---*/ 

Wiem, że to pewnie dla Was drobnostka, bardzo byście mi pomogli, bo męczę się z tym już ładne parę godzin Shy
Pozdrawiam![/quote]
Odpowiedz
#2
1) po pierwsze menu robisz na liście UL, nie na spanach
2) po drugie:

#submenu {overflow:hidden; list-style:none; margin:0; padding:0;}
#submenu li {float:left;}
#submenu li a {.....}

Ty namieszałeś strasznie. Float nie ma opcji top, tylko left albo right. Display inline-table zamień lepiej na inline-block
Odpowiedz
#3
Rozumiem że submenu to jest kontener dla menu a span to elementy menu (przydał by się fragment kodu html).
Nie ma takiej formy jak float: top. skasuj to a dodaj do span float: left. to powinno pomóc. Wydaje mi się że w span nie ma potrzeby ustawić display: inline-table oraz width: inherit. Ciekawe gdzie to znalazłeś w necie?
W a też raczej możesz usunąć display: inline-table.
http://webmaster.na6.waw.pl
Odpowiedz
#4
Tu jest plik od menu w php.

Kod PHP:
<?php
defined
('_CScript') OR die('No direct access allowed.');
$layer=$subMenu=$menu='';
// TWORZENIE MENU GŁÓWNEGO
$db->query('SELECT `'._prefix.'menu`.`id`,`'._prefix.'menu`.`layer`, `'._prefix.'menu`.`pid`,`'._prefix.'page`.`name`, `'._prefix.'page`.`alias`, `'._prefix.'page`.`link` FROM `'._prefix.'menu` INNER JOIN `'._prefix.'page` WHERE `'._prefix.'page`.`id`=`'._prefix.'menu`.`pid`  AND `'._prefix.'menu`.`layer`=0 ORDER BY `'._prefix.'menu`.`sn` ');
$rs $db->getRows();

foreach(
$rs as $row)
{
    if(
$active==$row['link']) $layer $row['id'];
    
$menu .= '<div><a title="'.$row['name'].'" href="'.$row['link'].'">'.$row['alias'].'</a></div>';
}
if(
$menu!='')
    
$this->menu '<div id="nav">'.$menu.'</div>';
else
    
$this->menu ' ';

if(
$layer=='')
{
    
$db->query('SELECT `'._prefix.'menu`.`layer` FROM `'._prefix.'menu` INNER JOIN `'._prefix.'page` WHERE `'._prefix.'page`.`id`=`'._prefix.'menu`.`pid`  AND  `'._prefix.'page`.`link`="'.$active.'" LIMIT 1');
    
$rs $db->getRow();
    if(
$rs)
        
$layer $rs['layer'];
    else
        
$layer = -1;
}

    
$db->query('SELECT `'._prefix.'menu`.`id`,`'._prefix.'menu`.`layer`, `'._prefix.'menu`.`pid`,`'._prefix.'page`.`name`, `'._prefix.'page`.`alias`, `'._prefix.'page`.`link` FROM `'._prefix.'menu` INNER JOIN `'._prefix.'page` WHERE `'._prefix.'page`.`id`=`'._prefix.'menu`.`pid`  AND `'._prefix.'menu`.`layer`="'.$layer.'" ORDER BY `'._prefix.'menu`.`sn` ');
    
$rs $db->getRows();
    if(
$rs)
        foreach(
$rs as $row)
            
$subMenu .= '<span><a title="'.$row['name'].'" href="'.$row['link'].'">'.$row['alias'].'</a></span>';


if(
$subMenu!='')
{
        
$this->class 'page';
    
$this->subMenu '<div id="submenu">'.$subMenu.'</div>';
}else{
    
$this->subMenu ' ';
        
$this->class 'pageBig';
}
unset(
$menu,$rs);

?>

Wykorzystałam Wasze sugestie, ale nie pomogło, poucinało zakładki i poprzestawiało je.
Weźcie pod uwagę, że dopiero zaczynam, rzucono mnie z tym trochę na głęboką wodę. Szablon nie jest mój; firma kupiła go kiedyś od kogoś i muszę to teraz pozmieniać, żeby jakoś wyglądało.
Menu było w pierwotnej wersji pionowe, ale chcieli poziome.
Odpowiedz
#5
Jak wykorzystałeś, jak nie wykorzystałeś
Napisałem ci żebyś menu zrobił na UL a nie na spanach i divach.
Odpowiedz
#6
Wieczorem postaram się przerobić ten kod i wstawić tu. Teraz nie mam czasu.
http://webmaster.na6.waw.pl
Odpowiedz
#7
Zrobiłam, tak jak mówiliście, ale zmieniłam tak jak było wcześniej, bo wyglądało tak:
http://img90.imageshack.us/img90/7159/scrlo.jpg
Kody po modyfikacji:
Kod PHP:
/*-- Submenu --*/
#submenu{
    
overflow:hidden;
    
floatleft;
    list-
style:none;
margin0px;
padding0px;


}
#submenu li{
    
display:  inline;
    
margin-bottom6px;
    
    
background:url('img/bg_sub.png'no-repeat center;

}
#submenu li a{
    
color:      #FFF;
    
padding:    10px 62px 3px 80px;
    
font-size:  15px;

}
#submenu li:hover{color:#000;} 

Kod PHP:
<?php
defined
('_CScript') OR die('No direct access allowed.');
$layer=$subMenu=$menu='';
// TWORZENIE MENU GŁÓWNEGO
$db->query('SELECT `'._prefix.'menu`.`id`,`'._prefix.'menu`.`layer`, `'._prefix.'menu`.`pid`,`'._prefix.'page`.`name`, `'._prefix.'page`.`alias`, `'._prefix.'page`.`link` FROM `'._prefix.'menu` INNER JOIN `'._prefix.'page` WHERE `'._prefix.'page`.`id`=`'._prefix.'menu`.`pid`  AND `'._prefix.'menu`.`layer`=0 ORDER BY `'._prefix.'menu`.`sn` ');
$rs $db->getRows();

foreach(
$rs as $row)
{
    if(
$active==$row['link']) $layer $row['id'];
    
$menu .= '<div><a title="'.$row['name'].'" href="'.$row['link'].'">'.$row['alias'].'</a></div>';
}
if(
$menu!='')
    
$this->menu '<div id="nav">'.$menu.'</div>';
else
    
$this->menu ' ';

if(
$layer=='')
{
    
$db->query('SELECT `'._prefix.'menu`.`layer` FROM `'._prefix.'menu` INNER JOIN `'._prefix.'page` WHERE `'._prefix.'page`.`id`=`'._prefix.'menu`.`pid`  AND  `'._prefix.'page`.`link`="'.$active.'" LIMIT 1');
    
$rs $db->getRow();
    if(
$rs)
        
$layer $rs['layer'];
    else
        
$layer = -1;
}

    
$db->query('SELECT `'._prefix.'menu`.`id`,`'._prefix.'menu`.`layer`, `'._prefix.'menu`.`pid`,`'._prefix.'page`.`name`, `'._prefix.'page`.`alias`, `'._prefix.'page`.`link` FROM `'._prefix.'menu` INNER JOIN `'._prefix.'page` WHERE `'._prefix.'page`.`id`=`'._prefix.'menu`.`pid`  AND `'._prefix.'menu`.`layer`="'.$layer.'" ORDER BY `'._prefix.'menu`.`sn` ');
    
$rs $db->getRows();
    if(
$rs)
        foreach(
$rs as $row)
            
$subMenu .= '<ul><a title="'.$row['name'].'" href="'.$row['link'].'">'.$row['alias'].'</a></ul>';


if(
$subMenu!='')
{
        
$this->class 'page';
    
$this->subMenu '<div id="submenu">'.$subMenu.'</div>';
}else{
    
$this->subMenu ' ';
        
$this->class 'pageBig';
}
unset(
$menu,$rs);

?>

Nie wiem dalej co źle robię, miałam tylko pozmieniać grafikę na stronie, a wychodzi na to, że wszystko jest jeszcze bardziej skomplikowane i trzeba grzebać w tych wszystkich kodach, z którymi nie miałam za wiele styczności wcześniej (jedynie trochę HTMLa).
Pojawił się też inny problem.
Mam skrypt w który wstawia się reklamy pojawiające się w stopce, jednak po dodaniu nie są one widoczne na stronie, mimo że spełniają wszystkie warunki.
Wygląda tak:
Kod PHP:
<?php
defined
('_CScript') OR die('No direct access allowed.');
defined('_acp') OR die('No direct access allowed.');

class 
advert
{
    public    
$template 'advert';
    public    
$allImg      ' ';
    public    
$msg      '';
    
##KONFIGURACJA
    
private    $maxSize 1468006;                     //1.4MB
    
private    $dir      '../media/advert/';
    private    
$allowed '{*.jpg,*.gif,*.jpeg,*.png}';
    public  
$size      = array('120','60');            //'x','y'
    
public function __construct($action='',$params='',$link='')
    {
        if(isset(
$action)&&$action=='del'&&isset($params[0])&&$params[0]!=''&&!isset($_POST['SaveSlider']))
            
$this->_unlinkIMG($params);
        if(isset(
$_POST['SaveAdvert']))
            
$this->_addIMG($_FILES);
                else{
                    
$_POST = array('title'=>'','link'=>'','position'=>'');
                }

        
$this->_takeAll();
    }

    private function 
_unlinkIMG($p)
    {
            if(isset(
$p[0]))
            {
        
$db core::load('db');
                
$db-> query('SELECT `title`,`img` FROM `'._prefix.'advert` WHERE `id`=:id LIMIT 1',array('id'=>$p[0]));
                
$rs $db->getRow();
                if(
$rs)
                {
                    if(
file_exists($this->dir.$rs['img']))
                        
unlink($this->dir.$rs['img']);
                    
$db->query('DELETE FROM `'._prefix.'advert` WHERE `id`=:id LIMIT 1',array('id'=>$p[0]));
                    
$db->query('DELETE FROM `'._prefix.'baners` WHERE `id`=:id',array('id'=>$p[0]));
                    
$this->msg='<div class="response-msg success smallmsg"><p>Usunąłeś wybrany element</p></div>';
                }else
                    
$this->msg='<div class="response-msg error">Nie można było usunąc wybranego elementu.</div>';
            }
    }
    private function 
_addIMG(&$file)
    {
        
$msg='';
                
$filter core::load('filter');
                    
$_POST['title']=$filter->strCheck($_POST['title'],'Tytuł, reklamy'255true);
                     
$_POST['link']=$filter->linkCheck($_POST['link'],'Adres odnośnika'255true);
        if(empty(
$file['file']['name']))
            
$msg.='Nie wybrałeś zadnego zdjęcia/obrazka do wgrania!';
        if(
$file['file']['type']!="image/jpeg"&&$file['file']['type']!="image/gif"&&$file['file']['type']!="image/png")
            
$msg.='Nie poprawny format pliku! <br/>Akceptowalne rozszerzenia plików to: <b>*.jpg, *.gif,*.jpeg,*.png</b><br/>';
        if(
$file['file']['size']>$this->maxSize)
            
$msg.='Plik o nazwie <b>'.$file['file']['name'].'</b> jest za duży! maksymalny dopuszczalna waga pliku to '.round($this->maxSize/1048576).'<br/>';
        if(
$msg!="")
        {
            
$this->msg='
            <div class="error response-msg">
            <strong>Błąd wysyłania pliku!</strong><br/><br/>
            '
.$msg.'
            </div>'
;
        }else{
            
//require_once 'model/gd_lib.php';
            
$file['file']['name']=rand(1999).core::load('filter')->takeLink($file['file']['name'], 'make');
            
//makeThumbWidth(mineTyp($file['file']['type']), $file['file']['tmp_name'], $file['file']['name'], $this->dir, $this->size[0]);
// ZAPISUJE DANE DO BAZY DANYCH
                         
move_uploaded_file($file['file']['tmp_name'], $this->dir.$file['file']['name']);
                        
$db core::load('db');
                     

                        
$db->query('INSERT INTO `'._prefix.'advert` SET `img`="'.$file['file']['name'].'", `title`="'.$_POST['title'].'", `link`="'.$_POST['link'].'"');
                        
$this->msg='<div class="response-msg success smallmsg"><p>Dodałeś reklamę o nazwie "<b>'.$file['file']['name'].'</b>"</p></div>';
            unset(
$file['file']);
        }
    }
    private function 
_takeAll()
    {
            
$db core::load('db');
            
$db->query('SELECT * FROM `'._prefix.'advert` ORDER BY `id`');
            
$rs $db->getRows();
            
$img '';
            foreach(
$rs as $v)
            {
               
$img .= '<tr>
            <td>
            <b>link: <a href="'
.$v['link'].'">'.$v['link'].'</a></b> <a href="advert-del-'.$v['id'].'" title="Usuń obrazek" style="float:right;"><img src="template/img/ico/delete.png" alt="Usuń" /></a><br/>
            <img src="'
.$this->dir.$v['img'].'" alt="" style="width:100%"/>
                        <br/>
                            '
.$v['title'].'
                        </td>
            </tr>'
;
            }
            if(
$img!='')$this->allImg $img;
            else
                
$this->allImg ' ';
    }


Prosta sprawa: chcę zrobić tak żeby działało.
Bardzo proszę o pomoc, bo grzebię się w tym, a postępów żadnych.
Odpowiedz
#8
Kod:
<?php
defined('_CScript') OR die('No direct access allowed.');
$layer=$subMenu=$menu='';
// TWORZENIE MENU GŁÓWNEGO
$db->query('SELECT `'._prefix.'menu`.`id`,`'._prefix.'menu`.`layer`, `'._prefix.'menu`.`pid`,`'._prefix.'page`.`name`, `'._prefix.'page`.`alias`, `'._prefix.'page`.`link` FROM `'._prefix.'menu` INNER JOIN `'._prefix.'page` WHERE `'._prefix.'page`.`id`=`'._prefix.'menu`.`pid`  AND `'._prefix.'menu`.`layer`=0 ORDER BY `'._prefix.'menu`.`sn` ');
$rs = $db->getRows();

foreach($rs as $row)
{
    if($active==$row['link']) $layer = $row['id'];
    $menu .= '<li><a title="'.$row['name'].'" href="'.$row['link'].'">'.$row['alias'].'</a></li>';
}
if($menu!='')
    $this->menu = '<ul id="nav">'.$menu.'</ul>';
else
    $this->menu = ' ';

if($layer=='')
{
    $db->query('SELECT `'._prefix.'menu`.`layer` FROM `'._prefix.'menu` INNER JOIN `'._prefix.'page` WHERE `'._prefix.'page`.`id`=`'._prefix.'menu`.`pid`  AND  `'._prefix.'page`.`link`="'.$active.'" LIMIT 1');
    $rs = $db->getRow();
    if($rs)
        $layer = $rs['layer'];
    else
        $layer = -1;
}

    $db->query('SELECT `'._prefix.'menu`.`id`,`'._prefix.'menu`.`layer`, `'._prefix.'menu`.`pid`,`'._prefix.'page`.`name`, `'._prefix.'page`.`alias`, `'._prefix.'page`.`link` FROM `'._prefix.'menu` INNER JOIN `'._prefix.'page` WHERE `'._prefix.'page`.`id`=`'._prefix.'menu`.`pid`  AND `'._prefix.'menu`.`layer`="'.$layer.'" ORDER BY `'._prefix.'menu`.`sn` ');
    $rs = $db->getRows();
    if($rs)
        foreach($rs as $row)
            $subMenu .= '<li><a title="'.$row['name'].'" href="'.$row['link'].'">'.$row['alias'].'</a></li>';


if($subMenu!='')
{
        $this->class = 'page';
    $this->subMenu = '<ul id="submenu">'.$subMenu.'</ul>';
}else{
    $this->subMenu = ' ';
        $this->class = 'pageBig';
}
unset($menu,$rs);

?>

Kod:
#nav {height:.......px; list-style:none; margin:0; padding:0; width:100%; clear:both;}
#nav li {float:left; width:........px; height:.......px;}
#nav li a {display:block; width:100%; height:100%;}
Stylowania dla submenu nie podaję, bo nie wiem jak miało by wyglądać.

Ogólnie to w tym twoim kodzie jest strasznie nawalone.
Odpowiedz
#9
czy to jest wordpress? ciężko tak ocenić co zrobić gdy widać tylko fragment kodu, jakbyś przesłała szablon to mógłbym zajrzeć albo daj więcej kodu i screenshoty Smile
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Rozwijane menu w Bok Boshi 7 7,801 27-09-2014, 00:47
Ostatni post: Kartofelek
  [Problem] Menu [jQuery] [CSS] [HTML] EncoreCode 1 2,813 28-08-2013, 22:16
Ostatni post: msx83
  Light box menu andemel 6 6,216 19-07-2013, 12:18
Ostatni post: atp
  Superfish menu - problem z wyśrodkowaniem. Gargamel 3 3,623 13-02-2013, 19:02
Ostatni post: Kartofelek
Exclamation Rollover - obrazkowe menu jako lista - Problem ripi 3 3,850 28-11-2012, 16:22
Ostatni post: Kartofelek

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl