Ik ben bezig met een formulier, waarbij je op basis van gegevens uit de database naar een bepaalde pagina word gestuurd.
Staat er in de database dat je een Gebruiker bent, dan ga je naar gebruiker.php?...
ben je volgens de database een Medewerker, dan ga je naar admin.php

De volgende code heb ik geprobeerd met eerst alleen een check of je gebruiker bent, zonder succes:


<?php
session_start(); // Start a new session
if(isset($_GET['Medewerkerscode']))
{ 
  $ID = intval($_GET['Medewerkerscode']);
  // getting info from db
}
?>
<?php
if(isset($_GET['Gebruikersnaam']))
{ 
  $username = $_GET['Gebruikersnaam'];
  // getting info from db
}?><?php
                        
$con=mysqli_connect("-t");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
};
// Get the data passed from the form
$username = $_POST['Gebruikersnaam'];
$password = $_POST['Wachtwoord'];

// escape variables for security
$username = mysqli_real_escape_string($con, $_POST['Gebruikersnaam']);
$password = mysqli_real_escape_string($con, $_POST['Wachtwoord']); 
$ID = mysqli_real_escape_string($con, $_POST['Medewerkerscode']); 

$sql = "select * FROM gebruikers WHERE Gebruikersnaam = '$username' and id = '$ID' and Wachtwoord = '$password'";

$result = mysqli_query($con, $sql) or die ( mysql_error() );

$nrOfRows = mysqli_num_rows($result);
if ($nrOfRows > 0)
{
	if(mysqli_query("SELECT Functie FROM gebruikers WHERE Functie = 'Medewerker'")){
    $_SESSION['Inloggen'] = "true";
    header("Location:admin.php?id=" . $row['Medewerkerscode'] . "&&Gebruikersnaam=" . $row['Gebruikersnaam'] . "&&Wachtwoord=" . $row['Wachtwoord'] . "");
}
}
else
{
    echo "Het inloggen is mislukt.";
}
mysqli_close($con);
?></body></html>
Ik ben totaal niet wakker vandaag.
Normaal gesproken had ik zulke dingen wel gezien, maar vandaag blijkbaar niet echt.

[size=xsmall]Toevoeging op 23/06/2016 14:13:07:[/size]

Toch blijf ik het opvallend vinden dat hij bij voornaam, wel de informatie weergeeft in de tabel, maar bij achternaam hij de tabel weergeeft maar leeglaat.



[size=xsmall]Toevoeging op 23/06/2016 14:14:04:[/size]

Bart de kinkelaar op 23/06/2016 14:08:49

Toch blijf ik het opvallend vinden dat hij bij voornaam, wel de informatie weergeeft in de tabel, maar bij achternaam hij de tabel weergeeft maar leeglaat.

Echo je SQL eens. Misschien geeft dat meer duidelijkheid over je query. Die moet immers precies opgebouwd worden aan de hand van de ingevoerde gegevens.
Althans, in het geval met 2x where. Met 1x where bij voornaam en and bij achternaam geeft hij bij achternaam een error. Wat mij wel logisch lijkt aangezien je niet kunt zeggen "From gebruikers AND ... (de sql van Achternaam)"
Als je je $sql eens uitleest, dan weet je precies wat er fout gaat.
SELECT Voornaam, Voorvoegsels, Achternaam, Straat, Huisnummer, Postcode, Plaats FROM gebruikers WHERE Voornaam = 'Bart'
bij voornaam.

Bij achternaam:
SELECT Voornaam, Voorvoegsels, Achternaam, Straat, Huisnummer, Postcode, Plaats FROM gebruikers WHERE Achternaam = ''

Oha! Eens ff kijken waarom hij het invulveld niet pakt.
^ what he said.

Geef $sql eens weer op je scherm. Maak zaken voor jezelf inzichtelijk. Zo zou je ook $_POST (en $_GET als je hier inmiddels naar overgestapt bent) kunnen dumpen.

Dat is allemaal informatie die van invloed is op (sterker nog: rechtstreeks) de opbouw van je query (bepaalt).
Hmm.
Had bij Voornaam, name="txtVnaam" en id="txtVnaam" meegegeven.
En bij achternaam alleen id="txtAnaam" en name was daar "Anaam"...


En ja hoor. Nu werkt het gewoon... :)

[size=xsmall]Toevoeging op 23/06/2016 14:24:33:[/size]

Goede tip Thomas & Arien. Tot zover werkt het wat moet werken.
Toch nog een vraag, maar een totaal andere.
Ik heb nu een script waarmee je afbeeldingen uit db haalt.
Maar die afbeelding wil ik in een tabel met persoonsgegevens zetten als pasfoto/contactfoto.
Het script van afbeelding uit db halen:

<?php

if(filter_has_var(INPUT_GET, "id") !== false && filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT) !== false)
 {
 /*** assign the image id ***/
 $id = filter_input(INPUT_GET, "id", FILTER_SANITIZE_NUMBER_INT);
 try {
 /*** connect to the database ***/
 $dbh = new PDO("mysql:host=localhost;dbname=phpopdracht", 'root', '');

 /*** set the PDO error mode to exception ***/
 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

 /*** The sql statement ***/
 $sql = "SELECT image, image_type FROM afbeeldingen WHERE id=$id";

 /*** prepare the sql ***/
 $stmt = $dbh->prepare($sql);

 /*** exceute the query ***/
 $stmt->execute(); 

 /*** set the fetch mode to associative array ***/
 $stmt->setFetchMode(PDO::FETCH_ASSOC);

 /*** set the header for the image ***/
 $array = $stmt->fetch();

 /*** check we have a single image and type ***/
 if(sizeof($array) == 2)
 {
 /*** set the headers and display the image ***/
 header("Content-type: ".$array['image_type']);

 /*** output the image ***/
 echo $array['image'];
 }
 else
 {
 throw new Exception("Out of bounds Error");
 }
 }
 catch(PDOException $e)
 {
 echo $e->getMessage();
 }
 catch(Exception $e)
 {
 echo $e->getMessage();
 }
 }
 else
 {
 echo 'Please input correct Image ID';
 }
?>


De code van het formulier

    <center><?php
if(isset($_GET['id']))
{ 
  $id = intval($_GET['id']);
  // getting info from db
}
 error_reporting(E_ALL);
?>     <title>Profiel - Adresboek</title>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
</head>
<style>
td {height:30px;}
</style>
 <h2>Profiel</h2>
<?php include 'config.php'?><?php
$display = include 'display_image.php';
// create query 
$query = "SELECT * from gebruikers where id = $id";

// execute query 
$result = mysqli_query($con,$query) or die ("Error in query: $query. ".mysqli_error());
   
// see if any rows were returned 
if (mysqli_num_rows($result) > 0) { 
    // yes 
    // print them one after another          
    echo "<table border=1 height=100px width=500px>";  

    while($row = mysqli_fetch_array($result))      {
echo "<td><b><center>". $display. "</center></b></td>";
echo "</tr><tr>";
echo "<td><b><center>" . $row['Voornaam'] . "</center></b></td>"; 
echo "<td><b><center>" . $row['Leeftijd'] . " Jaar</center></b></td>"; 
echo "</tr><tr>";
echo "<td><b><center>" . $row['Achternaam'] . "</center></b></td><br>";
echo "<td rowspan=4><b><center>" . $row['Opmerking'] . "</center></b></td>";
echo "</tr><tr>";
echo "<td><b><center>" . $row['Straat'] . " " . $row['Huisnummer'] . "</center></b></td>"; 
echo "</tr><tr>";
echo "<td><b><center>" . $row['Postcode'] . "</center></b></td>"; 
echo "</tr><tr>";
echo "<td><b><center>" . $row['Plaats'] . "</center></b></td>"; 
echo "</tr><tr>";
echo "</tr>";
}
echo "</table>";
} 
else { 
    // no 
    // print status message 
    echo "No rows found!"; 
} 

// free result set memory 
mysqli_free_result($result); 
?>
<p></p> 
<div class="container">
  <div class="btn-group-vertical">
    <a class="btn btn-primary" href="" role="button">Terug naar de homepagina</a> 
  </div>
</div><?php
mysqli_close($con);
?>
$display = include 'display_image.php';
Daar gaat het mis, aan het script te zien poept display_image.php gewoon een plaatje uit, waardoor je dit gewoon in eem img tag moet gebruiken, bijvoorbeeld als volgt:
<img src="display_image.php?id=1">

<td><b><center><img src='display_image.php?id=$id'></center></b></td>


Dan nog komen er allemaal vage tekens, ipv de afbeelding.


[size=xsmall]Toevoeging op 24/06/2016 19:08:20:[/size]

De afbeelding staat er uiteindelijk wel, maar onder tientallen rijen met vage tekens..

Reageren