Top
Phpuniverset logo
 

INDHOLD

Forside

Script libary

Job annoncer

Tips og Tricks

Konkurrence

Downloads

Dokumenter

PHP bog shop

Forum

Online udviklere


ARTIKLER

CSS

Diverse

E-handel / annoncer

Grafik

Html

Internet

Javascript

Linux

PHP/MySQL

Programmer

Flash

Søgemaskiner

Windows

C / C++


INFO

Information

Annoncering

Kontakt

Forside Forum PHP, mysql Menu script problemer

Menu script problemer


 

Menu script problemer

Horizon  

Jeg har prøvet at stille dette spørgsmål inde på eksperten.dk men folk derinde er her på
det seneste blevet meget dårlige til at svare tilbage så jeg håber det er anderledes her
;)

Jeg sidder og bikser lidt med et menu script, men det vil ikke helt som jeg vil.

på www.thesimcity.dk/tabel_Menu.jpg kan du se min mysql_tabel

feltet titel er det tekst som man kan se i enten link eller som selve overskriften

overskriftid er den unikke id som titelen har hvis den er en overskrift

overskrift fortæller om titel er en overskrift 1 for ja 0 for nej

tilhoerer er kun for titler som ikke er overskrift, tilhoerer er så den ID som titel har
og den skal være lig med en af overskriftiderne

link er så det som står inde i href="" hvis det ikke er en overskrift

target er så det som står i target="" for det meste _self eller _new hvis det ikke er en
overskrift

side er hvilken sektion den pågældne titel hører til, jeg har indtil videre 3 sektioner
som er lig med navnet på den Mappe som siden ligger i.

(håber I forstod det, ellers skal jeg prøve at forklare det på en anden måde)

og nu kommer det sværre, hvordan jeg udskriver alle de data så de står rigtigt.

Her er hvad jeg har prøvet på indtil videre:

<?php

include("../Kilder/access.php");

//$query = "";
//$result = mysql_query($query)or die("MySql Fejl: " . mysql_error());
//$log = mysql_fetch_array($result);

$query "SELECT titel, overskriftid FROM Menu WHERE inaktiv = 0 AND overskrift = 1 AND
side = 'TS2'"
;
$result mysql_query($query)or die("MySql Fejl: " mysql_error());
$over mysql_fetch_array($result);

mysql_close();

$prefix "&nbsp;&raquo;&nbsp;";

while {

?>

    <h3><?php echo $prefix $over[titel]; ?></h3>
<?php
}
?>

men selv dette virker ikke, en hjælpsom sjæl som vil hjælpe?



Dato : 22.03.2005, 15:59

Visninger : 1594

Points : 30

 

Jamen jeg forstår ikke rigtig din kode.. Prøv med dette:

<?php

include("../Kilder/access.php");

$result mysql_query("SELECT titel, overskriftid FROM Menu WHERE inaktiv = 0 AND
overskrift = 1 AND side = 'TS2'"
)or die("MySql Fejl: " mysql_error());
$prefix "&nbsp;&raquo;&nbsp;";

while (
$row mysql_fetch_array($result)) {
?>

<h3><?php echo $prefix $row[titel]; ?></h3>

<?php
}
?> 

Skal ikke kunne sige om det virker, men du kan da prøve :)


Dato : 24.03.2005, 18:00

Kommentar af : Genster  

 

jamen tak for det :D
Har også omskrevet det så underpunkterne kommer med ;)

Men smid lige et svar. så får du dine point


Dato : 25.03.2005, 01:09

Kommentar af : Horizon  

 

Skidt da med dem, så længe dit script virker :)

Men okay .. Here goes ;)


Dato : 25.03.2005, 01:13

Godkendt svar af : Genster  

 

nå, så ud som om der var points at hente alligevel... men igen tak :D

Dato : 25.03.2005, 01:15

Kommentar af : Horizon  

 

Nu er jeg kommet hertil i et rediger script:

<?php

include("../Kilder/access.php");

$resultover mysql_query("SELECT * FROM Menu WHERE overskrift = 1 AND side = 'TS2'")or
die(
"MySql Fejl: " mysql_error());

$prefix "&nbsp;&raquo;&nbsp;";

while (
$over mysql_fetch_array($resultover)) {
?>
    <p></p><h3><input type="text" name="overskrift" value="<?php echo $over[titel]; ?>"
size="30"></h3>
    <input type="checkbox" name="inaktiv" value="1" <?php if($over[inaktiv] == 1) { echo
"checked"; } ?>>
    <?php
    
    $resultunder 
mysql_query("SELECT * FROM Menu WHERE overskrift = 0 AND side = 'TS2' AND
tilhoerer='"
.$over[overskriftid]."'")or die("MySql Fejl: " mysql_error()); 

    while (
$under mysql_fetch_array($resultunder)) {
    
    
    
?>
<p></p><table border="1" cellspacing="0" cellpadding="0" bordercolor="#000000">
    <tr>
        <td>Titel:</td>
        <td><input type="text" name="titel" value="<?php echo $under[titel]; ?>"
size="30"></td>
    </tr>
    <tr>
        <td>Link:</td>
        <td><input type="text" name="link" value="<?php echo $under[link]; ?>" size="30"></td>
    </tr>
    <tr>
        <td>Target:</td>
        <td><input type="text" name="target" value="<?php echo $under[target]; ?>"
size="10"></td>
    </tr>
    <tr>
        <td>Inaktiv:</td>
        <td><input type="checkbox" name="inaktiv" value="1" <?php if($under[inaktiv] == 1) {
echo 
"checked"; } ?>></td>
    </tr>
</table><p></p>
    <?php
    
}
    
?>
<?php
}
mysql_close();
?>

som giver et resultat noget i stil med dette:

 » Test på overskrift 1
 » punkt 1 under 1
 » punkt 2 under 1
 » punkt 2 under 1 (inaktiv)

 » Test på overskrift 2
 » punkt 1 under 2

 » Test på overskrift 3 (inaktiv)

alt i tekstbokse og inaktiv i checkbox nu er det mere hvordan jeg beder den om at gemme
det hele igen hvis jeg nu laver ændringer i det hele.

Det skal ind i en <form> som så henvises til en anden side. e.g.
../Kilder/RedigerMenu.php

Men alle punkterne skal jo så have en unik ID så de ikke blandes sammen og overskrifter
skal jo også stadig adskilles. skal jeg evt. lave et nyt felt i tabellen kaldt ID (med
auto increment)?


Dato : 25.03.2005, 02:12

Kommentar af : Horizon  

 

Jeg forstår ikke helt hvad problemet er .. Hvad er det du vil have den til ?

Dato : 25.03.2005, 02:18

Kommentar af : Genster  

 

nu har jeg fået den til at skrive alle menupunkterne ud i <input> felter, nu er det
hvordan jeg beder den om at gemme evt. ændringer i punkterne.


Dato : 25.03.2005, 14:54

Kommentar af : Horizon  

 

Uha det ved jeg ikke :(
Det kan jeg ikke lige se ved første øjekast.. Desværre :/


Dato : 25.03.2005, 14:57

Kommentar af : Genster  

 

øvsa... men tak alligevelled... ordner det gennem phpmyadmin indtil videre så, finder
måske selv på noget

Hmm! Vent nu lidt, hvis jeg lader den printe det hele ud ikke i <input> men som links
istedet for, så kan man vælge hvert link og rette det individuelt, vil sikkert også være
hurtigere...


Dato : 25.03.2005, 14:59

Kommentar af : Horizon  

 

Øhm jah helt sikkert :) Sig endelig til hvis du finder ud af noget, kunne være vi andre
kunne lære af det ;)


Dato : 25.03.2005, 15:02

Kommentar af : Genster  

 

yes yes... her kommer det så lige sammen...

MySql Tabellen "Menu"
  Feltnavn  Datatype Nulværdi Standardværdi
   titel - text - Nej
   overskriftid - text - Nej
   punktid - text - Nej
   overskrift - int(1) - Nej - 0
   tilhoerer - text - Nej
   link - text - Nej
   target - text - Nej
   side - text - Nej
   inaktiv - int(11) - Nej - 1    
 
* * *

Opret menu punkt siden:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
    <body>
        <h3>&nbsp;&raquo;&nbsp;Opret menu punkt</h3>
            <?php echo $_SESSION[rentekst];?>
            <form action="../../Kilder/TilfoejMenu.php" method="post">
                <?php echo $_SESSION[nymenu]; unset($_SESSION[nymenu]); ?><select name="side"
size="1">
                    <option value="0">V&aelig;lg Side...</option>
                    <option value="SektionA">Sektion A</option>
                    <option value="SektionB">Sektion B</option>
                    <option value="SektionC">Sektion C</option>
                    <option value="SektionD">Sektion D</option>
                    
                </select>
                <p>Titel:<br>
                    <input type="text" name="titel" size="30"></p>
            <p>Overskrift:<br>
                <input type="checkbox" name="overskrift" value="1"></p>
            <p>Overskriftid:<br>
                    <input type="text" name="overskriftid" size="10"></p>
            <p>Punktid:<br>
                <input type="text" name="punktid" size="10"></p>
            <p>Tilh&oslash;rer:<br>
                <input type="text" name="tilhoerer" size="10"></p>
            <p>Link:<br>
                <input type="text" name="link" size="30"></p>
            <p>Target=&quot;&quot;:<br>
                <input type="text" name="target" size="10"></p>
            <p>Inaktiv:<br>
                <input type="radio" name="inaktiv" value="1" checked>Ja</p>
            <p><input type="radio" name="inaktiv" value="0">Nej</p>
            <p><input type="submit" name="Opret" Value="Opret"></p>
        </form>
    </body>

</html>

sektionerne bruges kun hvis man f.eks. har brug for flere forskellige menuer. f.eks. en på
en admin side og en på selve siden.

titel er enten overskriften eller skriften på linket som man ser
overskrift checkboksen bestemmer om det punkt du tilføjer er en overskrift eller
almindelig link.
overskriftid skal kun bruges hvis overskrift er markeret denne værdi skal være unik
punktid skal også være unik, men bruges kun hvis overskrift ikke er markeret
tilhoerer bruges hvis overskrift ikke er markeret, denne id skal være lig med et af
overskrift iderne da det er dette som bestemmer hvor linket vises.
link siger lidt sig selv. det som står i href="" bruges kun hvis overskrift ikke er
markeret
target siger også sig selv. det som står i target="" bruges kun hvis overskrift ikke er
markeret
inaktiv er som standard sat til 1 hvilket vil sige ja, hvis du ikke retter punktet til nej
så vil linket ikke vises før du beder den om det.

* * *

siden som indsætter værdierne i databasen:

<?php

include("access.php");

$query "INSERT INTO Menu ( titel , overskriftid , punktid , overskrift , tilhoerer ,
link , target , side , inaktiv ) 
VALUES (
'"
.$_POST['titel']."',
'"
.$_POST['overskriftid']."',
'"
.$_POST['punktid']."',
'"
.$_POST['overskrift']."',
'"
.$_POST['tilhoerer']."',
'"
.$_POST['link']."',
'"
.$_POST['target']."',
'"
.$_POST['side']."',
'"
.$_POST['inaktiv']."'
)"
;

mysql_query($query)or die("MySql Fejl: " mysql_error());
mysql_close();

$_SESSION[nymenu] = "Oprettet";

header("Location: ../Admin/Menu/TilfoejMenu.php");

?>

* * *

access.php filen er bare en fil som indeholder adgangskode og database valg istedet for at
skrive det hele flere gange er det simplere at inkludere.

* * *

Nu har vi oprettet et par punkter og overskrifter, men nu vil vi gerne se dem igen,

Her er selve menuen:

* * *

<?php

include("../Kilder/access.php");

$result mysql_query("SELECT titel, overskriftid FROM Menu WHERE inaktiv = 0 AND
overskrift = 1 AND side = 'Den sektion som menufilen skal bruges i'"
)or die("MySql Fejl: "
mysql_error());

$prefix "&nbsp;&raquo;&nbsp;";

while (
$over mysql_fetch_array($result)) {
?>
    <b><?php echo $prefix $over[titel]; ?></b><br>
    <?php
    
    $result1 
mysql_query("SELECT titel, tilhoerer, link, target FROM Menu WHERE inaktiv = 0
AND overskrift = 0 AND side = 'Den sektion som menufilen skal bruges i' AND
tilhoerer='"
.$over[overskriftid]."'")or die("MySql Fejl: " mysql_error()); 

    while (
$under mysql_fetch_array($result1)) {
    
    
    
?>
    <?php echo $prefix "<a href='".$under['link']."' target='".$under['target']."'>" .
$under['titel']; ?></a><br>
    <?php
    
}
    
?><p></p>
<?php
}
mysql_close();
?>

* * *

Men nu vil vi redigere et punkt... lad os se alle punkterne i alle menuerne!

* * *

<html>

    <body>
<h3>&nbsp;&raquo;&nbsp;Menu for <?php echo $_POST[side]; ?></h3>
<?php

echo $_SESSION[redigermenu];
unset(
$_SESSION[redigermenu]);

?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
    <select name="side" size="4">
        <option value="SektionA">Sektion A</option>
        <option value="SektionB">Sektion B</option>
        <option value="SektionC">Sektion C</option>
        <option value="SektionD">Sektion D</option>
    </select>
    <p><input type="submit" name="Vis menu" value="Vis menu"></p>
</form>
<p><?php

include("../../Kilder/access.php");

$result mysql_query("SELECT titel, overskriftid FROM Menu WHERE overskrift = 1 AND side
= '"
.$_POST[side]."'")or die("MySql Overskrift Fejl: " mysql_error());

$prefix "&nbsp;&raquo;&nbsp;";

while (
$over mysql_fetch_array($result)) {
?><b><?php echo $prefix?><a href="RedigerMenuPunkt.php?type=over&overskriftid=<?php echo
$over[overskriftid] . "&side="$_POST[side]; ?>" target="Iframe"><?php echo $over[titel];
?></a></b><br>
    <?php
    
    $result1 
mysql_query("SELECT titel, punktid FROM Menu WHERE overskrift = 0 AND side =
'"
.$_POST[side]."' AND tilhoerer='".$over[overskriftid]."'")or die("MySql Underpunkter
Fejl: " 
mysql_error()); 

    while (
$under mysql_fetch_array($result1)) {
    
    
    
?><?php echo $prefix?><a href="RedigerMenuPunkt.php?type=under&punktid=<?php echo
$under[punktid] . "&side=" $_POST[side] ;?>"><?php echo $under['titel']; ?></a><br>
    <?php
    
}
    
?></p>
<p></p>
<?php
}
mysql_close();
?>
    </body>
</html>

* * *

Alle punkter og overskrifer vises nu som link, klik på et af dem og det vil åbne en side
næsten magen til den hvor vi oprettede

* * *

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
        <link href="../../CSS/Style.css" rel="stylesheet">
    </head>

    <body>
<?php
include("../../Brugeroplysninger/Brugeroplysninger_admin_iframe.php");
?>
        <h3>&nbsp;&raquo;&nbsp;Rediger menu punkt</h3>
            <?php
            
            
if($_GET[type] == under) {
            include(
"../../Kilder/access.php");
                
$query "SELECT * FROM Menu WHERE side = '".$_GET[side]."' AND titel =
'"
.$_GET[titel]."'";
                
$result mysql_query($query)or die("MySql Fejl: " mysql_error());
                
$log mysql_fetch_array($result);
                
mysql_close();
            
            }elseif(
$_GET[type] == over) {
            include(
"../../Kilder/access.php");
                
$query "SELECT * FROM Menu WHERE side = '".$_GET[side]."' AND overskriftid =
'"
.$_GET[overskriftid]."'";
                
$result mysql_query($query)or die("MySql Fejl: " mysql_error());
                
$log mysql_fetch_array($result);
                
mysql_close();
            
            }
            
            
?>
            <form action="../../Kilder/RedigerMenuPunkt.php?type=<?php echo $_GET[type]; ?>"
method="post">
            <input type="hidden" name="gammeltitel" value="<?php echo $_GET[titel]; ?>"><input
type="hidden" name="gammelside" value="<?php echo $_GET[side]; ?>"><input type="hidden"
name="gammeloverskriftid" value="<?php echo $_GET[overskriftid]; ?>"><select name="side"
size="1">
                    <option value="<?php echo $_GET[side]; ?>"><?php echo $_GET[side]; ?></option>
                    <option value="">--------------------</option>
                    <option value="SektionA">Sektion A</option>
        <option value="SektionB">Sektion B</option>
        <option value="SektionC">Sektion C</option>
        <option value="SektionD">Sektion D</option>
                    
                </select>
            <p>Titel:<br>
                    <input type="text" name="titel" size="30" value="<?php echo $log[titel]; ?>"></p>
            <p>Overskrift:<br>
                <input type="checkbox" name="overskrift" value="1" <?php if($log[overskrift] == 1) {
echo 
"checked"; } ?>></p>
            <p>Overskriftid:<br>
                    <input type="text" name="overskriftid" size="10" value="<?php echo
$log[overskriftid]; ?>"></p>
            <p>Tilh&oslash;rer:<br>
                <input type="text" name="tilhoerer" size="10" value="<?php echo $log[tilhoerer];
?>"></p>
            <p>Link:<br>
                <input type="text" name="link" size="30" value="<?php echo $log[link]; ?>"></p>
            <p>Target=&quot;&quot;:<br>
                <input type="text" name="target" size="10" value="<?php echo $log[target]; ?>"></p>
            <p>Inaktiv:<br>
                <input type="radio" name="inaktiv" value="1" <?php if($log[inaktiv] == 1) { echo
"checked"; } ?>>Ja</p>
            <p><input type="radio" name="inaktiv" value="0" <?php if($log[inaktiv] == 0) { echo
"checked"; } ?>>Nej</p>
            <p><input type="submit" name="Rediger" Value="Redig&eacute;r"></p>
        </form>
    </body>

</html>

* * *

Nu gemmes evt. ændringer

* * *

<?php

include("access.php");

if(
$_GET[type] == under) {

$query "UPDATE Menu
    SET titel = '"
.$_POST[titel]."',
    overskriftid = '"
.$_POST[overskriftid]."',
    punktid = '"
.$_POST[punktid]."',
    overskrift = '"
.$_POST[overskrift]."',
    tilhoerer = '"
.$_POST[tilhoerer]."',
    link = '"
.$_POST[link]."',
    target = '"
.$_POST[target]."',
    side = '"
.$_POST[side]."',
    inaktiv = '"
.$_POST[inaktiv]."'
    WHERE punktid = '"
.$_POST[gammelpunktid]."'
    AND side ='"
.$_POST[gammelside]."'";

}elseif(
$_GET[type] == over) {

$query "UPDATE Menu
    SET titel = '"
.$_POST[titel]."',
    overskriftid = '"
.$_POST[overskriftid]."',
    punktid = '"
.$_POST[punktid]."',
    overskrift = '"
.$_POST[overskrift]."',
    tilhoerer = '"
.$_POST[tilhoerer]."',
    link = '"
.$_POST[link]."',
    target = '"
.$_POST[target]."',
    side = '"
.$_POST[side]."',
    inaktiv = '"
.$_POST[inaktiv]."'
    WHERE overskriftid = '"
.$_POST[gammeloverskriftid]."'
    AND side ='"
.$_POST[gammelside]."'";

}

mysql_query($query)or die("MySql Fejl: " mysql_error());
mysql_close();

$_SESSION[redigermenu] = "Redigeret";

header("Location: ../Admin/Menu/VisMenu.php");

?>

* * *

Det skulle være det, nu skulle du have et relativt simpelt menu system, koden er måske
ikke lige det pæneste, bedste og mest optimerede, men det virker fint for mig indtil
videre. Det kan jo altid omskrives til at passe brugerens behov


Dato : 26.03.2005, 02:43

Kommentar af : Horizon  

 

.oO(burde næsten være en artikel :P)

Dato : 26.03.2005, 02:44

Kommentar af : Horizon  

 

hov. opdagede lige en fejl. i siden hvor man redigerer et punk skal der lige tilføjes
dette

* * *

<p>Punktid:</p>
                    <input type="text" name="punktid" size="10" value="<?php echo $log[punktid];
?>"></p>

* * *

efter den som ligner men som hedder "overskriftid:"



Dato : 26.03.2005, 02:48

Kommentar af : Horizon  

 

Okaay .. Det var noget af en kode :)

Ja du kunne da sagtens smide den ind som artikel .. Det ville være super :)

Så er det mig der takker ;)


Dato : 26.03.2005, 19:48

Kommentar af : Genster  

 

jeg ser lige om jeg kan rette og eventuelt optimere koden lidt og omskrive det til en
artikel, gør jeg i morgen, så kan jeg også lave en slet funktion... :P


Dato : 27.03.2005, 01:00

Kommentar af : Horizon  

 

Lyder super ;)

Det vil jeg nok kunne få brug for i mit CMS, hvis du da tillader det :P


Dato : 27.03.2005, 03:10

Kommentar af : Genster  

 

jamen det er da i orden, men jeg optimerer lige koden da jeg har fundet nogle fejl.

Med lidt fantasi kan det jo også skrives om til et forum ;P

men ordner lige fejlene så ;)

p.s. God påske


Dato : 27.03.2005, 12:34

Kommentar af : Horizon  

 

Det lyder bare kanont :)

Jo tak i lige måde ;)


Dato : 27.03.2005, 23:49

Kommentar af : Genster  




Login for at skrive et indlæg :



   Brugernavn

Password
 

+ Opret en ny Bruger, Klik her

+ Glemt brugernavn/password

 

Send Artikel/anmeldelse til: phpuni@phpuniverset.dk

Tilbage til oversigt

© Copyright 2000 Propelcom Phpuniverset's politik om personlige oplysninger, artikler & Koder Phpuniverset er optimeret til Mozilla 1024 * 768 Phpuniverset version: 3.0 beta
Webhost : Ignesco.dk

Bund