Kan dit misschien anders? Dit is mijn oplossing.
Maar ik moest iets vinden om in het menu, bepaalde waardes te krijgen. Nu kon ik het wel op de page gaan doen, maar dat was niet wat ik zocht.
Echter door zelf te experimenteren, kwam ik na uren proberen, op dit uit.
Nu vraag ik me af of hier een beter code voor is?
Kan het misschien simpeler?
Of heb ik het op deze manier goed opgelost?
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
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
<?php
// Required databases (In the new version of the site, this will be used better)//
$query100 = 'SELECT * FROM Services';
$result100 = mysqli_query($connect, $query100);
$data100 = mysqli_fetch_all($result100, MYSQLI_ASSOC);
$query200 = 'SELECT * FROM pricelist WHERE User_ID='.$_SESSION['ID'].'';
$result200 = mysqli_query($connect, $query200);
$data200 = mysqli_fetch_all($result200, MYSQLI_ASSOC);
$query300 = 'SELECT * FROM UserServices WHERE User_ID='.$_SESSION['ID'].'';
$result300 = mysqli_query($connect, $query300);
$data300 = mysqli_fetch_all($result300, MYSQLI_ASSOC);
$dbase100 = array_column($data100 , 'ID' , 'Services');
$dbase200 = array_column($data200 , 'User_ID' , 'Services_ID');
$dbase300 = array_column($data300 , 'User_ID' , 'Services_ID');
// check listing pricing //
$diff_price = array_diff($dbase300, $dbase200); // 2 Databases where all the needed info is.
$count = 0; // Counter, you will see what i did with it.
foreach($diff_price as $Services_diff => $Pricing_diff) {
$count++;
$price_diff = $Pricing_diff; $PService_diff = $Services_diff; // The differnces what are needed.
foreach($dbase100 as $Services => $ID) {
if($PService_diff == $ID) {
$query = 'SELECT Services FROM Services WHERE Services ="'.$Services.'"'; // Get the info what I was looking for.
$result = mysqli_query($connect, $query);
while ($row = mysqli_fetch_object($result)) {
$found[$count] = $row->Services; // Make a fix value.
}
}
}
}
// The fix values from above.
if(empty($found[4])){$found_d = '';}else{$found_d = "<a href='index.php?menu=prices&action=adding&services=".$found[4]."'>".$found[4]."</a>";}
if(empty($found[3])){$found_c = '';}else{$found_c = "<a href='index.php?menu=prices&action=adding&services=".$found[3]."'>".$found[3]."</a>";}
if(empty($found[2])){$found_b = '';}else{$found_b = "<a href='index.php?menu=prices&action=adding&services=".$found[2]."'>".$found[2]."</a>";}
if(empty($found[1])){$found_a = '';}else{$found_a = "<a href='index.php?menu=prices&action=adding&services=".$found[1]."'>".$found[1]."</a>";}
// Info for in the banner where it is needed to be
$showmenu = $found_a .' '. $found_b .' '. $found_c .' '. $found_d;
// Optional menu banner //
$Welcome_msg = nl2br("Welcome on this page and take good care of the options you have.\n Read always very carefull before you fill in, there are options to change, but better do it at once right. \n Good luck and have fun here.", ENT_QUOTES);
$Mdefault = htmlspecialchars("Optional menu item", ENT_QUOTES);
$Mmyservices = "<a href='index.php?menu=services'>My Services</a> | <a href='index.php?menu=options'>My Options</a>";
$Mservices = "My Services | <a href='index.php?menu=options'>My Options</a>";
$Moptions = "<a href='index.php?menu=services'>My Services</a> | My Options";
$Mpricing = "Don`t forget the add prices for these :".$showmenu." ";
?>
// Required databases (In the new version of the site, this will be used better)//
$query100 = 'SELECT * FROM Services';
$result100 = mysqli_query($connect, $query100);
$data100 = mysqli_fetch_all($result100, MYSQLI_ASSOC);
$query200 = 'SELECT * FROM pricelist WHERE User_ID='.$_SESSION['ID'].'';
$result200 = mysqli_query($connect, $query200);
$data200 = mysqli_fetch_all($result200, MYSQLI_ASSOC);
$query300 = 'SELECT * FROM UserServices WHERE User_ID='.$_SESSION['ID'].'';
$result300 = mysqli_query($connect, $query300);
$data300 = mysqli_fetch_all($result300, MYSQLI_ASSOC);
$dbase100 = array_column($data100 , 'ID' , 'Services');
$dbase200 = array_column($data200 , 'User_ID' , 'Services_ID');
$dbase300 = array_column($data300 , 'User_ID' , 'Services_ID');
// check listing pricing //
$diff_price = array_diff($dbase300, $dbase200); // 2 Databases where all the needed info is.
$count = 0; // Counter, you will see what i did with it.
foreach($diff_price as $Services_diff => $Pricing_diff) {
$count++;
$price_diff = $Pricing_diff; $PService_diff = $Services_diff; // The differnces what are needed.
foreach($dbase100 as $Services => $ID) {
if($PService_diff == $ID) {
$query = 'SELECT Services FROM Services WHERE Services ="'.$Services.'"'; // Get the info what I was looking for.
$result = mysqli_query($connect, $query);
while ($row = mysqli_fetch_object($result)) {
$found[$count] = $row->Services; // Make a fix value.
}
}
}
}
// The fix values from above.
if(empty($found[4])){$found_d = '';}else{$found_d = "<a href='index.php?menu=prices&action=adding&services=".$found[4]."'>".$found[4]."</a>";}
if(empty($found[3])){$found_c = '';}else{$found_c = "<a href='index.php?menu=prices&action=adding&services=".$found[3]."'>".$found[3]."</a>";}
if(empty($found[2])){$found_b = '';}else{$found_b = "<a href='index.php?menu=prices&action=adding&services=".$found[2]."'>".$found[2]."</a>";}
if(empty($found[1])){$found_a = '';}else{$found_a = "<a href='index.php?menu=prices&action=adding&services=".$found[1]."'>".$found[1]."</a>";}
// Info for in the banner where it is needed to be
$showmenu = $found_a .' '. $found_b .' '. $found_c .' '. $found_d;
// Optional menu banner //
$Welcome_msg = nl2br("Welcome on this page and take good care of the options you have.\n Read always very carefull before you fill in, there are options to change, but better do it at once right. \n Good luck and have fun here.", ENT_QUOTES);
$Mdefault = htmlspecialchars("Optional menu item", ENT_QUOTES);
$Mmyservices = "<a href='index.php?menu=services'>My Services</a> | <a href='index.php?menu=options'>My Options</a>";
$Mservices = "My Services | <a href='index.php?menu=options'>My Options</a>";
$Moptions = "<a href='index.php?menu=services'>My Services</a> | My Options";
$Mpricing = "Don`t forget the add prices for these :".$showmenu." ";
?>
Graag opbouwende kretiek graag en misschien tips waar ik moet kijken.
Welke functie misschien dat doet wat ik wil.
Er is toch all veel opgemerkt om te stoppen met "SELECT * FROM". Gebruik je veldnamen! Dan heb je vermoedelijk ook array_column niet meer nodig en je belast de server een pak minder.
En benoem de variabelen gewoon met wat ze doen. Gebruik geen cryptische namen als $dbase100 etc.
Ook ben ik benieuwd welke tutorial je gebruikt, want dit voelt alsof je eentje gebruikt die PHP 4 uit 2000 beschrijft?(!!!!)
Gewijzigd op 30/04/2023 10:21:10 door - Ariën -
Kijk daar heb ik mijn reden voor, dadelijk komt alles in 1 page met de queries.
Dan hoef ik die per page niet meer in te laden.
Daarom de SELECT * FROM.
De array_column heb ik voor dit script nodig, zoals je ziet heb ik 2 specifieke fields nodig.
@Arien,
De foreach extract data uit de array_column, dat kan met een while niet.
En ik zoek naar verschillen, die ik nodig heb.
En bij deze heb ik geen tutorial gebruikt, want die kon ik niet vinden in wat ik nodig had.
Dit is totaal van "Scratch" geschreven.
Deze post was meer van jongens, wat ik hier doe, kan dat misschien beter of simpeler, vroeg ook om opbouwende kritiek.
Het ging om dit gedeelte :
Code (php)
1
2
3
4
2
3
4
if(empty($found[4])){$found_d = '';}else{$found_d = "<a href='index.php?menu=prices&action=adding&services=".$found[4]."'>".$found[4]."</a>";}
if(empty($found[3])){$found_c = '';}else{$found_c = "<a href='index.php?menu=prices&action=adding&services=".$found[3]."'>".$found[3]."</a>";}
if(empty($found[2])){$found_b = '';}else{$found_b = "<a href='index.php?menu=prices&action=adding&services=".$found[2]."'>".$found[2]."</a>";}
if(empty($found[1])){$found_a = '';}else{$found_a = "<a href='index.php?menu=prices&action=adding&services=".$found[1]."'>".$found[1]."</a>";}
if(empty($found[3])){$found_c = '';}else{$found_c = "<a href='index.php?menu=prices&action=adding&services=".$found[3]."'>".$found[3]."</a>";}
if(empty($found[2])){$found_b = '';}else{$found_b = "<a href='index.php?menu=prices&action=adding&services=".$found[2]."'>".$found[2]."</a>";}
if(empty($found[1])){$found_a = '';}else{$found_a = "<a href='index.php?menu=prices&action=adding&services=".$found[1]."'>".$found[1]."</a>";}
Met het boven staande stukje code.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$diff_price = array_diff($dbase300, $dbase200); // 2 Databases where all the needed info is.
$count = 0; // Counter, you will see what i did with it.
foreach($diff_price as $Services_diff => $Pricing_diff) {
$count++;
$price_diff = $Pricing_diff; $PService_diff = $Services_diff; // The differnces what are needed.
foreach($dbase100 as $Services => $ID) {
if($PService_diff == $ID) {
$query = 'SELECT Services FROM Services WHERE Services ="'.$Services.'"'; // Get the info what I was looking for.
$result = mysqli_query($connect, $query);
while ($row = mysqli_fetch_object($result)) {
$found[$count] = $row->Services; // Make a fix value.
}
}
}
}
$count = 0; // Counter, you will see what i did with it.
foreach($diff_price as $Services_diff => $Pricing_diff) {
$count++;
$price_diff = $Pricing_diff; $PService_diff = $Services_diff; // The differnces what are needed.
foreach($dbase100 as $Services => $ID) {
if($PService_diff == $ID) {
$query = 'SELECT Services FROM Services WHERE Services ="'.$Services.'"'; // Get the info what I was looking for.
$result = mysqli_query($connect, $query);
while ($row = mysqli_fetch_object($result)) {
$found[$count] = $row->Services; // Make a fix value.
}
}
}
}
Hier ging het mij om! Niet om een kannonen vuur met waroom en hoezo etc...
Je kan volgens mij in deze situatie ook prima een while gebruiken voor de data uit je database.
En door failures en proberen, ben ik nu met een sectie bezig waar ik eerst de CSS eerst doe eer ik aan het script ga beginnen. Ook daar ga ik stap voor stap mee aan de slag.
De layouts die ik per sectie maak, zien er steeds beter uit.
Ook zoe ik een betere oplossing voor het inladen van de CSS, nu wordt voor elke sectie een losse CSS aangemaakt en deze ook apart ingeladen.
Waardoor ik teveel if statements heb, hier ben ik nog mee bezig om te kijken hoe ik het in de toekomst beter kan doen met de vernieuwingen die ik al in gedachte heb.
Misschien een losse php aanmaken met daarin de "losse" CSS of naar de database, maar alles in de database lijkt me overkill.
Gewijzigd op 01/05/2023 16:00:45 door Arno van Zanten
Om even terug te komen op je queries:
Met query's moet je spaarzaam omgaan. De reden mag hopelijk al wel duidelijk zijn, maar als je de boel herschrijft naar de OO-variant (Object-Oriënted) van MySQLi dan kan je een class bouwen die de bestaande MySQL class uitbreidt. Super handig, en ook meteen handig om fouten op te vangen als een query faalt.
Zo heb ik dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
class Database extends mysqli {
var $totalQueries = 0;
function query($query,$resultmode = NULL)
{
$result = parent::query($query);
$this->totalQueries = $this->totalQueries+1;
if($this->error) {
throw new Exception(mysqli_error($this), mysqli_errno($this));
}
return $result;
}
function totalQueries(){
$this->totalQueries = $totalQueries+1;
return $this->totalQueries;
}
}
?>
class Database extends mysqli {
var $totalQueries = 0;
function query($query,$resultmode = NULL)
{
$result = parent::query($query);
$this->totalQueries = $this->totalQueries+1;
if($this->error) {
throw new Exception(mysqli_error($this), mysqli_errno($this));
}
return $result;
}
function totalQueries(){
$this->totalQueries = $totalQueries+1;
return $this->totalQueries;
}
}
?>
Hiermee kan je ook eenvoudig queries tellen:
En ik roep het als volgt aan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
include BASE_PATH . "/inc/database.inc.php";
$db = new Database(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$db->set_charset("utf8");
if ($db->connect_errno) {
throw new Exception('Database error:' . $db->connect_error);
}
// uitvoer van een query
$db->query("SELECT iets FROM tabel WHERE iets='dat'");
// aantal queries tellen:
echo "Er zijn nu: ".$db->totalQueries." queries uitgevoerd bij het uitvoeren van je site.";
?>
include BASE_PATH . "/inc/database.inc.php";
$db = new Database(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$db->set_charset("utf8");
if ($db->connect_errno) {
throw new Exception('Database error:' . $db->connect_error);
}
// uitvoer van een query
$db->query("SELECT iets FROM tabel WHERE iets='dat'");
// aantal queries tellen:
echo "Er zijn nu: ".$db->totalQueries." queries uitgevoerd bij het uitvoeren van je site.";
?>
Gewijzigd op 01/05/2023 20:18:44 door - Ariën -
- Ariën - op 01/05/2023 18:01:53:
Waarom maak je per sectie een losse CSS aan? Wat is er mis met een grote CSS?
Aangezien elke sectie iets anders uit ziet en dat ik anders veel zoek werk heb.
Als ik alles zou samenvoegen, kom ik op ongeveer 1000 regels aan CSS.
Dus om alles sneller te vinden, kleinere CSS`en en ik heb wel altijd een defautl die ingeladen is, want die regelt de standaard layout.
- Ariën - op 01/05/2023 18:01:53:
Om even terug te komen op je queries:
Met query's moet je spaarzaam omgaan. De reden mag hopelijk al wel duidelijk zijn, maar als je de boel herschrijft naar de OO-variant (Object-Oriënted) van MySQLi dan kan je een class bouwen die de bestaande MySQL class uitbreidt. Super handig, en ook meteen handig om fouten op te vangen als een query faalt.
Zo heb ik dit:
Hiermee kan je ook eenvoudig queries tellen:
En ik roep het als volgt aan:
Met query's moet je spaarzaam omgaan. De reden mag hopelijk al wel duidelijk zijn, maar als je de boel herschrijft naar de OO-variant (Object-Oriënted) van MySQLi dan kan je een class bouwen die de bestaande MySQL class uitbreidt. Super handig, en ook meteen handig om fouten op te vangen als een query faalt.
Zo heb ik dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
class Database extends mysqli {
var $totalQueries = 0;
function query($query,$resultmode = NULL)
{
$result = parent::query($query);
$this->totalQueries = $this->totalQueries+1;
if($this->error) {
throw new Exception(mysqli_error($this), mysqli_errno($this));
}
return $result;
}
function totalQueries(){
$this->totalQueries = $totalQueries+1;
return $this->totalQueries;
}
}
?>
class Database extends mysqli {
var $totalQueries = 0;
function query($query,$resultmode = NULL)
{
$result = parent::query($query);
$this->totalQueries = $this->totalQueries+1;
if($this->error) {
throw new Exception(mysqli_error($this), mysqli_errno($this));
}
return $result;
}
function totalQueries(){
$this->totalQueries = $totalQueries+1;
return $this->totalQueries;
}
}
?>
Hiermee kan je ook eenvoudig queries tellen:
En ik roep het als volgt aan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
include BASE_PATH . "/inc/database.inc.php";
$db = new Database(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$db->set_charset("utf8");
if ($db->connect_errno) {
throw new Exception('Database error:' . $db->connect_error);
}
// uitvoer van een query
$db->query("SELECT iets FROM tabel WHERE iets='dat'");
// aantal queries tellen:
echo "Er zijn nu: ".$db->totalQueries." queries uitgevoerd bij het uitvoeren van je site.";
?>
[/quote]
Dit zal ik zeker als notie noteren en eens goed kijken hoe dat precies werkt.
include BASE_PATH . "/inc/database.inc.php";
$db = new Database(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$db->set_charset("utf8");
if ($db->connect_errno) {
throw new Exception('Database error:' . $db->connect_error);
}
// uitvoer van een query
$db->query("SELECT iets FROM tabel WHERE iets='dat'");
// aantal queries tellen:
echo "Er zijn nu: ".$db->totalQueries." queries uitgevoerd bij het uitvoeren van je site.";
?>
[/quote]
Dit zal ik zeker als notie noteren en eens goed kijken hoe dat precies werkt.
Arno van Zanten op 02/05/2023 00:06:28:
Aangezien elke sectie iets anders uit ziet en dat ik anders veel zoek werk heb.
Als ik alles zou samenvoegen, kom ik op ongeveer 1000 regels aan CSS.
Dus om alles sneller te vinden, kleinere CSS`en en ik heb wel altijd een defautl die ingeladen is, want die regelt de standaard layout.
- Ariën - op 01/05/2023 18:01:53:
Waarom maak je per sectie een losse CSS aan? Wat is er mis met een grote CSS?
Aangezien elke sectie iets anders uit ziet en dat ik anders veel zoek werk heb.
Als ik alles zou samenvoegen, kom ik op ongeveer 1000 regels aan CSS.
Dus om alles sneller te vinden, kleinere CSS`en en ik heb wel altijd een defautl die ingeladen is, want die regelt de standaard layout.
Als je het goed indeelt, dan kan je alles wel vinden.
Je moet wel goede logica erin brengen.