Ik heb het volgende script gevonden om te zoeken of de bestandsnaam bestaat in een dir.
Nu moet ik eigenlijk een script hebben waarbij er gezocht wordt of een deel (string) in de bestandsnaam voor komt.
Je hebt bijv. de bestandsnaam: jan_kees_arie.jpg.
De string is : kees.
Dan dient er dus gekeken te worden of de string 'kees' voorkomt in de bestandsnamen.
En zal dan 'jan_kees_arie.jpg' een geldend bestand zijn.
Is dat te verwezenlijken?

Misschien met 'wildcards'?

<html>
<head>

  <meta charset="utf-8">
  <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
  <script>
    
    function imageExists(url, callback) {
    var img = new Image();
    img.onload = function() { callback(true); };
    img.onerror = function() { callback(false); };
    img.src = url;
  }

  
  function validateImageURL()
    {
      var imageUrl = 'j22R1Cn6oyg.jpg';
      imageExists(imageUrl, function(exists) {
        //Show the result
        alert('Fileexists=' + exists);
      });
      
    }
  </script>
</head>
<body>
<input type="button" value="Validate" onclick="validateImageURL()" />
</body>
</html>
Met AJAX zou dat eventueel wel kunnen. Je zoekt dan met PHP en leest met javascript het resultaat uit.
Ik moet het kunnen benaderen vanuit javascript functie.
De oplossing in PHP heb ik wel. Als voorbeeld de filename 'jan_kareltje_pieter'.
Ik bewerk nu een open source fotoboek. De uitdraai vanuit de diverse php scripts vormt gewoon een html opbouw
Met in de head wat javascript. En die kan ik wel aanvullen.
Het gaat in het javascript om:
Als de filename-string bestaat, dan moet er een actie uitgevoerd worden worden in een javascript.
Die functie moet ook telkens worden opgeroepen bij elke click op een foto.
Hier de PHP uitvoering:

$fileSearch = "kareltje";
$files = glob("*" . $fileSearch . "*");

if(count($files) > 0) 
{
echo "File Exists!";
}
else
{
echo "File Not Exists!";
}





Javascript is client-side. De bestanden staan op de server. Dat is dus server-side. Enkel met javascript gaat dat dus niet lukken .... tenzij je bij ieder request alle bestandsnamen zou ophalen van de server, die zou opslaan als javascript array en vervolgens zou vergelijken of het nieuwe bestand daarmee matcht. Maar dat lijkt me ietwat omslachtig :-s
Ik heb wat gekopieerd aan scripts.
Maar geen idee waarom het volgende niet werkt.
De log geeft netjes het bericht aan (bekeken in console)


<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type= "text/javascript">

function transp()
{
var hashString = "s0MWtolLXQ8.jpg";

$.ajax ({
   type: "POST",
   url:"transp.php",
   data: {'hashString':hashString},
   success: function() {
      console.log("gegevens verstuurd!");
   }
});

}
</script>
</head>
<body>
<a href="#" onclick="transp()">Zoeken</a>
</body>
</htm>


de PHP 'transp':

<?php

$theHash = $_POST['hashString'];
echo $theHase; //will print value
?>
$.ajax is jQuery. Heb je al netjes laten weten dat de code uitgevoerd meot worde als de DOM geleden is?


$(document).ready(function(){
    // jQuery kan je hier gebruiken.
});


Afgezien van de spelfout in transp.php doe je niets op het moment dat de gegevens terugkomen (de success functie handelt geen data af). Wat gebeurt er als je de success verandert in iets als dit?

success: function(result) {
      console.log(result);
   }
Ben, als ik dat wijzig, dan staat er in de log: alert()

Ik heb de spelfout hersteld. Nu staat er in de log de volledige string aangegeven:
s0MWtolLXQ8.jpg

Mooi, dan kun je van daaruit verder werken.
Dit is het geworden.
Als er fouten inzitten geef dat dan maar door aub.
In ieder geval hartstikke bedankt voor de reacties.

Voorbeeld in HTML:

function transp()
{
var hashString = "s0MWtol";

$(document).ready(function(){
$.ajax ({
   type: "POST",
   url:"transp1.php",
   data: {'hashString':hashString},
   success: function(data) {
   doSomething(data);
}
});
});
}

function doSomething(waarde)
{
alert(waarde);
}

</script>
</head>
<body>
<a href="#" onclick="transp()">Zoeken</a>

</body>
</html>


de PHP 'transpar.php':

<?php
$theHash = $_POST['hashString'];

if (isset($_POST['hashString'])) {

$fileSearch = $theHash;
$files = glob("*" . $fileSearch . "*");

if(count($files) > 0) 
{
echo $files[0];
}
else
{
echo "File Not Exists!";
}
}
?>

Reageren