Avatar billede zeque Nybegynder
16. april 2009 - 17:06 Der er 25 kommentarer og
1 løsning

Vælg et billede

Jeg har et fint lille script i PHP som udskriver alle de billeder der befinder sig i den angivet mappe. Mit spørgsmål i denne sammenhæng er så: Hvordan kan jeg via Javascript(eller en anden programmeringsform?) gøre så jeg kan selecte(vælge) et billede, og så når man har valgt et skal der komme en lille border på. Og så via PHP skal jeg kunne finde ud af hvilket af billederne der er blevet valgt.

Dette er min PHP kode:
<?php
function getIcons($folder) {

    $dirname = $folder;
    $dirhandle = opendir($dirname);
    while($file = readdir($dirhandle)) {
        if ($file != "." && $file != "..") {
            if (is_file($dirname.$file)) {
                echo "<img src=\"" . $folder . $file . "\" />";
            } else {
                echo "mappe: " . $file . "<br>";
            }
        }
    }
   
}
getIcons("images/icons/");
?>

Tak på forhånd
MVH Mikkel Mathiesen
Avatar billede lakridserne Nybegynder
16. april 2009 - 17:26 #1
Kan du ikke bruge AJAX?

Du laver så en function med onclick (ved hjælp af javascript), som bliver kaldt og sætter borderen på, og udfører et kald til serveren (uden at opdatere siden). Så skal du der lave en selvstændig php-fil, som tager imod AJAX-kaldet.

AJAX står i øvrigt for Asynchronusly Javascript and XML.

De fede bogstaver er dem, som bliver brugt til at danne forkortelsen.
Avatar billede zeque Nybegynder
16. april 2009 - 17:31 #2
Jeg er slet ikke inde i Ajax eller for den sags skyld Javascript. Så det ville være super fedt hvis du gad at lave funktionen til mig.

Tak på forhånd
MVH Mikkel Mathiesen
Avatar billede majbom Novice
16. april 2009 - 17:31 #3
hvad skal der så ske når billedet er valgt?

skal man kunne trykke videre til en anden side, hvor det valgte billede skal bruges til noget?
Avatar billede CCodam Nybegynder
16. april 2009 - 17:32 #4
Prøv med dette:

<?php
function getIcons($folder) {

    $dirname = $folder;
    $dirhandle = opendir($dirname);
    while($file = readdir($dirhandle)) {
        if ($file != "." && $file != "..") {
            if (is_file($dirname.$file)) {
                echo "<img src=\"" . $folder . $file . "\" />";
                $arrPic[] = $folder . $file;
            } else {
                echo "mappe: " . $file . "<br>";
            }
        }
    }
    echo "<img  border=\"1\" src=\"" $arrPic[rand(0,count($arrPic)-1)] "\" />";
 
}
getIcons("images/icons/");
?>
Avatar billede zeque Nybegynder
16. april 2009 - 17:38 #5
Jeg skal bruge det til et forum, hvor man så kan vælge det ikon der skal vises når man er på oversigten over tråde. Min idé er så at man skal kunne vælge et ikon og når man så trykker opret smider den linket til billedet ind i databasen
Avatar billede CCodam Nybegynder
16. april 2009 - 17:45 #6
#5 Ja ok, jeg kom til at blande flere tråde sammen, så jeg lavede en funktion der tog et random billede af dem der var tilgængelige
Så bare ignorer mit post i #4
Avatar billede CCodam Nybegynder
16. april 2009 - 17:58 #7
#5 Hvordan havde du tænkt dig at de skulle vælge, hvilket Icon de vil have?

Du kunne vælge at gøre det via en radiobutton, som er med i din Opret Form

Og så imens du printer dine billeder ud via funktionen, også tilføje en radiobutton:

if (is_file($dirname.$file)) {
  echo "<input type=\"radio\" value=\"" . $folder . $file . "\" name=\"IconSelect\">"
  echo "<img src=\"" . $folder . $file . "\" />";
} else {


Derefter kan du hente den valgte radiobuttens value på siden din Form submitter til, ved hjælp af:

$Icon = $_POST["IconSelect"];

Håber det kan bruges?
Avatar billede zeque Nybegynder
16. april 2009 - 18:11 #8
7#
Jeg har selv tænkt på løsningen, men jeg vil hellere have noget smartere.

Tak for svaret
Avatar billede majbom Novice
16. april 2009 - 18:14 #9
du kan lave det så billedets navn gemmes i en hidden input, når der klikkes på det, så får du navnet med videre til næste side.

eller der er måske slet ikke en form? skal det hele foregå uden at refreshe siden?
Avatar billede zeque Nybegynder
16. april 2009 - 18:16 #10
Det er i en form, hvordan vil du få billedets navn smidt i en hidden input? btw. siden skal refreshes, når man altså trykker på "opret"
Avatar billede majbom Novice
16. april 2009 - 18:36 #11
utestet:

<input type="hidden" name="image" value="">

...

<img src="dit_billede.jpg" alt="din_text" onclick="this.border='1' document.getElementById('image').value=this.src">
Avatar billede zeque Nybegynder
16. april 2009 - 18:53 #12
#11
Det virker desværre ikke, men den kode gør da ikke så billedenavnet kommer i den skjulte input? Kun så der kommer en border på (den del virker ikke)
Avatar billede majbom Novice
16. april 2009 - 19:07 #13
der mangler et semikolon:

<img src="dit_billede.jpg" alt="din_text" onclick="this.border='1'; document.getElementById('image').value=this.src">

og så skal din input lige have en id:

<input type="hidden" name="image" id="image" value="">

prøv igen
Avatar billede zeque Nybegynder
16. april 2009 - 19:19 #14
Det virker :D, men hvordan kan jeg så gøre så der kun kan vælges et billede? Og hvordan kan jeg ændre farven på borderen?

Tak for hjælpen
Avatar billede majbom Novice
16. april 2009 - 19:27 #15
hvis du ikke har andre billeder i img-tags på din side, hvor der skal være ramme på, kan du:

function selImage(oImg){
  var oImgs = document.getElementsByTagname('img');
  var iSize = oImgs.length;

  for(var i=0;i<iSize;i++){
      oImgs[i].border = '0';
  }
  oImg.border = '1';
  document.getElementById('image').value = oImg.src;
}

og så:

<img src="dit_billede.jpg" alt="din_text" onclick="selImage(this)">
Avatar billede majbom Novice
16. april 2009 - 19:30 #16
glemte at tilføje:

oImg.style.borderColor = '#00ff00';
Avatar billede zeque Nybegynder
16. april 2009 - 19:33 #17
Tak for svaret, nu ser min kode således ud:
<script type="text/javascript">
    function selImage(oImg){
      var oImgs = document.getElementsByTagname('img');
      var iSize = oImgs.length;
   
      for(var i=0;i<iSize;i++){
          oImgs[i].border = '0';
      }
      oImg.border = '1';
      oImg.style.borderColor = '#00ff00';
      document.getElementById('image').value = oImg.src;
    }
</script>
Og php'en:
<?php
function getIcons($folder) {

    $dirname = $folder;
    $dirhandle = opendir($dirname);
    while($file = readdir($dirhandle)) {
        if ($file != "." && $file != "..") {
            if (is_file($dirname.$file)) {
                echo "<img src=\"" . $folder . $file . "\" alt=\"" . $file . "\" onclick=\"selImage(this)\" />";
            } else {
                echo "mappe: " . $file . "<br>";
            }
        }
    }
   
}
?>
Men det virker desværre ikke, hverken borderen eller indsættelsen af linket i det skjulte inputfelt.
Avatar billede majbom Novice
16. april 2009 - 19:38 #18
getElementsByTagName

det skal være med stort n i "name"

prøv igen
Avatar billede zeque Nybegynder
16. april 2009 - 19:42 #19
Mange tusind tak for hjælpen, det virker perfekt :D
Avatar billede zeque Nybegynder
16. april 2009 - 19:42 #20
Smid også lige at svar :D
Avatar billede zeque Nybegynder
16. april 2009 - 19:43 #21
et svar*
Avatar billede majbom Novice
16. april 2009 - 20:07 #22
kommer her... efter et par mislykkede forsøg lykkedes det alligevel :)
Avatar billede majbom Novice
16. april 2009 - 20:17 #23
tak for point
Avatar billede zeque Nybegynder
16. april 2009 - 20:20 #24
#23
Det er mig der siger tak :D
Avatar billede olebole Juniormester
17. april 2009 - 00:24 #25
<ole>

I stedet for at bladre alle billederne igennem hvergang, der væles billede, kan du bare gemme en reference til det valgte billede i en global variabel:

<script type="text/javascript">
var oActImg = null;
function foo(oImg) {
    document.getElementsByName("myImage")[0].value = oImg.getAttribute("src");
    if (oActImg) oActImg.style.border = 0;
    oActImg = oImg;
    oActImg.style.border = "1px solid #00ff00";
}
</script>

<input type="hidden" name="myImage">

<img id="img_1" src="blabla_a.gif" onclick="foo(this)">
<img id="img_2" src="blabla_b.gif" onclick="foo(this)">
<img id="img_3" src="blabla_c.gif" onclick="foo(this)">

/mvh
</bole>
Avatar billede zeque Nybegynder
18. april 2009 - 12:26 #26
#23
Jeg har lige et bonus spørgsmål:
Hvordan kan man gøre så der er en der er selected fra starten?

Tak på forhånd.
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