Hoe variabelnamen uit database toewijzen
Hieronder een voorbeeld hoe het eruit zou kunnen zien:
Content1 bevat bijvoorbeeld de volgende variablenamen:
rij1titel1
rij1titel2
rij90tekst1
rij90tekst2
De repec. waardes in content2 bevatten bijvoorbeeld
hallo iedereen
Welkom iedereen
Dit huis is blauw
Deze tandenborstel is rood
dus rij1titel1 = hallo iedereen
etc..
zie de onderstaande code die ik momenteel heb. Hierdoor wordt alles uit de database dus ingelezen. Maar hoe kan ik nu ervoor zorgen dat de variabelen namen uit de database worden toegewezen en vervolgens kunnen worden weergegeven? beetje verwarrend wellicht wat ik bedoel. Hoop dat het een beetje duidelijk is wat ik wil. Weet ook niet of dit uberhaupt mogelijk is!!
Via onderstaande script wordt alles dus ingelezen
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
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
<?php
$servername = "xxxxx";
$username = "xxxx";
$password = "xxxx";
$dbname = "xxxxx";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, content1, content2 FROM content2";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Content1: " . $row["content1"]. " - content2: " . $row["content2"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
$servername = "xxxxx";
$username = "xxxx";
$password = "xxxx";
$dbname = "xxxxx";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, content1, content2 FROM content2";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Content1: " . $row["content1"]. " - content2: " . $row["content2"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
Wat er vervolgens zou moeten eigenlijk is dat onderstaande als het ware automatisch zou moeten worden aangemaakt. Dit kan ik dus niet handmatig aanmaken, omdat ik niet weer welke variablenamen in de database voorkomen!!
$rij1titel1 = $row['rij1titel1'];
$rij1titel2 = $row['rij1titel2'];
$rij90tekst1 = $row['rij90tekst1'];
$rij90tekst2 = $row['rij90tekst2'];
zit zorgt er uiteindelijk ook voor dat ik de inhoud kan worden weergeven in php
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<h1>Onderstaand de weergave van de inhoud</h1>
<h1 contenteditable="plaintext-only"><?php echo $rij1titel1; ?></h1>
<h2 contenteditable="plaintext-only"><?php echo $rij1titel2; ?></h1>
<p contenteditable="plaintext-only"><?php echo $rij90tekst1; ?></p>
<p contenteditable="plaintext-only"><?php echo $rij90tekst2; ?></h1>
<h1 contenteditable="plaintext-only"><?php echo $rij1titel1; ?></h1>
<h2 contenteditable="plaintext-only"><?php echo $rij1titel2; ?></h1>
<p contenteditable="plaintext-only"><?php echo $rij90tekst1; ?></p>
<p contenteditable="plaintext-only"><?php echo $rij90tekst2; ?></h1>
h1 zou dus "hallo iedereen" moeten weergeven etc.. etc..
Gewijzigd op 31/08/2023 15:31:00 door Paul Weiss
Verdiep je eens in multidimensionale array's, zoals bijv. $string[90][1] wat staat voor: string uit rij 90, tekst 1.
Een goede database-structuur die genormaliseerd is mag ook zeker niet ontbreken. Velden en tabellen nummeren is echt not done.
Gewijzigd op 31/08/2023 16:07:40 door - Ariën -
dus stel in de database staan 2 entry's waarbij content1 dus "heading1" en "heading2" bevat en content2 resp. "hallo" en "welkom".
vervolgens moet dit dus het resultaat worden:
$heading1 (dus de inhoud van de 1e entry van content1) = hallo (inhoud 1e entry van content2).
$heading2 (dus de inhoud van de 2e entry van content1) = welkom (de inhoud van de 2e entry van content2)
Of kan dat juist wel op de wijze hoe je het aangeeft?
Gewijzigd op 31/08/2023 16:35:48 door Paul Weiss
Misschien zoek je dan dit: $rij1titel1 = $row[$rij1titel1];
Gewijzigd op 31/08/2023 17:26:35 door Evert Bennekom
Waarom zou je variabelen willen kopiëren?
Als ik zo naar het scriptje kijk dan lijkt het me weinig boeiend of dit de juiste weg is. Die is toch al in geen velden of wegen te vinden. Zolang het maar werkt lijkt me afdoende.
Evert Bennekom op 31/08/2023 17:49:20:
Als ik zo naar het scriptje kijk dan lijkt het me weinig boeiend of dit de juiste weg is. Die is toch al in geen velden of wegen te vinden. Zolang het maar werkt lijkt me afdoende.
Met zo'n motivatie is het wachten tot je fouten gaat maken, en je applicatie uiteindelijk met plakband in elkaar hangt, bij wijze van spreken. Je zult zien dat als je op die manier verder gaat, dat je jezelf in de voeten schiet, en dat repareren uiteindelijk steeds meer pijn zal doen.
Als je iets bouwt, probeer het dan minimaal goed te doen en volg advies van anderen.
Helaas heb ik vaker scripts gehad die ranzig gebouwd waren, waarbij ik geweigerd heb om deze op te knappen.
Afhankelijk van wat Paul zelf wil (skills verbeteren of eenmalig hobbyprojectje afronden) kan hij later altijd nog meer inzicht vergaren door (tikkie ouwerwets maar soit) een goed boek te kopen en/of een cursus te volgen of compleet autodidact gaan. Maar dat lijkt me niet de intentie hier.
En dan over het wachten tot je fouten gaat maken. Ja natuurlijk gaat hij dat. Ik maak ze nog dagelijks en toen ik net met programmeren begon........ nou laten we maar zeggen dat die code gelukkig gewist is van het internet :D
Aldoende kom je steeds een stapje hogerop. :-)
En als je vragen hebt, en die op een forum stelt, dan is het normaal dat je ook adviezen krijgt.
Gewijzigd op 31/08/2023 18:19:10 door - Ariën -
Gewijzigd op 31/08/2023 18:46:23 door Paul Weiss
https://www.geeksforgeeks.org/multidimensional-arrays-in-php/
https://www.phptutorial.net/php-tutorial/php-multidimensional-array/
Evert Bennekom op 31/08/2023 17:25:29:
Ik weet niet of ik begrepen heb wat je wilt maar ik gok er op dat de naam van een variabele in 1 kolom staat de inhoud daarvan in een andere.
Misschien zoek je dan dit: $rij1titel1 = $row[$rij1titel1];
Misschien zoek je dan dit: $rij1titel1 = $row[$rij1titel1];
Nee dat is niet wat ik bedoel. ik weet de variable namen niet als ik het script schrijf. er zal een loop moeten worden uitgevoerd waarbij dus steeds een variablenaam zoals $rij1titel1 wordt aangemaakt en vervolgens wordt de waarde uit content2 daaraan toegekend. Maar gezien de berichten is dit niet de weg die ik moet bewandelen.
Ik zal nog een nieuwe reactie waarop ik zal aangeven hoe ik het anders zou kunnen doen.
Probeer dat eens te vergeten. Check eerst de linkjes eens, en lees het eens aandachtig. :-)
Toevoeging op 31/08/2023 19:25:46:
Hier nog even wat meer info waarom. Ik ben een eigen site builder aan het bouwen (niet te verwarren met een cms). Hierbij wordt de inhoud van een form steeds helemaal opgeslagen in een apart bestand, dus zonder tussenkomst van een database. Dat werkt zeer goed.
echter ik ben op zoek naar een manier waarbij de opmaak van de code niet via inspector gewijzigd kan worden, want dan klopt de styling niet meer uiteraard. Uiteraard is dat ook weer simpel door mij te verhelpen. Maar ik zoek eigenlijk naar een andere manier die dat voorkomt.
Op dit moment kan ik dus verschillende html blokken steeds toevoegen / verwijderen of met elkaar laten wisselen. elk html blok dat wordt toegevoegd krijgt een uniek rijnummer toegekend. het eerste html blok wordt dan opgeslagen als rij1. het 2e blok dat wordt toegevoegd krijgt rij2 etc. etc.. De html code zelf kan dan niet door de gebruiker worden gewijzigd. deze is verder statisch. alleen de gegevens zoals tekst opmaak etc.. moeten apart worden opgeslagen in een database. Ik zou dus elk blok kunnen voorzien van 1 of meerdere php variables (aantal en welke is afhankelijk van het html blok) die vervolgens worden uitgelezen en de nieuwe gewijzigde inhoud ook weer kan worden opgeslagen in de database.
De database zou er dan bijvoorbeeld zo uit komen te zien
rijnummmer titel1 titel2 tekst1 tekst2 kleur1 button
1 hallo. welkom pietje. huis. #fffff. dit is een button
2 hihi hallo jij jantje mes. #00000. dit is ook een button
Per html blok kan ik dus dingen wijzigen die verwijzen naar het desbetreffende rijnummer. een blok zou er zo uit kunnen zien.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- div id="1" doelt naar rijnummer 1 uit database -->
<div id="1">.
<h1 contenteditable="plaintext-only"><?php echo $titel1; ?></h1>
</div>
<!-- div id="5" doelt naar rijnummer 5 uit database -->
<div id="5">.
<h1 contenteditable="plaintext-only"><?php echo $titel1; ?></h1>
</div>
<!-- div id="7" doelt naar rijnummer 7 uit database -->
<div id="7">.
<p contenteditable="plaintext-only"><?php echo $tekst1; ?></p>
</div>
<div id="1">.
<h1 contenteditable="plaintext-only"><?php echo $titel1; ?></h1>
</div>
<!-- div id="5" doelt naar rijnummer 5 uit database -->
<div id="5">.
<h1 contenteditable="plaintext-only"><?php echo $titel1; ?></h1>
</div>
<!-- div id="7" doelt naar rijnummer 7 uit database -->
<div id="7">.
<p contenteditable="plaintext-only"><?php echo $tekst1; ?></p>
</div>
echter bij deze methode heb ik meerdere variables met de naam $titel1. Bovendien moet ik bij deze methode elk blok apart opslaan in de desbetreffende rij van de database. Ik zoek echter naar een manier waarbij ik alles in 1 keer kan opslaan. vandaar dat ik dit topic ben gestart waarbij er gebruik gemaakt wordt van allemaal verschillende variables. Maar wellicht dat de methode die ik nu beschrijf in principe wel goed is, maar dat er een andere manier is om allesin 1 keer op te slaan.
Toevoeging op 31/08/2023 19:29:59:
- Ariën - op 31/08/2023 18:47:00:
Daarom stapje bij beetje ontdekken hoe het werkt.
https://www.geeksforgeeks.org/multidimensional-arrays-in-php/
https://www.phptutorial.net/php-tutorial/php-multidimensional-array/
https://www.geeksforgeeks.org/multidimensional-arrays-in-php/
https://www.phptutorial.net/php-tutorial/php-multidimensional-array/
ga ik zeker doen.
Gewijzigd op 31/08/2023 19:07:55 door Paul Weiss
Als je meer items wilt toevoegen moet je verticaal werken en niet horizontaal in de breedte.
Gewijzigd op 31/08/2023 19:34:28 door - Ariën -
Toevoeging op 31/08/2023 19:42:13:
ik begrijp wel wat je bedoel met koppelingen. Maar is voor mijn doel eingelijk toch niet nodig?
Gewijzigd op 31/08/2023 19:41:32 door Paul Weiss
Lees dit eens door:
Normaliseren voor Dummies https://www.jeroenhartsuiker.nl/documents/NormaliserenVoorDummies.pdf
Verder had je het net over variabelen aanmaken. Dat is niet juist: Je hebt eigenlijk een variabele met daarin een genormaliseerde array. Een array is een container voor onbeperkte data.
Gewijzigd op 31/08/2023 19:55:08 door - Ariën -
- Ariën - op 31/08/2023 19:52:22:
Ik denk dat je zeker koppelingen nodig hebt. Titels horen denk ik bij pagina's, en afhankelijk van of je een of meer titels hebt moet je vooraf bepalen of titels een eigen tabel krijgen met koppelingen naar de pagina's.
Lees dit eens door:
Normaliseren voor Dummies https://www.jeroenhartsuiker.nl/documents/NormaliserenVoorDummies.pdf
Verder had je het net over variabelen aanmaken. Dat is niet juist: Je hebt eigenlijk een variabele met daarin een genormaliseerde array. Een array is een container voor onbeperkte data.
Lees dit eens door:
Normaliseren voor Dummies https://www.jeroenhartsuiker.nl/documents/NormaliserenVoorDummies.pdf
Verder had je het net over variabelen aanmaken. Dat is niet juist: Je hebt eigenlijk een variabele met daarin een genormaliseerde array. Een array is een container voor onbeperkte data.
Klopt titels hoen bij een pagina net al tekst, tekstkleur links etc. van elk kun je meerdere hebben ook. ik heb dan ook meerdere pagina's met ook 1 of meerdere titels, teksten etc.. en elke pagina heeft meerdere html blokken die los van elkaar staan.
[/quote]
He arien. bedankt voor de info. is toch best wel ingewikkeld als je gebruik maakt van een database. althans hoe ik het graag wil hebben. Overigens het is bij mij niet de bedoeling een website met database te laten draaien hoor. Uiteindelijk wil ik gewoon een html pagina hebben. de evt. database is puur bedoeld voor het opbouwen van 1 of meerdere pagina's. Als deze eenmaal klaar zijn wordt elk paginabestand uiteindelijk omgezet naar een statische html pagina. Ik wil namelijk geen database gebruiken voor het laden van de site. Is puur mijn keuze hoor. Ook omdat een website met een database onderhoud kan vergen en dat wil ik niet.
Quote:
Ik wil namelijk geen database gebruiken voor het laden van de site. Is puur mijn keuze hoor.
Met welke reden is dat?
Quote:
Ook omdat een website met een database onderhoud kan vergen en dat wil ik niet.
Een website vergt ook altijd onderhoud. Waarom zou een database dan opeens een probleem zijn?
Gewijzigd op 31/08/2023 22:26:41 door Paul Weiss
meer zien in
Dan zijn het geen variabelen, maar placeholders.
En dan zou je ook eens kunnen kijken hoe bijvoorbeeld Smarty werkt met het vullen van de inhoud in een template.
Je beperkt je nu ook in de naamgeving van de variabelen. $1eTitel is bijvoorbeeld niet toegestaan.
terwijl je met str_replace() geen beperking hebt in de te vervangen placeholders.
Toevoeging op 31/08/2023 22:30:05:
Verder ben je volgens mij de enige die zich zorgen maakt over het aanpassen van de pagina middels Inspect.
Er zit nog een knop in je browser die zorgt dat de pagina geheel verdwijnt namelijk.
(er staat een X op en staat helemaal rechtsbovenaan)
Daarnaast kunnen gebruikers ook met Zoom de site heel anders uit laten zien, mogelijk omdat ze slechte ogen hebben.
Of met leuke plugins kun je kleuren en layout aanpassen, omdat je dat beter kunt lezen.
Dat doet niets af aan hoe je pagina er voor elke standaard gebruiker uit gaat zien.