Onlogische foutmeldingen
Aan mijn testapplicatie heb ik een zoekfunctie toegevoegd.
Wanneer ik een item zoek, dan wordt het weergegeven precies zoals het bedoeld is in een tabel.
Echter, wanneer ik niets invul en klik op zoeken, dan wordt het laatste item weergegeven!
En wanneer ik zoek op een item wat niet bestaat, dan krijg ik wel de melding "geen zoekresultaten gevonden" en helaas ook veel undefined veriables.
Ik heb zelf het idee dat het te maken met het organiseren van de PHP code, maar ik kom er niet uit.
Kortom, ik heb dus twee problemen en zou graag jullie feedback willen hebben.
Alvast bedankt!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php include "includes/db-config.php"; ?>
<?php include "includes/header.php"; ?>
<?php
if(isset($_POST['submit'])){
$search = $_POST['search'];
$query = "SELECT * FROM medicines ";
$query .= "WHERE med_name LIKE '%$search%'";
$search_query = mysqli_query($connection,$query);
if(!$search_query){
die(mysqli_error($connection));
}
$count = mysqli_num_rows($search_query);
if($count == 0){
echo "No result found";
} else {
while ($row2 = mysqli_fetch_assoc($search_query)){
$medicine_id = $row2['med_id'];
$medicine_name = $row2['med_name'];
$medicine_create_date = $row2['med_create_date'];
$medicine_expire_date = $row2['med_expire_date'];
$medicine_factory = $row2['med_factory_id'];
$medicine_register_date = $row2['med_register_date'];
}
}
?>
<div id="content">
<h1>Search Results</h1>
<?php
echo "<table width='70%' border='solid 1px;'>";
echo "<tr><th>Name</th><th>Production_Date</th><th>Expire_Date</th><th>Created by factory</th><th>Added to database</th><th>Edit</th><th>Delete</th></tr>";
echo "<tr>";
echo "<td>{$medicine_name}</td>" .
"<td>{$medicine_create_date}</td>" .
"<td>{$medicine_expire_date}</td>" .
"<td>{$medicine_factory}</td>" .
"<td>{$medicine_register_date}</td>" .
"<td><a href='edit.php?id={$medicine_id}'>Edit</a></td>" .
"<td><a href='delete.php?id={$medicine_id}'>Delete</a></td>";
echo "</tr>";
echo "</table>"; ?>
<?php } ?>
</div>
<?php include "includes/footer.php"; ?>
<?php include "includes/header.php"; ?>
<?php
if(isset($_POST['submit'])){
$search = $_POST['search'];
$query = "SELECT * FROM medicines ";
$query .= "WHERE med_name LIKE '%$search%'";
$search_query = mysqli_query($connection,$query);
if(!$search_query){
die(mysqli_error($connection));
}
$count = mysqli_num_rows($search_query);
if($count == 0){
echo "No result found";
} else {
while ($row2 = mysqli_fetch_assoc($search_query)){
$medicine_id = $row2['med_id'];
$medicine_name = $row2['med_name'];
$medicine_create_date = $row2['med_create_date'];
$medicine_expire_date = $row2['med_expire_date'];
$medicine_factory = $row2['med_factory_id'];
$medicine_register_date = $row2['med_register_date'];
}
}
?>
<div id="content">
<h1>Search Results</h1>
<?php
echo "<table width='70%' border='solid 1px;'>";
echo "<tr><th>Name</th><th>Production_Date</th><th>Expire_Date</th><th>Created by factory</th><th>Added to database</th><th>Edit</th><th>Delete</th></tr>";
echo "<tr>";
echo "<td>{$medicine_name}</td>" .
"<td>{$medicine_create_date}</td>" .
"<td>{$medicine_expire_date}</td>" .
"<td>{$medicine_factory}</td>" .
"<td>{$medicine_register_date}</td>" .
"<td><a href='edit.php?id={$medicine_id}'>Edit</a></td>" .
"<td><a href='delete.php?id={$medicine_id}'>Delete</a></td>";
echo "</tr>";
echo "</table>"; ?>
<?php } ?>
</div>
<?php include "includes/footer.php"; ?>
Op je tweede vraag: op welke regels krijg je deze meldingen? Vermoedelijk vraag je om kolommen die niet bestaan?
De foutmeldingen zijn niet onlogisch, het resultaat ook niet. Je code wel als dit niet is wat je probeert te bereiken.
Gewijzigd op 18/08/2016 12:39:19 door Ben van Velzen
Wanneer ik niets invul en ik klik op zoeken, dan worden er niet alle records weergegeven, enkel het eerste item in de lijst. Ik ga nog even kijken hoe meerdere resultaten kunnen weergegeven worden. Deze punt is voor mij dus.
Wat bedoel je met dat ik constant de variabelen overschrijf? In andere topic heb ik aangegeven dat ik variabelen gebruik omdat ik het overzichtelijk vind. Als er een andere betere manier is, dan hoor ik dat graag.
Ik krijg onderstaande volgende foutmeldingen
en ik denk dat ik deze undefined foutmelding kan weghalen door de PHP code anders te laten beeindigen... en juist hier kom ik niet uit....
Notice: Undefined variable: medicine_name in D:\xampp\htdocs\inventory_test\search_results.php on line 35
Notice: Undefined variable: medicine_create_date in D:\xampp\htdocs\inventory_test\search_results.php on line 36
Notice: Undefined variable: medicine_expire_date in D:\xampp\htdocs\inventory_test\search_results.php on line 37
Notice: Undefined variable: medicine_factory in D:\xampp\htdocs\inventory_test\search_results.php on line 38
Notice: Undefined variable: medicine_register_date in D:\xampp\htdocs\inventory_test\search_results.php on line 39
Notice: Undefined variable: medicine_id in D:\xampp\htdocs\inventory_test\search_results.php on line 40
Notice: Undefined variable: medicine_id in D:\xampp\htdocs\inventory_test\search_results.php on line 41
Quote:
Ik krijg onderstaande volgende foutmeldingen
en ik denk dat ik deze undefined foutmelding kan weghalen door de PHP code anders te laten beeindigen... en juist hier kom ik niet uit....
en ik denk dat ik deze undefined foutmelding kan weghalen door de PHP code anders te laten beeindigen... en juist hier kom ik niet uit....
Dit komt omdat je één resultaat afdrukt, of er nu resultaten zijn of niet.
Kijk maar eens naar de codeblokken van je code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if (isset($_POST['submit'])) {
// hier voer je je query uit
if (!$search_query) {
// foutmelding
}
if ($count == 0) {
// geen resultaten
} else {
while ($row2 = mysqli_fetch_assoc($search_query)) {
// while loop die continu resultaten overschrijft in variabelen
}
}
// hier druk je één resultaat af, ook al zijn er meerdere, of geen...
}
?>
if (isset($_POST['submit'])) {
// hier voer je je query uit
if (!$search_query) {
// foutmelding
}
if ($count == 0) {
// geen resultaten
} else {
while ($row2 = mysqli_fetch_assoc($search_query)) {
// while loop die continu resultaten overschrijft in variabelen
}
}
// hier druk je één resultaat af, ook al zijn er meerdere, of geen...
}
?>
De structuur van deze code kan anders en beter. Daarnaast komt het de leesbaarheid ten goede wanneer je correct inspringt.
Gewijzigd op 18/08/2016 13:31:35 door Thomas van den Heuvel
Zo jah dan moet ik beslissen of ik een resultaat of meerdere wil weergeven?
Ik heb alleen geen idee hoe ik dat moet doen. En, voor de while loop controleer ik of de query resultaten heeft of niet...ben een beetje in de waar dus....snap je mij?
Je wilt namelijk in eerste instantie niet weten of er op die knop gedrukt is. Je wilt weten of iemand iets heeft opgegeven waarop gezocht moet worden.
Deze if kijkt of het veld search gepost is EN of de waarde daarin niet leeg is.
Alleen dan lijkt me dat je wilt zoeken.
Verder kan het geen kwaad om een beetje logisch in te springen in je code. Dat maakt het overzichtelijker en leesbaarder.
(en naar mijn mening kan regel 6+7 ook leesbaarder worden door niet 2x iets aan de var toe te voegen, maar door gewoon binnen de query op enter te drukken:
(en dan ook nog even naar een escape functie kijken voor het geval iemand nog leuke opties weet met ' in de zoekterm)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// is er een formulier gesubmit?
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// voer query uit
$result = mysqli_query($connection, '... je query ...');
// zijn er resultaten?
if (mysqli_num_rows($result) == 0) {
?><p>Geen resultaten gevonden.</p><?php
} else {
// doorloop resultaten...
while ($row = mysqli_fetch_assoc($result)) {
// ... en druk deze hier direct af met behulp van $row
}
}
// geef resultaten vrij
mysqli_free_result($result);
}
?>
// is er een formulier gesubmit?
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// voer query uit
$result = mysqli_query($connection, '... je query ...');
// zijn er resultaten?
if (mysqli_num_rows($result) == 0) {
?><p>Geen resultaten gevonden.</p><?php
} else {
// doorloop resultaten...
while ($row = mysqli_fetch_assoc($result)) {
// ... en druk deze hier direct af met behulp van $row
}
}
// geef resultaten vrij
mysqli_free_result($result);
}
?>
Als dit trouwens zoekfunctionaliteit betreft dan is het misschien handiger om te werken met GET in plaats van met POST.
Vermijd ook de introductie van overbodige variabelen.
als er dus geen andere manier is, dan zal ik while loop en de resultaten weer samenvoegen...
(en dan loop je in je div weer door je array heen.)
Kan wel, maar dan moet je 2x loopen
Nu heb ik de while loop code en resultaten samengevoegd.
En wanneer ik nu een paar letter invul, dan worden er meerdere resultaten weergegeven, dus zoals het hoort.
Het enige probleem waar ik nu tegen loop is dat alle records worden weergegeven wanneer ik niets invul en klik op search...
Iemand een idee hoe ik dit moet aanpakken?
BTW; voordat ik commentaar krijg over het aanpakken van security :) wil ik zeggen dat jullie allemaal gelijk hebben, en dit pak ik nadat ik de kern van de applicatie werkt :) bedankt voor jullie geduld!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php include "includes/db-config.php"; ?>
<?php include "includes/header.php"; ?>
<?php
if(isset($_POST['submit']) & !empty($_POST['submit'])){
$search = $_POST['search'];
$query = "SELECT * FROM medicines ";
$query .= "WHERE med_name LIKE '%$search%'";
$search_query = mysqli_query($connection,$query);
if(!$search_query){
die(mysqli_error($connection));
}
$count = mysqli_num_rows($search_query);
if($count == 0){
echo "No result found";
} else {
echo "<table width='70%' border='solid 1px;'>";
echo "<tr><th>Name</th><th>Production_Date</th><th>Expire_Date</th><th>Created by factory</th><th>Added to database</th><th>Edit</th><th>Delete</th></tr>";
while ($row2 = mysqli_fetch_assoc($search_query)){
$medicine_id = $row2['med_id'];
$medicine_name = $row2['med_name'];
$medicine_create_date = $row2['med_create_date'];
$medicine_expire_date = $row2['med_expire_date'];
$medicine_factory = $row2['med_factory_id'];
$medicine_register_date = $row2['med_register_date'];
echo "<tr>";
echo "<td>{$medicine_name}</td>" .
"<td>{$medicine_create_date}</td>" .
"<td>{$medicine_expire_date}</td>" .
"<td>{$medicine_factory}</td>" .
"<td>{$medicine_register_date}</td>" .
"<td><a href='edit.php?id={$medicine_id}'>Edit</a></td>" .
"<td><a href='delete.php?id={$medicine_id}'>Delete</a></td>";
echo "</tr>";
}
echo "</table>";
}
?>
<div id="content">
<h1>Search Results</h1>
<?php } ?>
</div>
<?php include "includes/footer.php"; ?>
<?php include "includes/header.php"; ?>
<?php
if(isset($_POST['submit']) & !empty($_POST['submit'])){
$search = $_POST['search'];
$query = "SELECT * FROM medicines ";
$query .= "WHERE med_name LIKE '%$search%'";
$search_query = mysqli_query($connection,$query);
if(!$search_query){
die(mysqli_error($connection));
}
$count = mysqli_num_rows($search_query);
if($count == 0){
echo "No result found";
} else {
echo "<table width='70%' border='solid 1px;'>";
echo "<tr><th>Name</th><th>Production_Date</th><th>Expire_Date</th><th>Created by factory</th><th>Added to database</th><th>Edit</th><th>Delete</th></tr>";
while ($row2 = mysqli_fetch_assoc($search_query)){
$medicine_id = $row2['med_id'];
$medicine_name = $row2['med_name'];
$medicine_create_date = $row2['med_create_date'];
$medicine_expire_date = $row2['med_expire_date'];
$medicine_factory = $row2['med_factory_id'];
$medicine_register_date = $row2['med_register_date'];
echo "<tr>";
echo "<td>{$medicine_name}</td>" .
"<td>{$medicine_create_date}</td>" .
"<td>{$medicine_expire_date}</td>" .
"<td>{$medicine_factory}</td>" .
"<td>{$medicine_register_date}</td>" .
"<td><a href='edit.php?id={$medicine_id}'>Edit</a></td>" .
"<td><a href='delete.php?id={$medicine_id}'>Delete</a></td>";
echo "</tr>";
}
echo "</table>";
}
?>
<div id="content">
<h1>Search Results</h1>
<?php } ?>
</div>
<?php include "includes/footer.php"; ?>
jij controleert nu of er op de button is gedrukt en of de button niet een lege value had. (waarschijnlijk de caption van de button???)
controleer dan of het zoekvlak niet leeg was.
Gewijzigd op 18/08/2016 15:11:30 door Ivo P
Bijkomend probleem is dat de div footer helemaal uitgestrekt wordt van links naar rechts wanneer er gedrukt is op search butten en niets is ingevuld...
Volgens mij is dit geen PHP probleem, maar weet niet zeker
nieuwe code op regel 5
nieuwe code in regel 41
Is de button trouwens aanwezig in de post-request als je na het invullen van het zoek-veld op enter drukt?
Vandaar dat veelal de vraag gesteld wordt: is het een post-request (zie post van Thomas: $_SERVER['REQUEST_METHOD'] == 'POST' )
of in mijn suggestie: om te kijken of het zoekveld in een post-request aanwezig is, en niet leeg (wat impliceert dat het een post-request is)
Toevoeging op 18/08/2016 15:36:17:
wat betreft de layout:
in de code die je toont, mis je in dat geval slechts de <table>
die zou je ook moeten missen als je zoekt op iets dat niet gevonden wordt.
Wat als je zoekt op lasjdlfkjalkjfasjiwjeriwe ?
Dit gebeurt enkel wanneer ik helemaal geen letter/string invul.
Betekent dit dat ik de regel 4 moet veranderen naar het volgende:
Btw; wanneer de string "No result found" van regel 14 wordt weergegeven, gebeurt dit aan de rechterkant van het pagina ipv aan de linkerkant of in het midden. Beetje vreemd vind ik dit...
huidige regel 4
nieuwe regel 4
In welke regel zie je de tag <table> ontbreekt?
volledige code van search_results.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php include "includes/db-config.php"; ?>
<?php include "includes/header.php"; ?>
<?php
if(isset($_POST['submit']) & !empty($_POST['submit']) & !empty($_POST['search'])){
$search = $_POST['search'];
$query = "SELECT * FROM medicines ";
$query .= "WHERE med_name LIKE '%$search%'";
$search_query = mysqli_query($connection,$query);
if(!$search_query){
die(mysqli_error($connection));
}
$count = mysqli_num_rows($search_query);
if($count == 0){
echo "No result found";
} else {
echo "<table width='70%' border='solid 1px;'>";
echo "<tr><th>Name</th><th>Production_Date</th><th>Expire_Date</th><th>Created by factory</th><th>Added to database</th><th>Edit</th><th>Delete</th></tr>";
while ($row2 = mysqli_fetch_assoc($search_query)){
$medicine_id = $row2['med_id'];
$medicine_name = $row2['med_name'];
$medicine_create_date = $row2['med_create_date'];
$medicine_expire_date = $row2['med_expire_date'];
$medicine_factory = $row2['med_factory_id'];
$medicine_register_date = $row2['med_register_date'];
echo "<tr>";
echo "<td>{$medicine_name}</td>" .
"<td>{$medicine_create_date}</td>" .
"<td>{$medicine_expire_date}</td>" .
"<td>{$medicine_factory}</td>" .
"<td>{$medicine_register_date}</td>" .
"<td><a href='edit.php?id={$medicine_id}'>Edit</a></td>" .
"<td><a href='delete.php?id={$medicine_id}'>Delete</a></td>";
echo "</tr>";
}
echo "</table>";
}
?>
<div id="content">
<h1>Search Results</h1>
<?php } else{
echo "je hebt niets ingevuld";
}
?>
</div>
<?php include "includes/footer.php"; ?>
<?php include "includes/header.php"; ?>
<?php
if(isset($_POST['submit']) & !empty($_POST['submit']) & !empty($_POST['search'])){
$search = $_POST['search'];
$query = "SELECT * FROM medicines ";
$query .= "WHERE med_name LIKE '%$search%'";
$search_query = mysqli_query($connection,$query);
if(!$search_query){
die(mysqli_error($connection));
}
$count = mysqli_num_rows($search_query);
if($count == 0){
echo "No result found";
} else {
echo "<table width='70%' border='solid 1px;'>";
echo "<tr><th>Name</th><th>Production_Date</th><th>Expire_Date</th><th>Created by factory</th><th>Added to database</th><th>Edit</th><th>Delete</th></tr>";
while ($row2 = mysqli_fetch_assoc($search_query)){
$medicine_id = $row2['med_id'];
$medicine_name = $row2['med_name'];
$medicine_create_date = $row2['med_create_date'];
$medicine_expire_date = $row2['med_expire_date'];
$medicine_factory = $row2['med_factory_id'];
$medicine_register_date = $row2['med_register_date'];
echo "<tr>";
echo "<td>{$medicine_name}</td>" .
"<td>{$medicine_create_date}</td>" .
"<td>{$medicine_expire_date}</td>" .
"<td>{$medicine_factory}</td>" .
"<td>{$medicine_register_date}</td>" .
"<td><a href='edit.php?id={$medicine_id}'>Edit</a></td>" .
"<td><a href='delete.php?id={$medicine_id}'>Delete</a></td>";
echo "</tr>";
}
echo "</table>";
}
?>
<div id="content">
<h1>Search Results</h1>
<?php } else{
echo "je hebt niets ingevuld";
}
?>
</div>
<?php include "includes/footer.php"; ?>
Maar regel 39 staat in een if-structuur
Variabelen kopiëren is onzin als je er verder niks mee doet (regel 5, 12 en 20-25).
Spring wat beter in zodat het overzichtelijk blijft (regel 18 en 19 horen in de loop, dus 2 tabs ervoor is duidelijker)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
include "includes/db-config.php";
include "includes/header.php";
echo '<div id="content">'
.'<h1>Search Results</h1>';
if($_SERVER['REQUEST_METHOD'] == "POST") {
if(isset($_POST['search']) && strlen(trim($_POST['search'])) > 0){
$query = "SELECT
med_id,
med_name,
med_create_date,
med_expire_date,
med_factory_id,
med_register_date
FROM
medicines
WHERE
med_name LIKE '%" . mysqli_real_escape_string($connection, $_POST['search']) . "%'";
$search_query = mysqli_query($connection,$query);
if(!$search_query){ // Niet nodig en nooit DIE gebruiken buiten de ontwikkel versie.
die(mysqli_error($connection));
}
if(mysqli_num_rows($search_query) > 0){
echo "<table width='70%' border='solid 1px;'>"
. "<tr>"
. "<th>Name</th>"
. "<th>Production_Date</th>"
. "<th>Expire_Date</th>"
. "<th>Created by factory</th>"
. "<th>Added to database</th>"
. "<th>Edit</th>"
. "<th>Delete</th>"
. "</tr>";
while ($row2 = mysqli_fetch_assoc($search_query)){
echo "<tr>" .
"<td>{$row2['med_name']}</td>" .
"<td>{$row2['med_create_date']}</td>" .
"<td>{$row2['med_expire_date']}</td>" .
"<td>{$row2['med_factory_id']}</td>" .
"<td>{$row2['med_register_date']}</td>" .
"<td><a href='edit.php?id={$row2['med_id']}'>Edit</a></td>" .
"<td><a href='delete.php?id={$row2['med_id']}'>Delete</a></td>" .
"</tr>";
}
echo "</table>";
} else {
echo 'Geen resultaten';
}
} else {
echo 'Niks ingevuld';
}
}
echo '</div>';
include "includes/footer.php";
?>
include "includes/db-config.php";
include "includes/header.php";
echo '<div id="content">'
.'<h1>Search Results</h1>';
if($_SERVER['REQUEST_METHOD'] == "POST") {
if(isset($_POST['search']) && strlen(trim($_POST['search'])) > 0){
$query = "SELECT
med_id,
med_name,
med_create_date,
med_expire_date,
med_factory_id,
med_register_date
FROM
medicines
WHERE
med_name LIKE '%" . mysqli_real_escape_string($connection, $_POST['search']) . "%'";
$search_query = mysqli_query($connection,$query);
if(!$search_query){ // Niet nodig en nooit DIE gebruiken buiten de ontwikkel versie.
die(mysqli_error($connection));
}
if(mysqli_num_rows($search_query) > 0){
echo "<table width='70%' border='solid 1px;'>"
. "<tr>"
. "<th>Name</th>"
. "<th>Production_Date</th>"
. "<th>Expire_Date</th>"
. "<th>Created by factory</th>"
. "<th>Added to database</th>"
. "<th>Edit</th>"
. "<th>Delete</th>"
. "</tr>";
while ($row2 = mysqli_fetch_assoc($search_query)){
echo "<tr>" .
"<td>{$row2['med_name']}</td>" .
"<td>{$row2['med_create_date']}</td>" .
"<td>{$row2['med_expire_date']}</td>" .
"<td>{$row2['med_factory_id']}</td>" .
"<td>{$row2['med_register_date']}</td>" .
"<td><a href='edit.php?id={$row2['med_id']}'>Edit</a></td>" .
"<td><a href='delete.php?id={$row2['med_id']}'>Delete</a></td>" .
"</tr>";
}
echo "</table>";
} else {
echo 'Geen resultaten';
}
} else {
echo 'Niks ingevuld';
}
}
echo '</div>';
include "includes/footer.php";
?>
Gewijzigd op 18/08/2016 17:47:42 door Michael -
Ivo P op 18/08/2016 16:18:53:
De </div> van regel 47. Waar staat de <div> daarvan? op regel 39?
Maar regel 39 staat in een if-structuur
Maar regel 39 staat in een if-structuur
Die div is van de wrapper.
Elk pagina heb ik als volgt gestructureerd:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<div id="wrapper">
<div id="header"></div>
<div id="content"></div>
<div id="sidebar"></div>
<div id="footer"></div>
</div>
<div id="header"></div>
<div id="content"></div>
<div id="sidebar"></div>
<div id="footer"></div>
</div>
Toevoeging op 20/08/2016 14:05:44:
Michael - op 18/08/2016 17:45:56:
Je maakt er een rommeltje van en de tips die worden gegeven zie ik niet terug in je laatste code.
Variabelen kopiëren is onzin als je er verder niks mee doet (regel 5, 12 en 20-25).
Spring wat beter in zodat het overzichtelijk blijft (regel 18 en 19 horen in de loop, dus 2 tabs ervoor is duidelijker)
Variabelen kopiëren is onzin als je er verder niks mee doet (regel 5, 12 en 20-25).
Spring wat beter in zodat het overzichtelijk blijft (regel 18 en 19 horen in de loop, dus 2 tabs ervoor is duidelijker)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
include "includes/db-config.php";
include "includes/header.php";
echo '<div id="content">'
.'<h1>Search Results</h1>';
if($_SERVER['REQUEST_METHOD'] == "POST") {
if(isset($_POST['search']) && strlen(trim($_POST['search'])) > 0){
$query = "SELECT
med_id,
med_name,
med_create_date,
med_expire_date,
med_factory_id,
med_register_date
FROM
medicines
WHERE
med_name LIKE '%" . mysqli_real_escape_string($connection, $_POST['search']) . "%'";
$search_query = mysqli_query($connection,$query);
if(!$search_query){ // Niet nodig en nooit DIE gebruiken buiten de ontwikkel versie.
die(mysqli_error($connection));
}
if(mysqli_num_rows($search_query) > 0){
echo "<table width='70%' border='solid 1px;'>"
. "<tr>"
. "<th>Name</th>"
. "<th>Production_Date</th>"
. "<th>Expire_Date</th>"
. "<th>Created by factory</th>"
. "<th>Added to database</th>"
. "<th>Edit</th>"
. "<th>Delete</th>"
. "</tr>";
while ($row2 = mysqli_fetch_assoc($search_query)){
echo "<tr>" .
"<td>{$row2['med_name']}</td>" .
"<td>{$row2['med_create_date']}</td>" .
"<td>{$row2['med_expire_date']}</td>" .
"<td>{$row2['med_factory_id']}</td>" .
"<td>{$row2['med_register_date']}</td>" .
"<td><a href='edit.php?id={$row2['med_id']}'>Edit</a></td>" .
"<td><a href='delete.php?id={$row2['med_id']}'>Delete</a></td>" .
"</tr>";
}
echo "</table>";
} else {
echo 'Geen resultaten';
}
} else {
echo 'Niks ingevuld';
}
}
echo '</div>';
include "includes/footer.php";
?>
include "includes/db-config.php";
include "includes/header.php";
echo '<div id="content">'
.'<h1>Search Results</h1>';
if($_SERVER['REQUEST_METHOD'] == "POST") {
if(isset($_POST['search']) && strlen(trim($_POST['search'])) > 0){
$query = "SELECT
med_id,
med_name,
med_create_date,
med_expire_date,
med_factory_id,
med_register_date
FROM
medicines
WHERE
med_name LIKE '%" . mysqli_real_escape_string($connection, $_POST['search']) . "%'";
$search_query = mysqli_query($connection,$query);
if(!$search_query){ // Niet nodig en nooit DIE gebruiken buiten de ontwikkel versie.
die(mysqli_error($connection));
}
if(mysqli_num_rows($search_query) > 0){
echo "<table width='70%' border='solid 1px;'>"
. "<tr>"
. "<th>Name</th>"
. "<th>Production_Date</th>"
. "<th>Expire_Date</th>"
. "<th>Created by factory</th>"
. "<th>Added to database</th>"
. "<th>Edit</th>"
. "<th>Delete</th>"
. "</tr>";
while ($row2 = mysqli_fetch_assoc($search_query)){
echo "<tr>" .
"<td>{$row2['med_name']}</td>" .
"<td>{$row2['med_create_date']}</td>" .
"<td>{$row2['med_expire_date']}</td>" .
"<td>{$row2['med_factory_id']}</td>" .
"<td>{$row2['med_register_date']}</td>" .
"<td><a href='edit.php?id={$row2['med_id']}'>Edit</a></td>" .
"<td><a href='delete.php?id={$row2['med_id']}'>Delete</a></td>" .
"</tr>";
}
echo "</table>";
} else {
echo 'Geen resultaten';
}
} else {
echo 'Niks ingevuld';
}
}
echo '</div>';
include "includes/footer.php";
?>
Hallo Michael,
Bedankt voor je feedback.
De tips die worden gegeven, heb ik deels gevolgd, want ik wil het zelf begrepen en later als er problemen zijn het zelf oplossen.
En de variabelen van lijn 21 t/m 26 heb ik weer gebruikt in lijn 28 t/m 34.
Jouw code vind ik ook goed, maar vind persoonlijk gevoeliger voor synatx errors.
Update:
Bij nader inzien, vind ik dat je gelijk hebt. Ik zie ook dat je code beter eruit ziet en georganiseerder is. Tnx!
Gewijzigd op 20/08/2016 15:15:50 door Mohamed nvt
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
echo "<tr>" .
"<td>{$row2['med_name']}</td>" .
"<td>{$row2['med_create_date']}</td>" .
"<td>{$row2['med_expire_date']}</td>" .
"<td>{$row2['med_factory_id']}</td>" .
"<td>{$row2['med_register_date']}</td>" .
"<td><a href='edit.php?id={$row2['med_id']}'>Edit</a></td>" .
"<td><a href='delete.php?id={$row2['med_id']}'>Delete</a></td>" .
"</tr>";
?>
echo "<tr>" .
"<td>{$row2['med_name']}</td>" .
"<td>{$row2['med_create_date']}</td>" .
"<td>{$row2['med_expire_date']}</td>" .
"<td>{$row2['med_factory_id']}</td>" .
"<td>{$row2['med_register_date']}</td>" .
"<td><a href='edit.php?id={$row2['med_id']}'>Edit</a></td>" .
"<td><a href='delete.php?id={$row2['med_id']}'>Delete</a></td>" .
"</tr>";
?>
Dat kan beter zo.
Let op het escapen etc.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
echo '<tr>
<td>'.$row2['med_name'].'</td>
<td>'.$row2['med_create_date'].'</td>
<td>'.$row2['med_expire_date'].'</td>
<td>'.$row2['med_factory_id']}.'</td>
<td>'.$row2['med_register_date'].'</td>
<td><a href="edit.php?id='.$row2['med_id'].'">Edit</a></td>
<td><a href="delete.php?id='.$row2['med_id'].'">Delete</a></td>
</tr>';
?>
echo '<tr>
<td>'.$row2['med_name'].'</td>
<td>'.$row2['med_create_date'].'</td>
<td>'.$row2['med_expire_date'].'</td>
<td>'.$row2['med_factory_id']}.'</td>
<td>'.$row2['med_register_date'].'</td>
<td><a href="edit.php?id='.$row2['med_id'].'">Edit</a></td>
<td><a href="delete.php?id='.$row2['med_id'].'">Delete</a></td>
</tr>';
?>
Dus je opent je echo met een enkel haakje.
Je escapet al je variabelen met enkele haakjes
Je gebruikt gewoon dubbele haakjes in HTML (zie onderste regels).
Je sluit niet elke keer je echo af, het is 1 echo!
Eddy E op 21/08/2016 10:35:59:
Dus je opent je echo met een enkel haakje.
Je escapet al je variabelen met enkele haakjes
Je gebruikt gewoon dubbele haakjes in HTML (zie onderste regels).
Je sluit niet elke keer je echo af, het is 1 echo!
Je escapet al je variabelen met enkele haakjes
Je gebruikt gewoon dubbele haakjes in HTML (zie onderste regels).
Je sluit niet elke keer je echo af, het is 1 echo!
PHP laat je daarin heel vrij in tegenstelling tot andere programmeertalen die een structuur eisen.
Persoonlijk doe ik het zo omdat ik dat mooier vind. Iedereen heeft zijn eigen manier wat hij/zij het fijnste vind.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
echo '<tr>' . PHP_EOL
. '<td>' . $row2['med_name'] . '</td>' . PHP_EOL
. '</tr>' . PHP_EOL;
?>
echo '<tr>' . PHP_EOL
. '<td>' . $row2['med_name'] . '</td>' . PHP_EOL
. '</tr>' . PHP_EOL;
?>
Gewijzigd op 21/08/2016 12:58:54 door Michael -
Daar gaat het niet om.
ik bedoelde dat je zelf even in je code de bijbehorende div opzoekt.
dan zie je dat die IN een if staat, maar de </div> komt altijd. ook als de if false was.
Ivo P op 21/08/2016 18:43:28:
"Die div is van de wrapper."
Daar gaat het niet om.
ik bedoelde dat je zelf even in je code de bijbehorende div opzoekt.
dan zie je dat die IN een if staat, maar de </div> komt altijd. ook als de if false was.
Daar gaat het niet om.
ik bedoelde dat je zelf even in je code de bijbehorende div opzoekt.
dan zie je dat die IN een if staat, maar de </div> komt altijd. ook als de if false was.
Aha dat bedoel je.
Inmiddels heb ik het aangepast.
Tnx!