Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2021-08-14, 19:49
  #1
Medlem
Kod:
<?php
//koppling till databas
include_once("db.php");   
session_start();
?>

<!DOCTYPE html>
<html>
<head>
<title>TEST</title>
</head>

<body>
    <form method="POST" action="" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
    <input type="file" id="image" name="img"></input><br><br>
    <input type="text" id="description" name="description" placeholder="Image description"></input><br><br>
    <input type="submit" id="send" name="send" value="upload"></input>
    </form>
    
        <?php
        
         
if((isset($_POST['send'])) && (isset($_FILES['img']))){
         echo 
"<pre>";
         
print_r($_FILES['img']);
         echo 
"</pre>";
         
         
$name $_FILES['img']['name'];
         
$size $_FILES['img']['size'];
         
$tmp_name $_FILES['img']['tmp_name'];
         
$error $_FILES['img']['error'];
         
         
$description $_POST['description'];
         
$name $_SESSION['name'];
         
         
$result mysqli_query($conn ,"SELECT id FROM user WHERE username = '$name'");
         if(
$result){
             while(
$row mysqli_fetch_array($result)){
                 
$id $row['id'];
             }
         }
         
        
$upload_dir "C:\\xampp\\htdocs\\uploads\\";
        
$target_file basename($_FILES['img']['name']);
        
        if(
move_uploaded_file($tmp_name$upload_dir $target_file))
        {
        echo 
"Filen har laddats upp.";
        
mysqli_query($conn,"INSERT INTO user.image (filename, description, postId) VALUES ('$target_file','$description','$id')");
        
        } 
        else 
        {
        echo 
"Ett fel uppstod...";
        }
    };
                    
//[b]FUNKAR INTE HÄRIFRÅN[/b]
            
$result mysqli_query($conn,"SELECT * FROM images");
        
            if(
$result){
            while(
$row mysqli_fetch_array($result)){
                
$image $row['filename'];
                echo 
$image;
                
            }
            
        }

        
?>
        
    <img src ="C:\xampp\htdocs\uploads\<?php echo $image?>" height="100px" width="100px"/>;
    
</body>

</html>

Filen sparas på rätt ställe men den printas inte ut på skärmen, det blir bara en <img/> "ruta", tom. Vad är fel?

Funkar inte härifrån:
$result = mysqli_query($conn,"SELECT * FROM images");
__________________
Senast redigerad av bosscs2 2021-08-14 kl. 20:02.
Citera
2021-08-14, 20:10
  #2
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av bosscs2
Kod:
<?php
//koppling till databas
include_once("db.php");   
session_start();
?>

<!DOCTYPE html>
<html>
<head>
<title>TEST</title>
</head>

<body>
    <form method="POST" action="" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
    <input type="file" id="image" name="img"></input><br><br>
    <input type="text" id="description" name="description" placeholder="Image description"></input><br><br>
    <input type="submit" id="send" name="send" value="upload"></input>
    </form>
    
        <?php
        
         
if((isset($_POST['send'])) && (isset($_FILES['img']))){
         echo 
"<pre>";
         
print_r($_FILES['img']);
         echo 
"</pre>";
         
         
$name $_FILES['img']['name'];
         
$size $_FILES['img']['size'];
         
$tmp_name $_FILES['img']['tmp_name'];
         
$error $_FILES['img']['error'];
         
         
$description $_POST['description'];
         
$name $_SESSION['name'];
         
         
$result mysqli_query($conn ,"SELECT id FROM user WHERE username = '$name'");
         if(
$result){
             while(
$row mysqli_fetch_array($result)){
                 
$id $row['id'];
             }
         }
         
        
$upload_dir "C:\\xampp\\htdocs\\uploads\\";
        
$target_file basename($_FILES['img']['name']);
        
        if(
move_uploaded_file($tmp_name$upload_dir $target_file))
        {
        echo 
"Filen har laddats upp.";
        
mysqli_query($conn,"INSERT INTO user.image (filename, description, postId) VALUES ('$target_file','$description','$id')");
        
        } 
        else 
        {
        echo 
"Ett fel uppstod...";
        }
    };
                    
//[b]FUNKAR INTE HÄRIFRÅN[/b]
            
$result mysqli_query($conn,"SELECT * FROM images");
        
            if(
$result){
            while(
$row mysqli_fetch_array($result)){
                
$image $row['filename'];
                echo 
$image;
                
            }
            
        }

        
?>
        
    <img src ="C:\xampp\htdocs\uploads\<?php echo $image?>" height="100px" width="100px"/>;
    
</body>

</html>

Filen sparas på rätt ställe men den printas inte ut på skärmen, det blir bara en <img/> "ruta", tom. Vad är fel?

Funkar inte härifrån:
$result = mysqli_query($conn,"SELECT * FROM images");
Vad är det du ska göra?
Visa alla bilder i tabelllen images?
Det ser ut som du använder två olika tabeller för att spara respektive hämta filnamnet.

Dessutom om du ska visa flera bilder måste du också loopa <img> taggarna. Just nu är det enbart en img-tagg.
Citera
2021-08-14, 20:15
  #3
Medlem
Citat:
Ursprungligen postat av Enterprise
Vad är det du ska göra?
Visa alla bilder i tabelllen images?
Det ser ut som du använder två olika tabeller för att spara respektive hämta filnamnet.

Dessutom om du ska visa flera bilder måste du också loopa <img> taggarna. Just nu är det enbart en img-tagg.

Jag vill hämta bilder från från tabellen images. Efter att användare fyllt i formuläret och tryckt på upload ska filen printas ut på sidan.

Ja det stämmer, 2 tabeller, en kopplad till user och en till uppladdade filer.

EDIT img taggen funkar inte...
Citera
2021-08-14, 20:27
  #4
Medlem
auruns avatar
$image är tom gissar jag och är den även det i databasen? Där börjar du så lär du se problemet på en sekund.
Citera
2021-08-14, 20:35
  #5
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av bosscs2
Jag vill hämta bilder från från tabellen images. Efter att användare fyllt i formuläret och tryckt på upload ska filen printas ut på sidan.

Ja det stämmer, 2 tabeller, en kopplad till user och en till uppladdade filer.

EDIT img taggen funkar inte...
Du hämtar nu alla filnamn i images-tabellens. Dessa skrivs ut genom echo till klienten utan någon kontext (utanför taggar). Sedan, efter att loopen är slut så kommer en img-tagg. Har du kollat om $image inte är tom efter loopen är färdig?

Om du bara behöver den uppladdade filen så är det väl onödigt med att hämta alla filnamn från images?

Bättre att bara använda filnamnet och sätta in i img-taggen? Filnamnet har du ju redan från $_FILES-variablen?

Du har dessutom en lokal URL med C: osv som kan krångla enligt min erfarenhet.
__________________
Senast redigerad av Enterprise 2021-08-14 kl. 21:01.
Citera
2021-08-14, 20:54
  #6
Medlem
Citat:
Ursprungligen postat av aurun
$image är tom gissar jag och är den även det i databasen? Där börjar du så lär du se problemet på en sekund.

image kolumnen består av namn.jpg etc.. kolumnen är alltså inte tom men som du skriver verkar $image vara det.
Citera
2021-08-14, 20:58
  #7
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av bosscs2
image kolumnen består av namn.jpg etc.. kolumnen är alltså inte tom men som du skriver verkar $image vara det.
Det är bara att göra en var_dump() på $image efter loopen är färdig så ser du om den är tom.
Förstår fortfarande inte varför du har en loop först. Vad vill du åstadkomma med den?
Citera
2021-08-14, 21:00
  #8
Medlem
Citat:
Ursprungligen postat av Enterprise
Du hämtar nu alla filnamn i images-tabellens. Dessa skrivs ut genom echo till klienten utan någon kontext (utanför taggar). Sedan, efter att loopen är slut så kommer en img-tagg. Har du kollat om $image inte är tom efter loopen är färdig?

Om du bara behöver den uppladdade filen så är det väl onödigt med att hämta alla filnamn från images?

Bättre att bara använda filnamnet och sätta in i img-taggen? Filnamnet har du ju redan från $_POST-variablen?

Du har dessutom en lokal URL med C: osv som kan krångla enligt min erfarenhet.

Jag tror $image är tom efter while loopen, provar att skriva echo $image men inget printas ut så gissar att den är tom.

Även fast jag hårdkodar (regression.jpg) filnamnet i img taggen skrivs inget ut:
HTML-kod:
<img src ="C:\\xampp\\htdocs\\uploads\\<?php echo "regression.jpg" ?>" height="100px" width="100px"/>;
Citera
2021-08-14, 21:03
  #9
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av bosscs2
Jag tror $image är tom efter while loopen, provar att skriva echo $image men inget printas ut så gissar att den är tom.

Även fast jag hårdkodar (regression.jpg) filnamnet i img taggen skrivs inget ut:
HTML-kod:
<img src ="C:\\xampp\\htdocs\\uploads\\<?php echo "regression.jpg" ?>" height="100px" width="100px"/>;
Hur ser img-taggen ut om visar den råa HTML-koden genom visa källa i browsern, i ditt senaste exempel?
Kan det vara den lokala URL:en som spökar?
Citera
2021-08-14, 21:06
  #10
Medlem
Citat:
Ursprungligen postat av Enterprise
Det är bara att göra en var_dump() på $image efter loopen är färdig så ser du om den är tom.
Förstår fortfarande inte varför du har en loop först. Vad vill du åstadkomma med den?

var_dump() skickar en boolean i retur?

Jag loopar för mysqli_fetch_array("result");

funkar inte fast jag skiver SELECT * FROM image WHERE id = 1.
Citera
2021-08-14, 21:13
  #11
Medlem
Citat:
Ursprungligen postat av Enterprise
Hur ser img-taggen ut om visar den råa HTML-koden genom visa källa i browsern, i ditt senaste exempel?
Kan det vara den lokala URL:en som spökar?

Det kan vara browsern som spökar?
Vet inte hur man kollan källan i browsern, använder Edge
Citera
2021-08-14, 21:15
  #12
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av bosscs2
Det kan vara browsern som spökar?
Vet inte hur man kollan källan i browsern, använder Edge
Nej, det är troligen inte browsern. Men du kan felsöka genom browser för att se hur PHP renderar sin output.

Visa sidkälla är Ctrl+U på Edge. Eller högerklicka och välj visa sidkälla
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback