Kan iemand mij vertellen waarom ik met onderstaande code geen results krijg?
Had eerst een enkele submitfield en dat werkte prima maar wilde het ombouwen naar meerdere zoekopties.
wilde met array_key_exists kijken welke submit precies was gebruikt op basis van een uniek ID, en vervolgens bijbehorende query injection doen. Er komen geen resultaten naar boven, geen errors en ook niet $output



 <?php
    require ("test2.php");
    require ("header.php");
    require ("footer.php");
    
?>
    <form method="post"> Zoek op:                                                                                                          
    <input type ="text" name="searchName" id="s_id_Name">    
    <input type ="submit" name="submit" value="Naam" id="id_name"> &nbsp &nbsp &nbsp  
    <input type ="text" name="searchPlace" id="s_id_Place">
    <input type ="submit" name="submitP" value="Plaats" id="id_place"> &nbsp &nbsp &nbsp  
    <input type ="text" name="searchPhone" id="s_id_Phone">
    <input type ="submit" name="submitT" value="Telefoonnummer" id="id_phone">&nbsp &nbsp &nbsp
    <input type ="text" name="searchEmail" id="s_id_Email">
    <input type ="submit" name="submitT" value="Email">
    </form>
    
    
        <table>
                <thead>
                    <tr>
                        <th>
                            Voornaam
                        </th>
                        <th>
                            Achternaam
                        </th>
                        <th>
                            Straat
                        </th>
                        <th>
                            Plaats
                        </th>
                        <th>
                            Email
                        </th>
                        <th>
                            Telefoon
                        </th>
                        <th>
                            Bijlage
                        </th>
                    </tr>
                </thead>
<?php
    $output = NULL;

// zodra zoek op een zoekknop wordt gesubmit, maak connectie en stop input in variabelen voor injection
if(isset($_POST['submit'])){
            $mysqli = $connection->db_connection;
            $searchName = $_POST['searchName'];
            $searchPlace = $_POST['searchPlace'];
            $searchPhone = $_POST['searchPhone'];
            
    // querys in variabelen stoppen
            $searchResultName = $mysqli->query("SELECT p.user_id, p.voornaam, p.achternaam, a.straat, a.plaats, c.email, c.telefoon FROM contactgegevens c, adresgegevens a, persoonsgegevens p WHERE p.voornaam LIKE '%".$searchName."%' && p.user_id = a.user_id AND p.user_id = c.user_id OR p.achternaam LIKE '%".$searchName."%' && p.user_id = a.user_id AND p.user_id = c.user_id");
            
            $searchResultPlace = $mysqli->query("SELECT p.user_id, p.voornaam, p.achternaam, a.straat, a.plaats, c.email, c.telefoon FROM contactgegevens c, adresgegevens a, persoonsgegevens p WHERE a.plaats LIKE '%".$searchPlace."%' && p.user_id = a.user_id AND p.user_id = c.user_id");
            
            $searchResultPhone = $mysqli->query("SELECT p.user_id, p.voornaam, p.achternaam, a.straat, a.plaats, c.email, c.telefoon FROM contactgegevens c, adresgegevens a, persoonsgegevens p WHERE c.telefoon LIKE '%".$searchPhone."%' && p.user_id = a.user_id AND p.user_id = c.user_id");
            
            $searchResultPhone = $mysqli->query("SELECT p.user_id, p.voornaam, p.achternaam, a.straat, a.plaats, c.email, c.telefoon FROM contactgegevens c, adresgegevens a, persoonsgegevens p WHERE c.telefoon LIKE '%".$searchPhone."%' && p.user_id = a.user_id AND p.user_id = c.user_id");
                
    // controleer welke submit wordt gebruikt, inject de bijbehorende query, geef resultaat weer of error
    if(array_key_exists('s_id_name',$_POST)){
        if($searchResultName->num_rows > 0){
            while($row = $searchResultName->fetch_assoc()) {
                    echo '<tr>
                    <td>'.$row['voornaam'].'</td>
                    <td>'.$row['achternaam'].'</td>
                    <td>'.$row['straat'].'</td>
                    <td>'.$row['plaats'].'</td>
                    <td>'.$row['email'].'</td>
                    <td>'.$row['telefoon'].'</td>
                    <td></td>
                    <td><a href="bewerken.php?user_id='.$row['user_id'].'">Bewerken</td>
                    <td><a href="verwijderen.php?user_id='.$row['user_id'].'">Verwijderen</td>
                    </tr>';
            }
        }else{
                    $output = "Geen resultaten gevonden";
        }
    }
    if(array_key_exists('s_id_place',$_POST)){
        if ($searchResultPlace->num_rows > 0){    
            while($row = $searchResultPlace->fetch_assoc()) {
                    echo '<tr>
                    <td>'.$row['voornaam'].'</td>
                    <td>'.$row['achternaam'].'</td>
                    <td>'.$row['straat'].'</td>
                    <td>'.$row['plaats'].'</td>
                    <td>'.$row['email'].'</td>
                    <td>'.$row['telefoon'].'</td>
                    <td></td>
                    <td><a href="bewerken.php?user_id='.$row['user_id'].'">Bewerken</td>
                    <td><a href="verwijderen.php?user_id='.$row['user_id'].'">Verwijderen</td>
                    </tr>';
            }
        }else{
                    $output = "Geen resultaten gevonden";
        }
    }
    if(array_key_exists('s_id_phone',$_POST)){
        if ($searchResultPhone->num_rows > 0){    
        while($row = $searchResultPhone->fetch_assoc()) {
                    echo '<tr>
                    <td>'.$row['voornaam'].'</td>
                    <td>'.$row['achternaam'].'</td>
                    <td>'.$row['straat'].'</td>
                    <td>'.$row['plaats'].'</td>
                    <td>'.$row['email'].'</td>
                    <td>'.$row['telefoon'].'</td>
                    <td></td>
                    <td><a href="bewerken.php?user_id='.$row['user_id'].'">Bewerken</td>
                    <td><a href="verwijderen.php?user_id='.$row['user_id'].'">Verwijderen</td>
                    </tr>';
            }
        }else{
                    $output = "Geen resultaten gevonden";
        }
    }
} else {
    exit;
    }
?>
    </table>
<?php echo $output ?> 

<?php
echo '<pre>'.print_r($_POST,true).'</pre>';
?>
Ik heb je code niet grondig bekeken, maar

id="s_id_Name"

en vervolgens controleer je op

array_key_exists('s_id_name',$_POST)

Zie het verschil in hoofdletter.
regel 49:

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

dus als een andere knop gebruikt is, dan kom je al niet verder....

Daarnaast: je voert wel 4x een query uit. Terwijl je de resultaten alleen maar van 1 wilt laten zien?

Ik zou ofwel gewoon 1 zoekterm pakken en die loslaten in 1 query op verschillende velden:

.. WHERE email like '%ivo%' or voornaam like '%ivo%' or telefoon like '%ivo%'

ofwel alles wat hetzelfde is in de query eenmalig noteren en dan dynamisch een WHERE erachter plakken.

Zelfde geldt voor je weergave van de resultaten: daar bouw je nu ook 3 of 3x dezelfde html-output: kies daar voor een resultset en geef dat weer.
dus $result = $resultNaam en dan de daarvoor eenmalig een blok html.

Als je nu de query aanpast omdat je ook de geslachten wilt ophalen, dan moet dat in 4voud. en daarna nog in 4voud voor het weergeven.


alternatief zou ook nog kunnen zijn dat je kijkt of iemand het zoekveld Email heeft ingevuld en dan daarop handelt

Dus iemand vult Email deels in en telefoon deels.
Dus wordt de query ... WHERE email like '%ivo%' OR/AND telefoon like '%0611%'

Denk dat je gewoon 1 submitknop moet maken en dat dat een hoop oplost
Het eerste punt van Ivo:

gebruik

if($_SERVER['REQUEST_METHOD'] == "POST") {


Je wilt weten of er ge-POST is, en niet of er op een knop gedrukt is.
En als je dat aangepast hebt:

zoek eens op de naam "Jeannne d'Arc"

Keywords: Esacaping en SQL-injection

Reageren