elementen toevoegen met array_push
Hiervoor heb ik de volgende code geschreven.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$var = $_POST["var"];
function addIntoArray($var)
{
global $reeks;
if (($var != ".") || ($var != ".."))
{
array_push($reeks, $var);
echo $var . " Is aan de array toegevoegd!";
}
return;
}
?>
$var = $_POST["var"];
function addIntoArray($var)
{
global $reeks;
if (($var != ".") || ($var != ".."))
{
array_push($reeks, $var);
echo $var . " Is aan de array toegevoegd!";
}
return;
}
?>
Het probleem is echter niet dat ik een foutmelding krijg, maar dat het scherm totaal geen output geeft, terwijl ik toch een echo regel heb aangemaakt.
Wat gaat hier fout?
En $reeks is nergens gedefinieerd.
Gewijzigd op 21/05/2015 12:12:58 door - SanThe -
$reeks is een bestaande array. Op welke wijze (en met welke reden) moet dit gedefinieerd worden?
Als die al ergens bestaat is er geen probleem.
Hoe kan het dat er geen output is van de echo regel?
Kan dat te maken hebben met de plaats/directory (1 level hoger) waarin deze scripts zich bevinden?
Gewijzigd op 21/05/2015 12:41:31 door Johan West
- SanThe - op 21/05/2015 12:11:21:
De function wordt nergens aangeroepen.
zal altijd waar zijn (tenzij $var zowel de waarde '.' als '..' heeft, maar dat is onmogelijk). Waarschijnlijk bedoel je && in plaats van || ;-)
OK jullie zijn fantastische hulpmiddelen. Het script werkt.
Gewijzigd op 21/05/2015 18:09:13 door Frank Nietbelangrijk
Voorlopig moet ik het hier van hebben. Ik zoek echt naar goede info online (NL of ENG) over PHP en naast praktische code wil ik meer weten over de principes zoals definiëren, declaraties en type signature.
Stomweg code 'overtypen' en copypasten is op zich okay, maar je wilt toch wat meer weten over de achtergronden, maar echt veel vind je niet online ook niet in boeken.
Hoe hebben jullie je kennis van PHP opgedaan? Schoolboeken? Cursussen? Ben ik eigenlijk wel benieuwd naar.
Zes jaar terug ben ik ook begonnen net zoals jouw met overtypen en dergelijke, maar als je dat al aantal jaren doet krijg je echt wel heel veel meer verstand van PHP, als je er genoeg experimenteerd natuurlijk ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
function addIntoArray($var) {
global $reeks;
if (($var != ".") && ($var != "..")) { // || gewijzigd in &&
array_push($reeks, $var);
echo $var . " Is aan de array toegevoegd!";
}
return;
}
?>
function addIntoArray($var) {
global $reeks;
if (($var != ".") && ($var != "..")) { // || gewijzigd in &&
array_push($reeks, $var);
echo $var . " Is aan de array toegevoegd!";
}
return;
}
?>
Ook al doet deze functie wat ze (waarschijnlijk) zou moeten doen, zitten aan deze opzet een aantal nadelen:
- de functie bevat een "hard coded" element, wat de herbruikbaarheid van deze functie teniet doet
- de functie drukt altijd tekst af, dit is handig voor debugging / ontwikkeling, maar daarbuiten is het waarschijnlijk storend of gewoon onwenselijk
- de functie geeft geen "status" terug of de bewerking is geslaagd, dit doe je nu middels een echo, maar waarschijnlijk is het handiger om een boolean (true of false) terug te geven die aangeeft of de bewerking is geslaagd
Alle bovenstaande punten zijn verwerkt in de volgende aangepaste variant:
Code (php)
Hierbij geef je een (geheugen)verwijzing naar het array mee via de tweede parameter. De & geeft aan dat deze parameter call by reference is. De functie zelf retourneert een boolean die aangeeft of de bewerking is geslaagd. Deze functie kun je dus nu voor een willekeurig array aanroepen (deze is niet langer beperkt tot $reeks) waarbij je een verwijzing naar het array meegeeft.
Voorbeeld:
Code (php)
Uitgaande van die '.' en '..' maak ik hieruit op dat je iets met directories / directory-structuren aan het doen bent? Als je functies wilt bundelen die soortgelijke acties uitvoeren (op bijvoorbeeld directories) dan zou je ook kunnen overwegen om hiervoor een class te schrijven, maar dat onderwerp (dit valt onder object georiënteerd programmeren) is voor de wat gevorderde gebruikers.
$value moet eigenlijk gewoon een input zijn, dus een variabele die ingegeven is via een invoerformulier <input>
Dit moet er eerst 1 zijn, later wordt dit uitgebreid tot meer en kunnen bijv. 40 nieuwe variabelen worden ingegeven.
Gewijzigd op 23/05/2015 11:45:42 door Johan West
Ok ik stop met deze manier van het maken van databases. Ik ga overstappen op MYSQL/phpmyadmin.