Hoe variabelnamen uit database toewijzen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 4 volgende »

Paul Weiss

Paul Weiss

31/08/2023 15:26:27
Quote Anchor link
Stel ik heb in mijn database 2 veldnamen en wel content1 en content2. Content1 bavat alle namen van variabelen die doormiddel van een php script zijn aangemaakt. De namen van deze variabelen worden ook in een php document gebruikt om de inhoud daarvan weer te geven (zie verder onderaan). De inhoud van content1 zijn elk uniek en worden door een php script dus gegenereerd. veldnaam "content2". bevat de inhoud die aan deze variable is/wordt toegekend.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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();
?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
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 zou dus "hallo iedereen" moeten weergeven etc.. etc..
Gewijzigd op 31/08/2023 15:31:00 door Paul Weiss
 
PHP hulp

PHP hulp

21/11/2024 14:00:45
 
- Ariën  -
Beheerder

- Ariën -

31/08/2023 16:05:49
Quote Anchor link
Ik vrees dat je een enorme spaghetti-boel gaat krijgen als je variabelen gaat nummeren.

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 -
 
Paul Weiss

Paul Weiss

31/08/2023 16:35:28
Quote Anchor link
Bedankt voor je reactie. Ik weet niet of wij hetzelfde bedoelen. Ik bedoel eingelijk meer dat de naam van de variable dus in de database staat.

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
 
Evert Bennekom

Evert Bennekom

31/08/2023 17:25:29
Quote Anchor link
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];
Gewijzigd op 31/08/2023 17:26:35 door Evert Bennekom
 
- Ariën  -
Beheerder

- Ariën -

31/08/2023 17:31:01
Quote Anchor link
Dan alsnog is dit niet de juiste weg om in te slaan.
Waarom zou je variabelen willen kopiëren?
 
Evert Bennekom

Evert Bennekom

31/08/2023 17:49:20
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

31/08/2023 17:52:31
Quote Anchor link
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.
 
Evert Bennekom

Evert Bennekom

31/08/2023 18:08:42
Quote Anchor link
Ik snap wat je bedoeld Ariën. Mijn punt is dat de vraagsteller (niets kwalijks mee bedoeld Paul) kennelijk geen pro-programmeur is maar gewoon lekker aan het freubelen is aan iets dat hij kennelijk leuk of nuttig vind.

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
 
- Ariën  -
Beheerder

- Ariën -

31/08/2023 18:11:36
Quote Anchor link
Je hoeft geen pro-programmeur te zijn.
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 -
 
Paul Weiss

Paul Weiss

31/08/2023 18:45:16
Quote Anchor link
he arien. ik begrijp echt helemaal wat je bedoeld hoor. zeker bedankt voor je advies. Het is ook mijn bedoeling uiteindelijk om het goed te doen. Wil ook de juiste weg gaan bewandelen natuurlijk. echter op dit moment ontbreekt het mij aan voldoende kennis om alles in php te weten hoe zaken te realiseren.
Gewijzigd op 31/08/2023 18:46:23 door Paul Weiss
 
- Ariën  -
Beheerder

- Ariën -

31/08/2023 18:47:00
 
Paul Weiss

Paul Weiss

31/08/2023 18:52:04
Quote Anchor link
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];


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.
 
- Ariën  -
Beheerder

- Ariën -

31/08/2023 18:55:25
Quote Anchor link
Probeer dat eens te vergeten. Check eerst de linkjes eens, en lees het eens aandachtig. :-)
 
Paul Weiss

Paul Weiss

31/08/2023 19:07:21
Quote Anchor link
hier nog even wat info

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>



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:



ga ik zeker doen.
Gewijzigd op 31/08/2023 19:07:55 door Paul Weiss
 
- Ariën  -
Beheerder

- Ariën -

31/08/2023 19:32:56
Quote Anchor link
Het belang van een website is een goed genormaliseerde database. Dat is dus een database zonder genummerde kolommen en tabellen en met koppelingen.

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 -
 
Paul Weiss

Paul Weiss

31/08/2023 19:40:47
Quote Anchor link
hoi arien. Begrijp niet helemaal wat je bedoeld. als ik meerdere titels kan hebben voor een html blok dan kan ik niet titel1 en titel2 gebruiken? Kan natuurlijk ook titel_a en titel_b gaan gebruiken uiteraard. vertikaal komen alleen de waardes te staan. een variable is verder toch geen waarde. of ik begrijp je verkeerd. Kun je een voorbeeld geven wat je precies bedoeld? bedankt.

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
 
- Ariën  -
Beheerder

- Ariën -

31/08/2023 19:52:22
Quote Anchor link
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.
Gewijzigd op 31/08/2023 19:55:08 door - Ariën -
 
Paul Weiss

Paul Weiss

31/08/2023 20:54:44
Quote Anchor link
- 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.


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.
 
- Ariën  -
Beheerder

- Ariën -

31/08/2023 21:19:12
Quote Anchor link
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?
 
Paul Weiss

Paul Weiss

31/08/2023 22:18:33
Quote Anchor link
zoals ik zei. is ook een persoonlijke keuze. een statische pagina is tevens ook sneller en vergt normaal gesproken juist geen onderhoud althans als je lokale scripts gebruikt zoals ik dat doe. Ik maak al enige tijd statische sites voor klanten en draaien al jaren zonder onderhoud. Maar ik gebruik dus geen external scripting of styling. want in dat geval heeft een site wel evt. onderhoud nodig. Ik maak nu dus sites puur door in de code te duiken etc en kost tijd. Bovendien zijn klanten ook wispelteurig. dan willen ze dat en dan weer dit. daarom wil ik een builder maken waarbij de klant zelf de pagina's kan samenstellen. ze kunnen daarbij alleen kiezen uit een bepaalde selectie aan units als het ware. zijn ze uiteindelijk tevreden dan zet ik deze online. Kost mij minder tijd en de klant krijgt doormiddel van wysiwyg direct te zien hoe het eruit ziet. uiteraard maak ik alleen sits voor klanten waarbij de site niet veranderd hoeft te worden. los van wellich een keer een andere foto of tekst op zijn tijd. Maar dat kan de klant dan weer zelf aanpassen indien nodig.
Gewijzigd op 31/08/2023 22:26:41 door Paul Weiss
 
Ivo P

Ivo P

31/08/2023 22:26:57
Quote Anchor link
Ik zou in plaats van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<h1 contenteditable="plaintext-only"><?php echo $rij1titel1; ?></h1>


meer zien in

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<h1 contenteditable="plaintext-only">{rij1titel1}</h1>


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.
 

Pagina: 1 2 3 4 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.