Avatar billede neonman Nybegynder
15. december 2005 - 00:58 Der er 15 kommentarer og
1 løsning

Find et bestemt ting og sætte billede ind via id

Sider og skal bygge noget artikle system.... men dog har jeg lidt problemere med at jeg har en steng der f. eks. heder [img=43] og så er ( 43 ) det id jeg skal finde hvor billedet tilhøre dvs. <img src="ids fil"> håber noden kan hjælpe mig lidt med dette problem kan ikke helt få det til at lykkes....
Avatar billede jaw Nybegynder
15. december 2005 - 00:59 #1
Det kan vi måske nok klare, men lidt mere info. Står [img=43] for sig selv, eller skal det først udledes af en samlet streng? Og hedder billedet så 43.xxx eller skal det først hentes i en billedetabel, hvor id'et så er 43?
Avatar billede neonman Nybegynder
15. december 2005 - 01:08 #2
[img=43] står i en artikle fyldt med tekst... og andre former for [i] og [b] ud over det er 43 idet som skal hentes fra en database :0)
Avatar billede jaw Nybegynder
15. december 2005 - 01:09 #3
Så det du egentlig søger, er at trække 43 ud?
Avatar billede neonman Nybegynder
15. december 2005 - 01:15 #4
jeps :0) sådan jeg kan bruge det tal til at paste et billede ind istedfor [img=43] der kan så også godt være mere end et billede pr artikle også :)
Avatar billede jaw Nybegynder
15. december 2005 - 01:22 #5
Ok, jeg har leget lidt, prøv:

$str = "hasgfjhg dfjsgh dj hgsd fh [img=431] ajshdg ajsghd ajsghd ";
$str = preg_replace("/\[img=(\\d+)\]/i", mysql_result(mysql_query("SELECT billede FROM tabel WHERE id = \\1"),0), $str);

Jeg ved bare ikke, om det er for omstændigt, men kan ikke lige overskue alternativer når du skal udskifte med databaseindhold.
Avatar billede neonman Nybegynder
15. december 2005 - 01:24 #6
daffer i seng nu... men prøver lige at kikke på det imorgen ;) og tak for hjælpen ind til videre....
Avatar billede jaw Nybegynder
15. december 2005 - 01:25 #7
Sov godt så :)
Avatar billede neonman Nybegynder
15. december 2005 - 01:28 #8
jo takker ilm
Avatar billede polle007 Nybegynder
15. december 2005 - 01:30 #9
jaw, dit mysql kaldt bliver vel kaldt inden preg_replace. Så jeg tror den metode virker. Denne burde virke:

function FetchImage($total, $id){
    $ret = $total;

    if(is_numeric($id)){
        $sql = "select * from images where id=$id";
        $r = mysql_query($sql);
        if($row = mysql_fetch_array($r)){
            $img = $row['image'];
            $ret = "<img src=\"$img\">";       
        }
    }

    return $ret;
}

$text = "[img=43]";
$text = preg_replace("#\[img=(.*?)\]#ie", "FetchImage('$0', '$1')", $text);
Avatar billede pidgeot Nybegynder
15. december 2005 - 01:40 #10
Du kan ikke bruge den kode til formålet. PHP kan desværre ikke finde ud af at udføre kommandoerne på den måde - selvom det havde været vældig rart.

Det du i stedet kan gøre er at lave et lille script der henter billedet, og så blot bruger dette script som om det var billedet du linkede til:

$str = preg_replace("/\[img=(\\d+)\]/i", "<img src=\"" . $rel . "billede.php?id=\\1\">");

billede.php kunne så eksempelvis se sådan ud:
<?PHP
  //connect til databasen her
  $q = mysql_query("SELECT * FROM billeder WHERE id = '$_GET[id]';");
  $r = mysql_fetch_array($q);
  if ($r['filtype'] == "jpg") {
    header("Content-type: image/jpeg");
  }
  if ($r['filtype'] == "gif") {
    header("Content-type: image/gif");
  }
  if ($r['filtype'] == "png") {
    header("Content-type: image/png");
  }
  file_get_contents($r['sti'] . '/' . $r['filnavn'] . '.' . $r['filtype']);
?>

Dette forudsætter din billedetabel indeholder felterne sti, filnavn og filtype - du skal jo nok lige tilpasse scriptet til din tabelstruktur.

Det kan vist godt lade sig gøre at have det hele i et script hvis man er lidt fiks, men det bliver så vidt jeg kan se MEGET kompliceret.
Avatar billede polle007 Nybegynder
15. december 2005 - 01:48 #11
pidgeot, er det min kode du ikke mener virker?
Avatar billede pidgeot Nybegynder
15. december 2005 - 02:06 #12
Det var henvendt til jaw. MySQL vil opsnappe \\1 direkte, i hvert fald med netop den kode.

Din kode ser ud til at virke (efter at have testet), omend jeg kunne have svoret på det samme princip ikke virkede da jeg sad og rodede med noget tilsvarende - men det er nok bare mig, så...
Avatar billede neonman Nybegynder
15. december 2005 - 21:51 #13
pidgeot> bruger dit stykke :0) det ser lovenen ud... men lige nu ligger mine pic på http://intranet.neonman.dk/ domainet og de skal vises på http://beta.neonman.dk/ håber du kan hjælpe mig lidt kan ikke få billederen fram :(
Avatar billede pidgeot Nybegynder
15. december 2005 - 22:02 #14
I så fald kan billede.php eksempelvis se sådan ud:

<?PHP
  //connect til databasen her
  $q = mysql_query("SELECT * FROM billeder WHERE id = '$_GET[id]';");
  $r = mysql_fetch_array($q);
  header('Location: http://beta.neonman.dk/' . $r['sti'] . '/' . $r['filnavn']);
?>

Igen, der skal tilpasses efter din tabelstruktur.
Avatar billede neonman Nybegynder
15. december 2005 - 22:04 #15
sådan her ser min kode ud


<?PHP
    mysql_connect("", "", "");
    mysql_select_db("");
   
  //connect til databasen her
  $q = mysql_query("SELECT * FROM artikle_img WHERE Id = '$_GET[id]';");
  $r = mysql_fetch_array($q);

  header("Content-type: image/jpeg");
  readfile('http://intranet.neonman.dk/artikle_img/'. $r[FilName]);

?>

og det virkere :) tak for hjælpen ;) smider ud lige et svar
Avatar billede pidgeot Nybegynder
15. december 2005 - 22:07 #16
Værsgo :)
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