probleem met mijn function.php file
ik loop tegen een klein probleem aan het gaat als volgt,
ik heb een php file waar ik mijn functions in aanmaak maar nu probeer ik een nieuwe functie erbij te maken
maar op een of andere manier word mijn functie al benoemd in mijn andere php paginas waar ik de functie.php include om vervolgends mijn functies te kunnen terug halen door de te benoemen als bijv.
testnieuwe();
maar om duidelijk te zijn ik heb deze nieuwe functie in geen enkele pagina opgeroepen maar toch zorgt het voor een error en ook nog is een error die nergens op slaat teminste zo ziet het er naar mijn mening uit. ik include alleen mijn functie.php en benoem daarna de functies die ik nodig heb dus het is heel raar dit:
hier kun je de foto zien ik weet niet hoe ik dit in deze topic toevoeg ik krijg namelijk alleen een img tag.
https://ibb.co/tzZGMbK
(je hoeft niks te downloaden je kunt het gelijk zien wat mijn probleem is met de code ernaast)
alvast bedankt
Gewijzigd op 11/07/2020 23:56:31 door - Ariën -
edit: inderdaad, een onverwachte accolade. Dan moet je zoals @Ivo suggereert even terugscannen in je code naar de eerste fout.
Als het PHP-bestand echt nodig is voor het goed werken van de rest van je code, dan zou ik persoonlijk ook geen include gebruiken. Als namelijk het te includen bestand niet gevonden kan worden dan wordt er een E_WARNING gegenereerd, maar gaat de code vervolgens vrolijk verder met de uitvoer. Je zou eigenlijk moeten "eisen" dat het bestand aanwezig is en ingeladen kan worden. Dit doe je met require.
En om te voorkomen dat het bestand mogelijk meerdere keren wordt ingeladen, met allerlei "deze functie is al gedeclareerd" foutmeldingen zou je voor de goede orde require_once kunnen gebruiken, maar dat zou tevens een indicatie kunnen zijn dat je het overzicht in je eigen code een beetje kwijt bent, omdat je alles aan elkaar rijgt met requires/includes als een soort van kralenketting ;-).
Gewijzigd op 13/07/2020 12:29:14 door Thomas van den Heuvel
en daarbij het zegt 'unexpected' ( dat betekent volgends mij in het engels "niet verwacht") dus ik mis geen sluitingaccolade als je de code ernaast bekeken hebt maar misschien zie ik het echt niet dus hier nogmaals de code:
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
$status="";
if(isset($_POST['id']) && $_POST['id']!=""){
$code = $_POST['id'];
$result = mysqli_query($con,"SELECT * FROM test WHERE ID = '$code'");
$row = mysqli_fetch_assoc($result);
$naam = $row['naam'];
$product_id = $row['id'];
$prijs = $row['prijs'];
$foto = $row['foto'];
$cartArray = array (
$product_id=>array(
'naam'=>$name,
'id'=>$product_id,
'prijs'=>$prijs,
'quantity'=>1,
'foto'=>$foto)
);
if (!empty($_SESSION["shopping_cart"])){
$_SESSION["shopping_cart"] = $cartArray;
$status = "<div class='box'> Product is addded to your cart! </div>"
}else{
$array_keys = array_keys($_SESSION["shopping_cart"]);
if(in_array($code,$array_keys)) {
$status = "<div class='box'> Product already addded to your cart! </div>"
}else{
$_SESSION["shopping_cart"] = array_merge(
$_SESSION["shopping_cart"],
$cartArray
);
$status = "<divclass='box'> Product is addded to your cart! </div>"
}
}
}
if(isset($_POST['id']) && $_POST['id']!=""){
$code = $_POST['id'];
$result = mysqli_query($con,"SELECT * FROM test WHERE ID = '$code'");
$row = mysqli_fetch_assoc($result);
$naam = $row['naam'];
$product_id = $row['id'];
$prijs = $row['prijs'];
$foto = $row['foto'];
$cartArray = array (
$product_id=>array(
'naam'=>$name,
'id'=>$product_id,
'prijs'=>$prijs,
'quantity'=>1,
'foto'=>$foto)
);
if (!empty($_SESSION["shopping_cart"])){
$_SESSION["shopping_cart"] = $cartArray;
$status = "<div class='box'> Product is addded to your cart! </div>"
}else{
$array_keys = array_keys($_SESSION["shopping_cart"]);
if(in_array($code,$array_keys)) {
$status = "<div class='box'> Product already addded to your cart! </div>"
}else{
$_SESSION["shopping_cart"] = array_merge(
$_SESSION["shopping_cart"],
$cartArray
);
$status = "<divclass='box'> Product is addded to your cart! </div>"
}
}
}
Je opent een accolade op lijn 3 welke niet sluit. vermoedelijk op lijn 23
Puntkomma mist op de regel er voor.
- SanThe - op 12/07/2020 10:41:52:
Puntkomma mist op de regel er voor.
hahaha wauw jij bent mijn held voor vandaag, ik was de punt comma vergeten op de $status lines. voor iedereen die zei dat het een sluitingsaccolade was die miste, niet zomaar dingen zeggen als je niet zeker weet want zo worden mensen dus gefrustreerd want dan blijf je kijken naar een probleem die het totaal niet is maar alsnog iedereen bedankt voor het mee denken.
fijn weekend allemaal!
groetjes,
jan
"onverwachte }" wil dus zeggen dat die } staat op een plek waar hij niet verwacht wordt.
Dus ofwel heeft hij geen openingsbroertje ( { ) ofwel is de code ervoor nog niet klaar.
Dat laatste was het geval, aangezien je de ; ervoor was vergeten.
--
en qua beantwoorden van je topics, scheelt het een heleboel, als je de foutmelding die je niet begrijpt gewoon in het forum post, in plaats van er een plaatje van te maken, dat te uploaden en dan te verwachten dat men wel zo nieuwsgierig is om je plaatje te gaan bekijken.
En het is niet handig om de mensen die je dan toch proberen te helpen, af te snauwen om je eigen frustratie af te reageren.
Jan deman op 12/07/2020 13:05:01:
hahaha wauw jij bent mijn held voor vandaag, ik was de punt comma vergeten op de $status lines. voor iedereen die zei dat het een sluitingsaccolade was die miste, niet zomaar dingen zeggen als je niet zeker weet want zo worden mensen dus gefrustreerd want dan blijf je kijken naar een probleem die het totaal niet is maar alsnog iedereen bedankt voor het mee denken.
Fijn dat het is opgelost. Had inderdaad iets te snel gelezen, maar als je zelf al zover bent dat je wéét dat dat het niet is kom je zelf met enig redeneren ook een heel eind.
Voor de leesbaarheid helpt het ook als je je code fatsoenlijk inspringt, want dit geeft extra betekenis aan de werking - hiermee geef je aan dat bepaalde codeblokken genest zijn ten opzichte van andere, omvattende codeblokken, en daar dus ook onderdeel van uitmaken.
De screenshot die je ons gaf zou ook kunnen suggereren dat er op regel 91 een sluitingsaccolade mist, en dat er op 110 een teveel staat. Maar voordat je die conclusie kunt trekken zou je daadwerkelijk moeten interpreteren wat de code doet. Het inspringen helpt je in dit geval niet bij een snelle(re) interpretatie van de code.
Dit illustreert wat mij betreft het belang van net(ter) programmeren. Jouw frustratie lijkt mij het (bij)product van je eigen ongeduld bij het programmeren, en bij het analyseren van de fouten die je mogelijk ook als gevolg van dit ongeduld maakt. Of het was gewoon per ongeluk, iedereen maakt wel eens een (type)fout.
PHP heeft echt superduidelijke foutmeldingen, dus het loont de moeite om deze goed te leren lezen.
De foutmelding zelf is er ook een van het meest basale niveau, het betreft hier in zekere zin slechts een typefout. Parse errors gaan over syntaxfouten, oftewel, er zit dan ergens iets scheef in de vorm van de code. Als PHP dan vastloopt op regel X, dan loop je dus gewoon terug door je code vanaf regel X.
Het (zelf) oplossen van dit soort foutmeldingen zou ook moeten zorgen voor het aanleren van "aandachtspunten" zodat het in het vervolg minder waarschijnlijk is dat je zo'n (zelfde) fout maakt. Dit soort foutmeldingen zijn dus bij uitstek geschikt om van te leren. Wat mij betreft is debuggen nog steeds de beste manier om te leren programmeren.