Avatar billede crapmaster Nybegynder
21. juni 2003 - 02:03 Der er 15 kommentarer og
1 løsning

Min billeder får et tal

Hvordan kan det være at når man uploader et billede til min side, bliver navnet lavet om til tal Exp.

Før: Cola.jpg

efter: 28349238470232039470.jeg



Min kode:


<?php
#Indstillinger
mysql_pconnect("localhost","xxxxxxx","xxxxxxxx");
mysql_select_db("xxxxxxxxx");
$sum = 4; // Antal billeder ved siden af hinanden
$sumcount = 1;
$imgwidth = 96; // Billedets bredde
$imgheight = 65; // Bileddets højde
$mappe = "gall"; // Mappen med billeder
$prside = 16; // Antal billeder pr. side

if (isset($_POST['up'])) {
    $i = 0;
    while (list($name, $value) = each($_FILES['upfil']['name'])) {
        if ($value) {
            $dist = "/var/www/hotels/1go/nokia3510i/html/$mappe/";
            $files = $value;
            if(eregi(".jpg$", $files) || eregi(".gif$", $files) || eregi(".png$", $files)) {
                $temparr = explode(".", $files);
                $temparr[count($temparr)-2] = time();
                $files = implode(".", $temparr);
                $rand = rand(1,100000);
                $files = "$rand$files";
                move_uploaded_file($_FILES['upfil']['tmp_name'][$i], $dist . $files);
                mysql_query("INSERT INTO gallery (time, filename) VALUES (now(), '$files')");
            }
        }
        $i++;
    }
    header("Location: $_SERVER[PHP_SELF]");
}

$visfra = $_GET['visfra'];

if(!$_GET['visfra']) {
    $visfra = 0;
}

?>
<html>
<head>
<script type="text/javascript">
function PopupImg(img) {
    window.open("popup.php?img="+img,"ahv","width=<?php echo $imgwidth; ?>,height=<?php echo $imgheight; ?>");
}
</script>
</head>

<body>
<div align="center">
<?php
$query = mysql_query("SELECT * FROM gallery ORDER BY id DESC limit $visfra, $prside");
while($row = mysql_fetch_array($query)) {
    echo "<a href=\"java script: PopupImg('$mappe/$row[filename]')\"><img src=\"$mappe/$row[filename]\" width=\"$imgwidth\" height=\"$imgheight\"></a> ";
    if ($sumcount == $sum) {
        $sumcount = 0;
        echo "<br>";
    }
    $sumcount++;
    $i++;
}
?>
<hr>
<?php
$antal = mysql_num_rows(mysql_query("SELECT * FROM gallery"));

if ($visfra > 0) {
    $bagud = $visfra-$prside;
    echo "<a href='$_SERVER[PHP_SELF]?visfra=$bagud'>Forrige</a> ";
}
$page = 1;
for ($start = 0; $antal > $start; $start = $start + $prside) {
    if($visfra != $page * $prside - $prside) {
        echo "<a href='$_SERVER[PHP_SELF]?visfra=$start'>$page</a> ";
    } else {
        echo $page." ";
    }
    $page++;
}
if ($visfra < $antal - $prside) {
    $naeste = $visfra + $prside;
    echo " <a href='$_SERVER[PHP_SELF]?visfra=$naeste'>Næste</a>";
}
?>
<br>
<a href="upload.php">Upload</a>
</div>
</body>
</html>
Avatar billede jakoba Nybegynder
21. juni 2003 - 02:16 #1
din linie
    while (list($name, $value) = each($_FILES['upfil']['name'])) {
er besynderlig. Du beder om at få 2 værdier ud af en iteration over et array (hvis det er et array).
jeg kan ikke forestille mig en situation hvor det giver mening.

prøv at indsætte 3 linier foran den der while linie:
    echo "-------------------------<br>";
    var_dump( $_FILES );
    echo "<br>-------------------------";
og kopier det der bliver skrevet imellem ------------------- linierne ind her så vi kan se alt hvad hvad der står i det array.

mvh JakobA
Avatar billede crapmaster Nybegynder
21. juni 2003 - 10:38 #2
Den skal jeg nok ha igen....
Avatar billede jakoba Nybegynder
21. juni 2003 - 14:31 #3
lav disse 3 linier:
    if (isset($_POST['up'])) {
        $i = 0;
        while (list($name, $value) = each($_FILES['upfil']['name'])) {
om til
    if (isset($_POST['up'])) {
        $i = 0;
        echo "-------------------------<br>";  // 3 nye linie tilføjet
        var_dump( $_FILES );
        echo "<br>-------------------------";
        while (list($name, $value) = each($_FILES['upfil']['name'])) {

og hent så siden ind i din browse via php efter at have valgt et par filer.

fortæl hvad der står i sidens sourcekode på det sted.

Det vil IKKE få din side til at virke. sandsynligvis snarere gøre den grim. Men det vil fortælle mig hvad der foregår, så siden kan blive rettet ind til den virker. sidenhen fjerner vi de 3 linier igen.

mvh JakobA
Avatar billede crapmaster Nybegynder
21. juni 2003 - 14:37 #4
Så får jeg denne fejl kode:


-------------------------
array(1) { ["upfil"]=> array(4) { ["name"]=> array(1) { [0]=> string(6) "92.jpg" } ["type"]=> array(1) { [0]=> string(11) "image/pjpeg" } ["tmp_name"]=> array(1) { [0]=> string(14) "/tmp/phppmGw9O" } ["size"]=> array(1) { [0]=> int(4285) } } }
-------------------------
Warning: Cannot add header information - headers already sent by (output started at /var/www/hotels/1go/nokia3510i/html/gall.php:14) in /var/www/hotels/1go/nokia3510i/html/gall.php on line 33
Avatar billede jakoba Nybegynder
21. juni 2003 - 15:19 #5
Ok det bliver så:

array(1) {                                        << et enkelt billede uploadet
  ["upfil"] =>
      array(4) {                                << for hvert billede kommer
        ["name"] =>
            array(1) {
              [0] => string(6) "92.jpg"          <<    filnavnet
                    }
        ["type"] =>
            array(1) {
              [0] => string(11) "image/pjpeg"    <<    mimetypen
                    }
        ["tmp_name"] =>
            array(1) {
              [0] => string(14) "/tmp/phppmGw9O"
                    }
        ["size"] =>
            array(1) {
              [0] => int(4285)
                    }
              }
        }

Jeg er lidt i tvivl om hvilket(hvilke) arrays der bliver længere hvis der er to filer der uploades men prøv at lave

  if (isset($_POST['up'])) {
      $i = 0;
      while (list($name, $value) = each($_FILES['upfil']['name'])) {
          if ($value) {

om til:

  if (isset($_POST['up'])) {
      $i = 0;
      for ( ; $i<count($_FILES['upfil']['name']); ) {
          $name  = $_FILES['upfil']['name'][$i];
          $value = $_FILES['upfil']['type'][$i]; 
          if ($value) {

Dus snakker om at dit filnavn bliver numerisk, men  92.jpg  er altså et nummer der bruges som filnavn.

mvh JakobA
Avatar billede crapmaster Nybegynder
21. juni 2003 - 15:47 #6
Så kommer den med denne :

Warning: Unable to create '/var/www/hotels/1go/nokia3510i/html/gall/61958image/gif.1056203246': No such file or directory in /var/www/hotels/1go/nokia3510i/html/gall.php on line 27

Warning: Unable to move '/tmp/php8BmwT2' to '/var/www/hotels/1go/nokia3510i/html/gall/61958image/gif.1056203246' in /var/www/hotels/1go/nokia3510i/html/gall.php on line 27

Warning: Cannot add header information - headers already sent by (output started at /var/www/hotels/1go/nokia3510i/html/gall.php:27) in /var/www/hotels/1go/nokia3510i/html/gall.php on line 33
Avatar billede aovergaard Nybegynder
21. juni 2003 - 15:53 #7
Hvorfor går du ikke bare ind og højreklikker på billedet og skriver en alternativ tekst i egenskaber for billede? Så er du ude over de problemer
Avatar billede crapmaster Nybegynder
21. juni 2003 - 15:55 #8
Fordi der kommer til at være mange billeder på denne side, og der er mange mensker der kommer til at upload billeder på den, ville du så ha jeg skulle side og rettet alle dem hele tiden, Siden kommer oxo på Wap på et tidspunkt...
Avatar billede jakoba Nybegynder
21. juni 2003 - 16:13 #9
aovergaard >> vil du ikke være rar at overtage? det lyder som du har en ide om hvad der går galt og jeg aner det ikke.

mvh JakobA
Avatar billede aovergaard Nybegynder
21. juni 2003 - 16:39 #10
Ok jakoba

Jeg syntes virkelig at du skal højreklikke på samtlige billeder og give samtlige billeder en alternativ tekst. Alt det med de numre ser så dumt ud på Websiden. Derudover er der faktisk mange personer som har fravalgt at kunne se billeder for at gøre deres gang på Nettet hurtigere, og i de situationer er det også pænt gjort af webmaster har været flik at give en rammende beskrivelse af hver enkelt billede.
Avatar billede aovergaard Nybegynder
21. juni 2003 - 16:40 #11
flik= flink
Avatar billede ahv Nybegynder
21. juni 2003 - 19:02 #12
aovergaard & jakoba ->
Det er bare navnet der skal rettes så den ikke for den lange tal værdi, så løsningen må da blot være at lave den if om til ->

if (isset($_POST['up'])) {
    $i = 0;
    while (list($name, $value) = each($_FILES['upfil']['name'])) {
        if ($value) {
            $dist = "/var/www/hotels/1go/nokia3510i/html/$mappe/";
            $files = $value;
            if(eregi(".jpg$", $files) || eregi(".gif$", $files) || eregi(".png$", $files)) {
                $temparr = explode(".", $files);
                $temparr[count($temparr)-2] = time();
                $files = implode(".", $temparr);
                $rand = rand(1,100000);
                $files = "$rand$files";
                move_uploaded_file($_FILES['upfil']['tmp_name'][$i], $dist . $files);
                mysql_query("INSERT INTO gallery (time, filename) VALUES (now(), '$files')");
            }
        }
        $i++;
    }
    header("Location: $_SERVER[PHP_SELF]");
}
Avatar billede ahv Nybegynder
21. juni 2003 - 19:02 #13
Hov
Avatar billede ahv Nybegynder
21. juni 2003 - 19:02 #14
aovergaard & jakoba ->
Det er bare navnet der skal rettes så den ikke for den lange tal værdi, så løsningen må da blot være at lave den if om til ->

if (isset($_POST['up'])) {
    $i = 0;
    while (list($name, $value) = each($_FILES['upfil']['name'])) {
        if ($value) {
            $dist = "/var/www/hotels/1go/nokia3510i/html/$mappe/";
            $files = $value;
            if(eregi(".jpg$", $files) || eregi(".gif$", $files) || eregi(".png$", $files)) {
                move_uploaded_file($_FILES['upfil']['tmp_name'][$i], $dist . $files);
                mysql_query("INSERT INTO gallery (time, filename) VALUES (now(), '$files')");
            }
        }
        $i++;
    }
    header("Location: $_SERVER[PHP_SELF]");
}
Avatar billede crapmaster Nybegynder
21. juni 2003 - 19:04 #15
Tak AHV
Det virker sku.....T tak
Avatar billede crapmaster Nybegynder
21. juni 2003 - 19:04 #16
//Lukker
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