als afbeelding uit map verwijderd is

Status
Niet open voor verdere reacties.

Frenske123

Terugkerende gebruiker
Lid geworden
2 jul 2007
Berichten
1.260
Hallo

Ik bewaar in mijn mysqli tabel een link naar afbeelding als bijv;

PHP:
$image =  /upload/files/flyers/dag/test.jpg
(pad kan verschillen)

Die wordt dan in pagina geprint , het kan echter zijn dat afbeelding wordt verwijderd uit map op server ,
dan wil ik geen print van afb. hebben

Hoe kan ik dit doen?

Dus als afb, bestaat
afb. aanwezig
bestaat afb niet meer
afb. niet aanwezig

Al veel geprobeerd met file_exists enz maar kom niet tot resultaat
 
File_exists() zou moeten werken. Wat heb je dan geprobeerd?
 
PHP:
$image =  /upload/files/flyers/dag/test.jpg


$image = 'https://www.test.nl/'.$image // met absolute URL geen verschil
 //echo $image;

if (!file_exists($image)) {
    echo 'ja';
} else 
    echo 'nee';

Ik krijg altijd een ja terwijl bestand test.jpg niet aanwezig is.
$image = /upload/files/flyers/dag/test.jpg


edit

Dit gaat goed

PHP:
$file = 'https://www.test.nl/'.$image;
$file_headers = @get_headers($file);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
   echo 'Nee';
}
else {
   echo 'Ja';
}
 
Laatst bewerkt:
file_exists(path) --> geef een relatief of absoluut path, niet een url.
Code:
$imageAbsPath = $_SERVER["DOCUMENT_ROOT"] . "/upload/files/flyers/dag/test.jpg";
if( file_exists($imageAbsPath) ) .....

Je kan een functie maken (werkt in Linux en Windows)
Code:
function AbsPath($serv, $sub='') {
  return str_replace('\\','/',$serv['DOCUMENT_ROOT'].$sub);
}

$imageAbsPath = AbsPath($_SERVER, '/upload/files/flyers/dag/test.jpg');
if( file_exists($imageAbsPath) ) .....
 
Laatst bewerkt:
Mijn minst favoriet onderdeel het erin zetten van de var
PHP:
$imageAbsPath = AbsPath($_SERVER, '/$image');

Ik heb de afbeelding in een popup die werkt niet meer , bekijken waardoor dat veroorzaakt wordt, foutmelding zie ik nergens
 
Tussen quotes ' of " is een string. Een variabele zet je niet binnen quotes.
Uitgaande van je code bij #3 wordt het
Code:
function AbsPath($serv, $sub='') {
  return str_replace('\\','/',$serv['DOCUMENT_ROOT'].$sub);
}

$image = "/upload/files/flyers/dag/test.jpg";

$imageAbsPath = AbsPath($_SERVER, $image);
if( file_exists($imageAbsPath) ){
  echo "afbeelding bestaat";
} else {
  echo "afbeelding bestaat niet";
}
 
Laatst bewerkt:
Beste Bron,

Bedankt voor je hulp

Krijg een melding

<b>Fatal error</b>: Cannot redeclare AbsPath() (previously declared in /home/,,,,,l/public_html/kalender.php:250) in <b>/home,,,,,,,/public_html/kalender.php</b> on line <b>250</b><br />


Opmerking:
Functie staat in een while loop ($image komt van tabel uit database)
 
Je mag het stukje function AbsPath($serv, $sub='') {...} niet telkens opnieuw uitvoeren. Bij de tweede keer krijg je die foutmelding.
Als je de functie niet wilt gebruiken kan je het zo doen
Code:
$image = "/upload/files/flyers/dag/test.jpg";

$imageAbsPath = str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT'] . $image);

if( file_exists($imageAbsPath) ){
  echo "afbeelding bestaat";
} else {
  echo "afbeelding bestaat niet";
}
Hierboven ga ik er telkens van uit dat je de url van $image opgeeft vanaf / (de root)
 
Bedankt

Ik moet onderstaande 2x in pagina zetten, dan werkt het niet wel bij 1x
naam veranderd bij 2 in $imageAbsPathXXX , werkt ook niet

$imageAbsPath = str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT'] . $image);

PHP:
if( file_exists($imageAbsPath) ){
  echo "afbeelding bestaat";
} else {
  echo '<img ...............
}


PHP:
$imageAbsPathXXX = str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT'] . $image);

if( file_exists($imageAbsPathXXX) ){
  echo "afbeelding bestaat";
} else {
echo '<img ...............
}

Opmerking , bij bestaat en bestaat niet krijg ik tegenovergestelde melding
 
Laatst bewerkt:
Gaat het om 1 afbeelding die je op 2 plekken wilt tonen of gaat het om 2 verschillende afbeeldingen?
 
Het gaat om versch. afbeeldingen
$image = variabel

Ik heb een kalender gemaakt met flyers voor de dagen

vrijdag 12 jan
naam 1e event > klik en flyer1 komt (popup)
naam 2e event > klik en flyer2 komt ...

zat 13 jan (hier bijv. maar 1 flyer
 
Laatst bewerkt:
Dan wordt het dit in je while loop.
Code:
// image url zonder http://www.example.nl (waarde uit DB tabel)
$image = "/upload/files/flyers/dag/test.jpg";
$imageAbsPath = str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT'].$image);
if (file_exists($imageAbsPath)) {
  $img = '<img src="' . $image . '" alt="" />';
  echo $img;
}
 
Ik ben ff aan het kijken of ik het goed doe, krijg nou GEEN afbeeldingen te zien
 
Zet het volgende direct boven if (file_exists(...)){ dan kan je de waardes zien.
Code:
echo '<br>'.$image.'<br>'.$imageAbsPath.'<br>';
 
Laatst bewerkt:
dan krijg ik

upload/files/flyers/test/test.jpg // is dus: in tabel database ($image)



/home/debxxxxx/domains/test.nl/public_htmlupload/files/test/test.jpg

(pad kan afwijken met van posten hierboven (voorbeeld))

========================================

Ben aan het zoeken krijg het niet goed werkend
, het lijkt erop dat if (file_exists.. waar is er geen afb. wordt geprint en andersom, dus ff wat ander voorbeeldje hieronder.

<!-- 1e event flyer -->
HIER wordt de flyer weergegeven (is aanwezig)

PHP:
 $imageAbsPath = str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT'].$image);
if (file_exists($imageAbsPath)) {	
  echo 'Niet';
 }
  else 
	echo '<img class="single center-block img-responsive"  src="/'.$image.'" alt="'. $titel.'" title="'. $titel.'">';

Is geen flyer aanwezig wordt die toch geprint (het pad uiteraard)


2x blijft probleem geven
 
Laatst bewerkt:
Ha, ik snap waarom het niet werkt. Je hebt het over /upload/files/flyers/dag/test.jpg
maar de allerlinkse "/" heb je blijkbaar niet in je DB tabel staan. In dat geval moet je een / op twee plekken in het script ertussen zetten. Het wordt dan
Code:
// image url vanaf public_html, geen leading slash (waarde uit DB tabel)
$image = "upload/files/flyers/dag/test.jpg";

$imageAbsPath = str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT'].'/'.$image);
echo '<br>'.$image.'<br>'.$imageAbsPath.'<br>';
if (file_exists($imageAbsPath)) {
  $img = '<img src="/' . $image . '" alt="" />';
  echo $img;
}
Op je scherm krijg je de waardes

upload/files/flyers/test/test.jpg
/home/debxxxxx/domains/example.nl/public_html/upload/files/test/test.jpg
 
Laatst bewerkt:
Url zal nog niet goed zijn ..?

Broncode betreffende:

HTML:
<div id="324" class="popup">
          <h1> <span class="glyphicon glyphicon-calendar"></span>
            Maandag 1 januari 2018          </h1>
          <h2>Nieuwjaarsdag</h2>
                
      
<br><br>/home/deb00000/domains/0000.nl/public_html/<br><img class="single center-block img-responsive"  src="/" alt="Nieuwjaarsdag" title="Nieuwjaarsdag">	

        </div>
.

src="/"
 
/home/deb00000/domains/0000.nl/public_html/
Je hebt de url niet (of niet goed) uit de DB gehaald, nog op te lossen.
De "/" heb je wel toegevoegd, dat is ok.

<img class="single center-block img-responsive" src="/" alt="Nieuwjaarsdag" title="Nieuwjaarsdag">
Als dit jouw html is voor de afbeelding dan wordt de $img regel:
Code:
$img = '<img class="single center-block img-responsive" src="/' . $image . '" alt="Nieuwjaarsdag" title="Nieuwjaarsdag">';
Je gebruikt Bootstrap :thumb:
 
Laatst bewerkt:
Jou code is nog steeds hetzelfde hierboven?

in de tabel upload/ ,,, klopt zonder de / aan het begin


De aanwezige afb. worden gewoon getoond , van de NIET aanwezige nog steeds de url of beter src="/"
 
Laatst bewerkt:
Je zult dit bedoelen
$img = '<img class="single center-block img-responsive" src="'.$image.'" alt="'. $titel.'" title="'. $titel.'">';

zonder / src="'.$image.'"
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan