Avatar billede Frederik Nybegynder
04. januar 2008 - 15:38 Der er 33 kommentarer og
1 løsning

Overføre kategori fra menulink til destinations fil.?

Hej.

Jeg vil høre om det er muligt, at sætte/overføre en kategoriværdi fra menuen til den fil der bliver linket til?

Mine filer ser således ud:

menu.php
<html>
<head>
<style type='text/css'>
a.top {color:black;font:bold 14px verdana;text-decoration:none;}
a.top:hover {color:yellowgreen;}
a.link {margin-left:2em;color:dimgray;font:13px verdana;text-decoration:none;}
a.link:hover {text-decoration:underline;}
</style>
</head>
<body>

<?php


function menuliste() {




include ("config.php");



    $query1 = "select * from mkategori";
    $result1 = mysql_query($query1);


        while($row1 = mysql_fetch_array($result1))
        {
          $topkat = array($row1['mtopkategori']);
          echo "<a class='top' href='?kategori=".$topkat[0]."'>".$topkat[0]."</a><br>";
           


            if($_REQUEST['kategori'] == '') {
            }
            elseif($_REQUEST['kategori'] == $topkat[0])
            {
                      $query2 = "select * from mlink where mtopkategori = '".$topkat[0]."'";
                      $result2 = mysql_query($query2);



                        while($row2 = mysql_fetch_array($result2))
                        {
                          $link = array($row2['mid'],$row2['mpunkt'],$row2['mlink']);
                          echo "<a class='link' href='".$link[2]."'>".$link[1]."</a><br>";

                }

            }
           
        }
       
    mysql_close();

}

menuliste();
         
?>
</body></html>

Kategorien der skal overføres fra filen fra før er det der hedder mpunkt, men er ikke sikker på hvordan jeg skal gøre...?

Da jeg ikke ved hvor jeg skal få kategorien fra, men har en idé om hvor det skal placeres har jeg bare skrevet kategori?????. Det kan sagtens være jeg har ramt helt ved siden af med placeringen..?


getpicture.php
<?
if(isset($_GET['kategori?????']))
{
// connect to the database
include "config.php";

$fkategori = $_GET['kategori?????'];
$query = "SELECT * FROM files WHERE fkategori = '$fkategori'";
$result  = mysql_query($query) or die(mysql_error());

// define results into variables
$name=mysql_result($result,0,"name");
$size=mysql_result($result,0,"size");
$type=mysql_result($result,0,"type");
$content=mysql_result($result,0,"content");

// give our picture the proper headers...otherwise our page will be confused
header("Content-Disposition: attachment; filename=$name");
header("Content-length: $size");
header("Content-type: $type");
echo $content;

mysql_close();
}else{
die("Fejl! Kategori ikke angivet!");
}

?>


Jeg håber I kan hjælpe mig!


Hilsen
Frederik
Avatar billede jakobdo Ekspert
04. januar 2008 - 20:27 #1
I denne linie:
echo "<a class='link' href='".$link[2]."'>".$link[1]."</a><br>";

Kunne du lave:
echo "<a class='link' href='".$link[2]."?kategori=".$row2['mpunkt']."'>".$link[1]."</a><br>";

Så vil du kunne bruge: $_GET['kategori'], som du også selv er begyndt så småt på.
Avatar billede Frederik Nybegynder
04. januar 2008 - 20:56 #2
så får jeg fjelen:

Parse error: syntax error, unexpected '}', expecting ',' or ';' in C:\xampp\htdocs\domain\test\menu\menu.php on line 49
Avatar billede jakobdo Ekspert
04. januar 2008 - 21:00 #3
Hvad står der på linie 49 ?
Avatar billede jakobdo Ekspert
04. januar 2008 - 21:04 #4
Sikker på din kode er præcis som:

$link = array($row2['mid'],$row2['mpunkt'],$row2['mlink']);
echo "<a class='link' href='".$link[2]."?kategori=".$row2['mpunkt']."'>".$link[1]."</a><br>";
Avatar billede Frederik Nybegynder
04. januar 2008 - 21:19 #5
Sorry.. tastefejl...

Men får ikke helt havd jeg havde ventet fra getpicture.php
Den vil sende én fil (ja der er flere i databasen) som om den skal gemmes på computeren..?

getpicture.php ser sådan ud nu:
<?
if(isset($_GET['kategori']))
{
// connect to the database
include "config.php";

$fkategori = $_GET['kategori'];
$query = "SELECT * FROM files WHERE fkategori = '$fkategori'";
$result  = mysql_query($query) or die(mysql_error());

// define results into variables
$name=mysql_result($result,0,"name");
$size=mysql_result($result,0,"size");
$type=mysql_result($result,0,"type");
$content=mysql_result($result,0,"content");

// give our picture the proper headers...otherwise our page will be confused
header("Content-Disposition: attachment; filename=$name");
header("Content-length: $size");
header("Content-type: $type");
echo $content;

mysql_close();
}else{
die("Fejl! Kategori ikke angivet!");
}

?>
Avatar billede jakobdo Ekspert
04. januar 2008 - 21:40 #6
Denne linjer tror jeg muligvis gider dig flere resultater.
Du må prøve at fjerne header() og se om output er korrekt.

$query = "SELECT * FROM files WHERE fkategori = '$fkategori'";
Avatar billede Frederik Nybegynder
04. januar 2008 - 22:00 #7
Hvis jeg fjerner header() får jeg en masse underlige tegn:

ÿØÿà&#65533;JFIF&#65533;&#65533;H&#65533;H&#65533;&#65533;ÿá¬Exif&#65533; og det fortsætter bare...
Avatar billede Frederik Nybegynder
04. januar 2008 - 22:01 #8
Og kan ikke lige se hvad forskellen er mellem $query = "SELECT * FROM files WHERE fkategori = '$fkategori'"; og så det jeg har skrevet???
Avatar billede jakobdo Ekspert
05. januar 2008 - 17:32 #9
Jeg rettede ikke linjen, jeg var bare usikker på om du fik et eller flere resultater.
Avatar billede Frederik Nybegynder
05. januar 2008 - 17:41 #10
Jeg skulle da mene, at jeg burde få flere resultater, tror det har noget at gøre med den anden kode.. Men kan ikke se hvad det kunne være istedet ???
Avatar billede jakobdo Ekspert
05. januar 2008 - 17:46 #11
Hvis du får flere resultater, så kan du ikke bruge din kode.
Din kode trækker kun en række ud og skulle gerne smide en fil retur ja.
Avatar billede Frederik Nybegynder
05. januar 2008 - 17:53 #12
Hvordan gør jeg så sådan, at når kategorien er defineret, så viser den de billeder der har den angivne kategori. ?
Avatar billede jakobdo Ekspert
05. januar 2008 - 18:28 #13
Er det billeder du har gemt i din database?
Hvis ja, så kunne du lave et script som udelukkende viser et billede.

F.eks. image.php?id=1 osv...
Så kan du vise flere billeder på samme side.
Avatar billede Frederik Nybegynder
05. januar 2008 - 18:32 #14
Ja. Jeg har gemt billeder i databasen. Jeg har også et script der viser ét billede, men kan ikke finde ud af at konvetere det så det viser flere på én gang..

Jeg har en fil der ser sådan ud:

<?php
// if something was posted, start the process...
if (isset($_POST['upload'])) {
    // define the posted file into variables
    $name = $_FILES['picture']['name'];
    $tmp_name = $_FILES['picture']['tmp_name'];
    $type = $_FILES['picture']['type'];
    $size = $_FILES['picture']['size'];

    // get the width & height of the file (we don't need the other stuff)
    list($width, $height, $typeb, $attr) = getimagesize($tmp_name);

    // if width is over 600 px or height is over 500 px, kill it
    if ($width > 6000 || $height > 5000) {
        echo $name . " dimensions exceed the 6000x5000 pixel limit";
?>
  <p><a href="form.html">Click here</a> to try again.
<?
        die();
    }

    // if the file size is larger than 350 KB, kill it
    if ($size > 3500000) {
        echo $name . " is over 3500KB. Please make it smaller.";
?>
  <p><a href="form.html">Click here</a> to try again.
<?
        die();
    }

    // if your server has magic quotes turned off, add slashes manually
    if (!get_magic_quotes_gpc()) {
        $name = addslashes($name);
    }

    // if the mime type is anything other than what we specify below, kill it
    if ($type != 'image/jpg' &&
        $type != 'image/jpeg' &&
        $type != 'image/pjpeg' &&
        $type != 'image/x-png' &&
        $type != 'image/png' &&
        $type != 'image/gif') {
        echo $type . "is not an acceptable format.";
?>
  <p><a href="form.html">Click here</a> to try again.
<?
        die();
    }

    // open up the file and extract the data/content from it
    $extract = fopen($tmp_name, 'r');
    $content = fread($extract, $size);
    $content = addslashes($content);
    fclose($extract);

  // connect to the database
    include "config.php";

    // Get the description.
    $description = $_POST['description'];
    $description = nl2br($description);
    $description = mysql_real_escape_string($description);

    // Get kategori.
    $fkategori = $_POST['fkategori'];

    // the query that will add this to the database
    $addfile = "INSERT INTO files (name, description, size, type, content, fkategori) VALUES ('$name', '$description', '$size', '$type', '$content', '$fkategori')";
    mysql_query($addfile) or die(mysql_error());

    // get the last inserted ID if we're going to display this image next
    $inserted_fid = mysql_insert_id();
    mysql_close();

    // display the image
?>
<div align="center">
    <strong><? echo $name; ?><br>
    </strong><img name="<? echo $name; ?>" src="getpicture.php?fid=<? echo $inserted_fid; ?>" alt="Unable to view image #<? echo $inserted_fid; ?>">
    <br><br>
<?
require("config.php");
$query = mysql_query("SELECT fid, description, fkategori FROM files where fid='$inserted_fid'") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
  echo"
  <tr>
    <td width=\"100%\">
    <p align=\"center\">
    <br><div align=\"left\">" .$row['description']. "</div>
    </p>
    </td>

  </tr>
  ";
}
?>
    <a href="add.php">upload more images</a>
</div>
<?
    // we still have to close the original IF statement. If there was nothing posted, kill the page.
} else {
    die("No uploaded file present");
}
?>



Her bliver der bare kun vist ét billede...
Avatar billede jakobdo Ekspert
05. januar 2008 - 18:39 #15
Se, du bruger netop det jeg foreslog tidligere:

getpicture.php?fid=(INSERT ID)

Så du skal lave et SQL kald, som trækker alle billeder ud, og så skal du bruge:

<img name="<? echo $name; ?>" src="getpicture.php?fid=<?=$row['id'];?>" alt="Unable to view image #<?=$row['id'];?>">

Linjen ovenover skal placeres inde i din:

$query = mysql_query("SELECT * FROM files WHERE fkategori = '$fkategori'");
while($row = mysql_fetch_assoc($query))
{
//Her skal koden være...
}
Avatar billede Frederik Nybegynder
05. januar 2008 - 18:47 #16
Burde det så ikke være

<img name="<? echo $name; ?>" src="getpicture.php?fkategori=<?=$row['fkategori'];?>" alt="Unable to view image #<?=$row['fkategori'];?>">

Ellers er det vel alle billeder i databasen der bliver hentet, og ikke dem med en bestemt kategori?
Avatar billede Frederik Nybegynder
05. januar 2008 - 19:04 #17
Lige nu har jeg følgende kode i getpicturekategori.php:

<?
if(isset($_GET['kategori']))
{
// connect to the database
include "config.php";

$fkategori = $_GET['kategori'];
$query = "SELECT * FROM files WHERE fkategori = '$fkategori'";
$result  = mysql_query($query) or die(mysql_error());
{
?>
<img name="<? echo $name; ?>" src="getpicturekategori.php?kategori=<?=$row['fkategori'];?>" alt="Unable to view image #<?=$row['fkategori'];?>">
<?
}
}
?>

Men jeg får fejl.. :
Unable to view image #
Avatar billede jakobdo Ekspert
05. januar 2008 - 19:09 #18
Stop stop...

Kan du lave kode, som udskriver alle ID'er på de billeder du gerne vil have vist fra en given kategori?
Avatar billede Frederik Nybegynder
05. januar 2008 - 19:14 #19
Hmm.. mener du noget i stil med:

<?
require("config.php");
$query = mysql_query("SELECT * FROM files ORDER BY fid") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
  echo"
".$row['fid']. "
}
?>
Avatar billede jakobdo Ekspert
05. januar 2008 - 19:18 #20
Ja, så retter du linien:

echo "".$row['fid']. "
med:
echo '<img src="getpicturekategori.php?kategori='.$row['fid'].'" alt="Unable to view image #'.$row['fkategori'].'">';
Avatar billede Frederik Nybegynder
05. januar 2008 - 19:25 #21
Så har jeg filen getpicturekategori.php:

<?
require("config.php");
$query = mysql_query("SELECT * FROM files ORDER BY fid") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
echo '<img src="getpicturekategori.php?kategori='.$row['fid'].'" alt="Unable to view image #'.$row['fkategori'].'">';
}
?>

Det ser ud til, at den henter alle billederne nu, men billederne bliver ikke vist.. Der hvor billedet skulle have været står der Unable to view image #.
Avatar billede jakobdo Ekspert
05. januar 2008 - 20:15 #22
getpicture.php bruges kun til at vise billeder, så der skal du ikke blande kategorier ind i.
Undskyld jeg ikke lige har bemærket det tidligere...
Avatar billede Frederik Nybegynder
05. januar 2008 - 20:21 #23
Hvad Er det så du siger jeg skal??
Avatar billede jakobdo Ekspert
05. januar 2008 - 20:25 #24
Du ønsker at vise alle billeder i en kategori ikke?
Avatar billede Frederik Nybegynder
05. januar 2008 - 20:28 #25
Jo lige præcis!
Avatar billede jakobdo Ekspert
05. januar 2008 - 20:35 #26
Lav en fil der hedder showCategori.php
Indhold:

<?
require("config.php");
$kategori = $_GET['kategori'];
$query = mysql_query("SELECT * FROM files WHERE fkategori = $kategori ORDER BY fid") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
echo '<img src="getpicturephp?fid='.$row['fid'].'" alt="Unable to view image #'.$row['fid'].'">';
}
?>

Kald så filen med f.eks.:

showCategori.php?kategori=NAVNET_PAA_EN_KATEGORI_ELLER_ID
Avatar billede Frederik Nybegynder
05. januar 2008 - 20:41 #27
Jeg får meddelelsen

Unknown column 'Billeder' in 'where clause'
Avatar billede jakobdo Ekspert
05. januar 2008 - 21:16 #28
Du skal lige rette SQL'en lidt:

Ret:
SELECT * FROM files WHERE fkategori = $kategori ORDER BY fid
til:
SELECT * FROM files WHERE fkategori = '$kategori' ORDER BY fid
Avatar billede Frederik Nybegynder
05. januar 2008 - 21:35 #29
Jeg får stadig fejlen Unable to view image # for de forskellige billeder...?
Avatar billede Frederik Nybegynder
05. januar 2008 - 21:37 #30
Kan det ikke have noget at gøre med det der stod i den oprindelige getpicture.php?

<?
if(isset($_GET['fid']))
{
// connect to the database
include "config.php";

$fid = $_GET['fid'];
$query = "SELECT * FROM files WHERE fid = '$fid'";
$result  = mysql_query($query) or die(mysql_error());

// define results into variables
$name=mysql_result($result,0,"name");
$size=mysql_result($result,0,"size");
$type=mysql_result($result,0,"type");
$content=mysql_result($result,0,"content");

// give our picture the proper headers...otherwise our page will be confused
header("Content-Disposition: attachment; filename=$name");
header("Content-length: $size");
header("Content-type: $type");
echo $content;

mysql_close();
}else{
die("No file ID given...");
}

?>


Det som skulle hive billedet frem der, det indgår jo ikke nogen steder i den kode der bliver brugt nu.
Avatar billede jakobdo Ekspert
05. januar 2008 - 21:40 #31
Tjo, for getpicture.php er nok nærmere så den downloader billeder og ikke bare henter billedet.
Jeg tror vi skal tage resten via msn, ellers får vi nok aldrig løst denne tråd.
Avatar billede Frederik Nybegynder
05. januar 2008 - 21:58 #32
Okay.. Den er fin med mig. Tilføjer du mig?

mezux(a)hotmail.com
Avatar billede jakobdo Ekspert
05. januar 2008 - 22:30 #33
Løsning blev at oprette filen:
showpicture.php som næsten ligner getpicture.php, bare uden headers:
header("Content-Disposition: attachment; filename=$name");
header("Content-length: $size");

Samt rette filen som viser billedet i <img...> tagget til: showpicture.php?fid=(ID FRA DATABASEN)
Avatar billede jakobdo Ekspert
06. januar 2008 - 17:18 #34
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester