*Bijgewerkt*

Volgens mij heb ik het terug kunnen brengen tot de variabelen.
Zo'n 10 jaar terug gebruikte ik b.v. '%$ZAchternaam%'
Het formulier bevat 5 categorieën waar je op kan zoeken.
Nummer
achternaam
voornamen
geboortedatum
overlijdensdatum

In de zoekfunctie hoef je niet op alles te zoeken, maar op delen.

Als je alleen geboortedatum 1927 in vult, zou hij alle documenten moeten vinden van personen die in 1927 zijn geboren. Daarom gebruikte ik % als wildcards. Net als vroeger een * in MSDOS (voor de oudjes)

De onderstaande code werkt wel voor achternaam, mits ik die volledig invul.


<?php

session_start();

//Om foutmeldingen in beeld te krijgen  - alleen tijdens debuggen!:
ini_set('display_errors',true);
error_reporting(E_ALL);

include('config.php');

//         uitlezen gegevens uit formulier
if(isset($_POST["SUBMIT"])) {
 echo "formulier verzonden <br>";
$Zidnr = $_POST['Zidnr'];
$ZAchternaam = $_POST['ZAchternaam'];
$ZVoornamen = $_POST['ZVoornamen'];
$Zgeboortedatum =$_POST['Zgeboortedatum'];
$Zoverlijdensdatum =$_POST['Zoverlijdensdatum'];


//    hier wilde ik zoeken op een deel van de invoer
//$Zidnr ='%$Zidnr%';
//$ZAchternaam ='%'.$ZAchternaam.'%';     werkt ook niet
//$ZVoornamen ='%$ZVoornamen%';
//$Zgeboortedatum ='%$Zgeboortedatum%';
//$Zoverlijdensdatum ='%$Zoverlijdensdatum%';

echo "Zoek id: ".$Zidnr." achternaam: ".$ZAchternaam." avoornamen: ".$ZVoornamen." geboren: ".$Zgeboortedatum." overleden: ".$Zoverlijdensdatum." <br> "    ;
echo "<table>";

//           Verbind met database
 try
        {
// -->  $pdoResult = $pdoConnect->prepare("SELECT * FROM db_bidprentjes WHERE id=:id AND achternaam=:achternaam AND voornaam=:voornaam AND geboortedatum=:geboortedatum AND overlijdensdatum=:overlijdensdatum");
// voor testen beperkt tot alleen achternaam

        $pdoResult = $pdoConnect->prepare("SELECT * FROM db_bidprentjes WHERE  achternaam=:achternaam ");
        $pdoResult->bindValue(':id', $Zidnr);
        $pdoResult->bindValue(':achternaam', $ZAchternaam);
        $pdoResult->bindValue(':voornaam', $ZVoornamen);
        $pdoResult->bindValue(':geboortedatum', $Zgeboortedatum);
        $pdoResult->bindValue(':overlijdensdatum', $Zoverlijdensdatum);
// -->  $pdoResult->execute(array(':id' => $Zidnr, ':achternaam' => $ZAchternaam, ':voornaam' => $ZVoornamen, ':geboortedatum' => $Zgeboortedatum, ':overlijdensdatum' => $Zoverlijdensdatum ));
        $pdoResult->execute(array(':achternaam' => $ZAchternaam ));

        while($row = $pdoResult->fetch(PDO::FETCH_ASSOC)) {
        $Tid=$row['id'];
        $Tgedcomnummer=$row['gedcomnummer'];
        $Tachternaam=$row['achternaam'];
        $Tvoornamen=$row['voornaam'];
        $Tvoorzetsel=$row['voorzetsel'];
        $Tgeboortedatum=$row['geboortedatum'];
        $Tgeboorteplaats=$row['geboorteplaats'];
        $Toverlijdensdatum=$row['overlijdensdatum'];
        $Toverlijdensplaats=$row['overlijdensplaats'];
        $TP1_naam = $row['P1_naam'];
        $TP2_naam = $row['P2_naam'];
        $TP3_naam = $row['P3_naam'];


$TPsamen = $TP1_naam.", ".$TP2_naam.", ".$TP3_naam;
if ($TP3_naam == "0")   { $TPsamen = $TP1_naam." ".$TP2_naam;  }
if ($TP3_naam == "")   { $TPsamen = $TP1_naam." ".$TP2_naam;  }
if ($TP2_naam == "0")   { $TPsamen = $TP1_naam;  }
if ($TP2_naam == "")   { $TPsamen = $TP1_naam;  }


echo "<tr>";
echo "    <td width=\"4%\" ><a href=\"Bidpr_view.php?zid=".$Tid."\">&nbsp;".$Tid."</a></td> ";
echo "    <td width=\"24%\" >&nbsp;".$Tachternaam.", ".$Tvoornamen." ".$Tvoorzetsel."</td> ";
echo "    <td width=\"24%\" >&nbsp;".$Tgeboortedatum.", ".$Tgeboorteplaats."</td>";
echo "    <td width=\"24%\" >&nbsp;".$Toverlijdensdatum.", ".$Toverlijdensplaats."</td>";
echo "    <td width=\"24%\" >&nbsp;".$TPsamen."</td>";
echo "</tr>";

    } // while
    }     // einde try

        catch(PDOException $e){
        echo $e->getMessage();
            }    // einde catch

}    // einde isset
echo "</table>";
echo "<br>";
echo "<hr>";
//sluit de verbinding


?>

<table width="50" border="0">
<form method="post"  enctype="multipart/form-data">

<table>
  <tr><td>ID nummer</td>
    <td><input type="text" name="Zidnr" value=""></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr><td>Achternaam</td>
    <td><input type="text" name="ZAchternaam" value=""></td>
    <td>&nbsp;</td>
    <td>&nbsp;Volledig of deel van naam</td>
  </tr>
  <tr><td>Voornamen</td>
    <td><input type="text" name="ZVoornamen" value=""></td>
    <td>&nbsp;</td>
    <td>&nbsp;Volledig of deel van naam</td>
  </tr>
  <tr><td>Geboortedatum</td>
    <td><input type="text" name="Zgeboortedatum" value=""></td>
    <td>&nbsp;</td>
    <td>&nbsp;formaat dd-mm-jjjj</td>
  </tr>
  <tr><td>Overlijdensdatum</td>
    <td><input type="text" name="Zoverlijdensdatum" value=""></td>
    <td>&nbsp;</td>
    <td>&nbsp;formaat dd-mm-jjjj</td>
  </tr>
  <tr><td></td>
    <td><input type=SUBMIT name="SUBMIT"  value="Verzenden !"></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
</form>

@Rob: Het maakt het wel meteen overzichtelijker in je editor vind ik. En volgens mij werken $variabelen niet eens in single-quotes, en worden ze gewoon niet geparsed. Gewoon gewenning.....

Ikzelf gebruik overigens NetBeans IDE. Werkt prima!
Ik gebruik Notepad++, en die gaat ook "goed om" met variabelen in een (double quoted) string (het is duidelijk dat het variabelen zijn, iets "feller").

En inderdaad: variabelen direct in je SQL plakken is inderdaad een dikke no-no (maar je kunt niet alles in 1x "recht trekken" ...).

Reageren