30 berichten aan het bekijken - 1 tot 30 (van in totaal 30)
  • Q:
    Bijdrager
    Jpunt

    PHP/MySQL: afbeelding alleen tonen als die aanwezig is…

    hoi,

    even een kort vraagje:

    ik ben bezig met een systeem waar artikelen en evt een foto in komen. Hoe kan ik het het beste regelen dat de foto getoont wordt als deze is ingevuld (met evt de maximale breedte!), maar niet zo’n foutmelding-plaatje krijg als die niet is ingevuld?

    BVD!

    Bijdrager
    G3FX

    fopen command en dan met if statement de afhandeling.

    Weet niet of het werkt, maar moet zo mogelijk zijn volgens mij.

    Bijdrager
    meneer de koekepeer

    [code:1:3c037af410]if ( $result[’foto_veld_naam’] != ” )
    {
    echo ‘<img src… />’;
    }[/code:1:3c037af410]

    Bijdrager
    mediaddict

    [code:1:f2fcde9178]
    <?php
    if($myrow["afbeelding"])
    {
    echo "<img src="images/";
    echo $myrow["afbeelding"];
    echo "" border="0">";
    }
    [/code:1:f2fcde9178]

    zoiets;)

    Bijdrager
    Jpunt

    zit wat in!
    ik ga er verder mee klooien, in ieder geval bedankt tot nu toe :D

    Bijdrager
    Jpunt

    ok, toch even een probleempje…

    de inhoud zít al in een echo, om alles uit de db te halen enzo. Hoe kan ik dan die if en echo enzo daarín krijgen? Heb ik al mee zitten stoeien, maar ik krijg tot nu toe alleen maar parse-errors.

    oja, en kan ik de afbeeldingen ook een maximale breedte meegeven? Dus niet dat alle afbeeldingen naar een bepaalde grootte vervormd worden, maar áls ze breder zijn dan een bepaald aantal pixels, ze (in verhouding) worden verkleind en dat kleinere foto’s niet worden vergroot? Of zou dit misschien al bij het toevoegen moeten gebeuren? :?

    Bijdrager
    mediaddict

    dit moet indd bij het toevoegen gebeuren
    en werkt alleen maar als de GD-library geïnstalleerd is
    (moet je even aan je provider vragen)

    misschien is het handig als je je code hier even post

    Bijdrager
    Jpunt

    aha,
    nou ok, hier is me code inderdaad!

    [code:1:137fcf6d80]

    <table width="100%" border="0" cellspacing="1" cellpadding="1">
    <tr>
    <td valign="top"><?PHP include ("nieuws-nieuw.php");?></td>
    <td valign="top"><?php
    include (’config.php’);

    $query = "SELECT * FROM nieuws ORDER BY id DESC";

    $resultaat = mysql_query($query) or die (mysql_error());
    while ($obj = mysql_fetch_object($resultaat)) {

    $id=stripslashes($obj->id);
    $datum=stripslashes($obj->datum);
    $titel=stripslashes($obj->titel);
    $bericht=stripslashes($obj->bericht);
    $bericht = nl2br($bericht);
    $foto=stripslashes($obj->foto);

    echo"
    <table width="100%">
    <tr>
    <td align="left" bgcolor="FAEFE8"><a name="$id"><p><strong>$titel</strong></p></td>
    </tr>
    <tr>

    <td><p align="right">$datum</p>

    <img src="$foto" class="nieuws-foto">

    <p>$bericht</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p></td>
    </tr>
    ";}
    ?>
    </table>
    </td>
    </tr>
    </table>

    [/code:1:137fcf6d80]

    Bijdrager
    Sambo

    ik moet er zelf nog in duiken maar volgens mij zit er een “scale” functie in GD lib. Die schijnt efficient en snel te werken, dus dat zou ik effe uitzoeken.

    Als je meer weet, mag je het hier posten, want ik moet er binnekort ook mee aan de slag.
    BVD

    Bijdrager
    mediaddict

    u vraagt, wij draaien
    ik ben er toevallig zelf juist mee bezig;)

    [code:1:80f27824ca]
    <?php
    if(isset($_FILES[’afb1’]))
    {
    //variabelen
    $maxsize = 302400; //maximale grootte in bytes
    $file_name1 = substr($_FILES[’afb1’][’name’], 0, -4); //naam van de afbeelding
    $map = "../uploads/"; //uploadmap

    //De groote van het bestand vergelijken met het maximum toegelaten
    if($_FILES[’afb1’][’type’] > $maxsize)
    {
    exit("De afbeelding is " . $_FILES[’afb1’][’size’] . " bytes, het maximum toegelaten is " . $maxsize . " bytes");
    }

    //checken of het wel een jpg is
    if($_FILES[’afb1’][’type’] == "image/jpeg")
    {
    //de extensie van het bestand in een variabele steken
    $x = strtolower(substr($_FILES[’afb1’][’name’], -3));
    $n = 0;

    // Check of de afbeelding al bestaat, zo ja, filename verhogen
    while(file_exists($map . $file_name1 . $n . ‘.’ . $x))
    {
    $n = $n + 1;
    }
    $file_name1 = $file_name1 . $n;

    //het bestand verplaatsen naar de opgegeven map en hernoemen naar de opgegeven filenaam
    move_uploaded_file($_FILES[’afb1’][’tmp_name’],$map . $file_name1 . ‘.’ . $x);

    //bestand chmodden
    chmod($map . $file_name1 . ‘.’ . $x, 0777);

    $width = 80; //maximale breedte, in pixels, van de thumbnail
    $thumb = "../uploads/thumbs/" . $file_name1 . ‘.’ . $x; //de map waar de thumbnails in komen
    $orig = $map . $file_name1 . ‘.’ . $x;

    //het plaatje gaan verkleinen
    $b = imagecreatefromjpeg($map . $file_name1 . ‘.’ . $x) or die ("Er is een probleem opgetreden bij het verkleinen van de afbeelding");
    $bx = imagesx($b); //breedte van het orgineel
    $by = imagesy($b); //hoogte van het orgineel
    $lm = $b;

    //hoogte uitrekennen
    $temp = $bx / $width;
    $height = $by / $temp;

    //het afbeelding maken
    $lm1 = imagecreate($width ,$height) or die ("Er is een probleem opgetreden bij het creëren van de afbeelding");

    //als je geen GD library 2 hebt moet je imagecopyresampled veranderen in imagecopyresized(lagere kwaliteit)
    imagecopyresampled($lm1, $lm, 0, 0, 0, 0, $width, $height, $bx, $by);

    //kwaliteit van de jpg -> op 80
    imagejpeg($lm1,$thumb,80);

    //opruimen
    imagedestroy($lm1);
    imagedestroy($lm);

    //fout als het geen jpg is
    }
    else
    {
    echo "Het bestandsformaat word niet ondersteund.<br>Alleen jpg wordt toegelaten.<br><br>";
    }
    }
    [/code:1:80f27824ca]

    Bijdrager
    Jpunt

    ok…. en dit is het uploaden van die foto? heb ik ook nog nodig!

    al iemand tips voor mijn eerste vraag? :D

    Bijdrager
    mediaddict

    de code hierboven is indd voor het uploaden van de foto
    -> hij maakt er een thumbnail van en plaatst die in de map “thumbs”
    -> het origineel wordt ook behouden, die kun je dan gebruiken als
    je bvb op de thubmnail klikt om een groter exemplaar te zien

    wat betreft je eerste vraag, komt het hier op neer denk ik:
    [code:1:9b753d44c7]
    if($foto)
    {
    echo "<img src="images/";
    echo $foto;
    echo "" border="0">";
    }
    [/code:1:9b753d44c7]

    Bijdrager
    mac748

    Zelf gebruik ik altijd een functie getPad() waarme je een url of een fysiekpad kunt achterhalen, maar die zou in dit geval niet werken.
    [code:1:accafb3020]//$source kan met een url maar het best werkt het fysieke pad vanaf de root te verkrijgen met $_SERVER[’SCRIPT_FILENAME’] en dan aanpassen aan je upload director
    $strOutput = "";
    $source = ""; //het fysieke pad
    $imgsource = ""; //vul hier het relatieve pad in
    if (file_exists($source)){
    $size = getimagesize($source);
    $size = $size[3]; // levert de string => width ="…" heigth="…" op met de juiste maten erin
    $strOutput = "<img src="$imgsource" $size alt="$titel" title="$titel" />";
    }[/code:1:accafb3020]

    Op deze manier check je of het bestand echt bestaat en niet alleen of het in de database voorkomt

    Bijdrager
    zero200
    Bijdrager
    mac748

    En nog mijn resize functie
    s.gif is een vierkant wit gifje van 55X55 pixels (zo heb ik ook nog m en l) dat de maat van de thumbnails bepaald.
    de variable $now = time(); zodat de namen uniek zijn.
    [code:1:8d00a4f26c]function resizeImage($base, $image, $destination, $compression) { // $base = het basis gifje, $image is het geuploade bestand, $destination inclusief pad vanaf root, $compression = jpeg compressie in % (80 = 80%)
    $result = "" ;
    $temp = "" ;
    list($width, $height, $type, $attr) = getimagesize($image);
    list($wmax, $hmax) = getimagesize($base);
    $hscale = $height / $hmax;
    $wscale = $width / $wmax;
    if (($hscale > 1) || ($wscale > 1)) {
    $scale = ($hscale > $wscale) ? $hscale : $wscale ;
    } else {
    $scale = 1;
    }
    if ($type == 1) { // GIF
    $temp = imagecreatefromgif($image) ;
    } elseif ($type == 2) { // JPG
    $temp = imagecreatefromjpeg($image) ;
    } elseif ($type == 2) { // PNG
    $temp = imagecreatefrompng($image) ;
    } else {
    $temp = "";
    }

    if ($temp != "") {
    $newwidth = floor($width / $scale);
    $newheight = floor($height / $scale);
    $newimage = @imagecreatetruecolor($newwidth, $newheight); // created thumbnail reference
    $resize = imagecopyresampled($newimage, $temp, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

    if($destination !== "" && $resize) {
    $result = imagejpeg($newimage, $destination, $compression);
    } else {
    $result = "maken van images mislukt<br />";
    }
    imagedestroy($newimage);
    imagedestroy($temp);
    }
    return $result ;
    }

    $small = resizeImage("/fysiek/pad/naar/s.gif", $_FILES[’source’][’tmp_name’], "/fysiek/pad/naar/s_$now.jpg", 40);[/code:1:8d00a4f26c]

    Bijdrager
    Jpunt

    sorry mensen, ik zit nog steeds met het eerste probleem. het lukt me maar niet om een apparte php-code ín die echo te krijgen. zodra ik m’n $foto namelijk gebruik, beeld hij die gewoon af in de pagina, ipv de code te volgen. moet ik die nieuwe echo niet isoleren of iets dergelijks?

    ik heb nu bijvoorbeeld:
    [code:1:17b2f51c47]
    if (!$foto)
    { echo "<img src="$foto">"; }

    else { echo "geen afbeelding"; }
    [/code:1:17b2f51c47]

    als $foto iets bevat, echo hem dan, anders de tekst: geen afbeelding. het gevolg:
    http://www.enkhuyzer-parkethuys.com/index.php?content=nieuws

    Bijdrager
    basvandorst

    je moet het zooitje wel tussen de php tags gooien:

    [code:1:d02f5d65ba]
    <?

    blalabllablablabl hier php

    ?>
    [/code:1:d02f5d65ba]

    Bijdrager
    basvandorst

    wat misschien net zo goed werkt:

    [code:1:93c20822f6]
    <img src=’plaatje.jpg’ onerror="this.src=’error_plaatje.jpg’ ">
    [/code:1:93c20822f6]

    Bijdrager
    Jpunt
    ”basvandorst”

    je moet het zooitje wel tussen de php tags gooien:

    [code:1:ed1789dc39]
    <?

    blalabllablablabl hier php

    ?>
    [/code:1:ed1789dc39]

    ook als het al in een echo staat?

    ik heb nu dus bijvoorbeeld:
    [code:1:ed1789dc39]
    echo"
    <table width="100%">
    <tr>
    <td align="left" bgcolor="FAEFE8"><a name="$id"><p><strong>$titel</strong></p></td>
    </tr>
    <tr><td>

    <?PHP
    if ($foto ! = ”)
    {
    echo "<img src="$foto" class="rechts">"
    }
    else
    {
    echo "geen afbeelding";
    }
    ?>

    </tr>
    ";}
    ?>

    [/code:1:ed1789dc39]

    wat doe ik fout :x

    Bijdrager
    basvandorst

    [code:1:68b2206c07]
    <?
    echo "
    <table width="100%">
    <tr>
    <td align="left" bgcolor="FAEFE8"><a name="$id"><p><strong>$titel</strong></p></td>
    </tr>
    <tr><td>";

    // deze if loop moet buiten de echo/print functie
    if ($foto ! = "")
    {
    echo "<img src="$foto" class="rechts">";
    }
    else
    {
    echo "geen afbeelding";
    }

    echo "</tr>";
    ?>
    [/code:1:68b2206c07]

    Bijdrager
    Jpunt
    ”basvandorst”

    [code:1:2e2e472c26]
    // deze if loop moet buiten de echo/print functie
    if ($foto ! = "")
    {
    echo "<img src="$foto" class="rechts">";
    }
    else
    {
    echo "geen afbeelding";
    }

    [/code:1:2e2e472c26]

    ja ok, maar waar moet ik die dán kwijt? :o kben het even totaal kwijt denk ik!

    Bijdrager
    basvandorst

    nou de code in mijn vorige bericht klopt….
    die /// buiten de if else loop, was alleen maar als opmerking bedoeld.

    Bijdrager
    Jaapjxs

    Waarom geen
    [code:1:8cada9f742]if (file_exists($foto)) {
    bla die bla die bla
    }[/code:1:8cada9f742]?

    Bijdrager
    Jpunt

    nee maar wacht even!

    ik heb een echo die alle informatie uitschijt. daarin wil ik een php-script zetten voor die afbeeldingen enzo. Kan dat zowiezo wel? Ik wil hem er namelijk wel buiten zetten, maar ik heb dan geen idee hoe het dan zou moeten werken op alle info. Jou code heb ik trouwens ook geprobeerd en die gaf een parse error aan.

    misschien dat ik toch maar voor de error-image-oplossing ga, want dit ben ik na een dag klooien wel zat eigelijk

    Bijdrager
    basvandorst

    mja ik zit hier zelf ook maar te suffen zie ik, deze werkt wel:
    [code:1:9e2db35030]
    <?
    echo "
    <table width="100%">
    <tr>
    <td align="left" bgcolor="FAEFE8"><a name="$id"><p><strong>$titel</strong></p></td>
    </tr>
    <tr><td>";

    // deze if loop moet buiten de echo/print functie
    if ($foto != "")
    {
    echo "<img src="$foto" class="rechts">";
    }
    else
    {
    echo "geen afbeelding";
    }

    echo "</tr>";
    ?>
    [/code:1:9e2db35030]
    en ja je kant wel informatie in een echo gooien alleen moet dit dan wel in de vorm van een variable of een array etc. zijn
    Je kunt niet in een echo een if loop doen
    Dus zoals je hierboven ziet sluit ik de echo af met “; en dan de if/else loop en daarna weer echo ”

    Jaapjxs: dr wordt ook gewerkt met remote files, dus file_exists is niet echt een goede oplossing.

    Bijdrager
    Jpunt

    :lol: :lol: :lol: ik begin het licht weer een beetje te zien:)
    bedankt, ik ga wéér ff verder klooien

    Bijdrager
    Jaapjxs
    ”basvandorst”

    Jaapjxs: dr wordt ook gewerkt met remote files, dus file_exists is niet echt een goede oplossing.

    Excuus.. ik had niets over remote files gelezen…:oops:

    Bijdrager
    Jpunt

    :bigsmile: :bigsmile: :bigsmile: :bigsmile:
    JAWEL MENSEN!

    het is er dan eindelijk uit hoor. het werkt! Het probleem was dat ik niet wist dat je een echo gewoon kon afsluiten en later weer door kon laten gaan. Het werkt gewoon lekker, en de testsite is hier te bekijken:

    http://www.enkhuyzer-parkethuys.com/index.php?content=nieuws

    nogmaals BEDANKT!

    Bijdrager
    Aglaea

    JaZ86; een goede tip… Stop nooit, maar dan ook NOOIT meer alles in een echo… Dat scriptkiddygedrag is uiterst onverstandig. Maak gewoon je HTML-pagina en plak PHP-code er in waar dat nodig is. Dan voorkom je ook dit soort [CENSUUR]-vragen waarbij je code in een echo stopt en vervolgens vraagt waarom het niet werkt… Want je plakt nu code in HTML, terwijl die HTML geen HTML meer is, maar een string in een echo…

    Vervolgens was de oplossing voor je vraag heel eenvoudig:
    [code:1:2a86375e63]
    <?php
    if (file_exists(’bestandslocatie’)) {
    // Toon foto
    } else {
    // Doe iets anders
    }
    ?>
    [/code:1:2a86375e63]

    Bijdrager
    basvandorst

    Sorry hoor, maar ten eerste weet ik niet wat dit met ‘scriptkiddy’ gedrag te maken heeft.
    Ten tweede is al eerder gezegd dat er met remote files wordt gewerkt en dus file_exists (in zijn geval) niet werkt

30 berichten aan het bekijken - 1 tot 30 (van in totaal 30)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.