List genereren uit DBase

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Arno van Zanten

Arno van Zanten

21/03/2023 19:01:23
Quote Anchor link
Hallo,

Ik ben bezig om een website te maken en om een hele lange html code te schrijven voor een form, wil ik alles in de DBase wegzetten. Echter kom ik tot de conclusie dat je wel alles kunt wegzetten, maar het ophalen ervan nu anders werkt.

wat ik nu alvast heb, is dit :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$sql
= 'SELECT * FROM options ORDER BY ID';
        $result = mysqli_query($connect, $sql);
        $news = mysqli_fetch_all($result, MYSQLI_ASSOC);
        
        foreach($options as $option)
            {

            echo '<label class='labels'>.'$option['option01']'.<input type='checkbox' id='.$option['option01'].' name='.$option['option01'].' value='.$option['option01'].'></label>';
            }

?>


Echter op ID '1' zijn 48 opties en elke optie heet option(xx) (de xx staat voor een nummer, bijvoorbeeld : option01, option02 etc..)
Dit gaat door tot 48 en elke option heeft een ingevoerde waarden, nu wil ik dus voor de form dat hij elke option ophaalt en dit in de page laadt.

Hoe kan ik ervoor zorgen dat hij elek option ophaalt met de weg geschreven waarde?
 
PHP hulp

PHP hulp

25/04/2024 17:47:13
 
- Ariën  -
Beheerder

- Ariën -

21/03/2023 19:40:14
Quote Anchor link
Ik neem van harte aan dat je geen losse velden hebt die je nummert, maar dat je records/items bedoelt.
Anders ben je sowieso verkeerd bezig door horizontaal uit te bouwen in plaats van verticaal.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$sql
= 'SELECT * FROM options ORDER BY ID';
        $result = mysqli_query($connect, $sql);
        while($data = mysqli_fetch($result))
            {

            echo '<label class="labels">.'$data['option']'.<input type="checkbox" id="'.$data['option'].'" name="'.$option['option01'].'" value="'.$option['option'].'"></label>';
            }

?>
 
Arno van Zanten

Arno van Zanten

21/03/2023 20:09:17
Quote Anchor link
Hmmmm,

ja dan betekend het 48 id inbouwen voor elk een aparte option. misschien wel beter.
 
- Ariën  -
Beheerder

- Ariën -

21/03/2023 20:12:30
Quote Anchor link
het veld ID kan je op Primairy Key zetten en AutoIncrement aan.
Vanaf dat moment heb je voor elk item/record die je aanmaakt een oplopend ID: 1,2,3,4 etc...

Of moet een item meerdere opties kunnen krijgen?
 
Arno van Zanten

Arno van Zanten

21/03/2023 20:21:47
Quote Anchor link
Eigenlijk is het alleen voor het ophalen van de opties, want als ik een nieuwe gebruiker invoer, wil ik dat hij gewoon de opties uit de dbase haalt.
Anders moet ik een enorme html code schrijven en voor elke optie een input veld maken.
Zo kan ik als ik klaar ben met het invoeren van de gebruiker, de opties gebruiken die geselecteerd zijn en die outputten naar de front end.
 
- Ariën  -
Beheerder

- Ariën -

21/03/2023 20:23:08
Quote Anchor link
Wat stellen die opties precies voor? Kan je ze een naam geven?

Dus als voorbeeld en bij wijze van spreke wil je bijvoorbeeld een item, laten we bijvoorbeeld een persoon zeggen, de opties: schepje, strandstoel en parasol geven?
Gewijzigd op 21/03/2023 20:24:32 door - Ariën -
 
Arno van Zanten

Arno van Zanten

21/03/2023 20:41:06
Quote Anchor link
zoiets ja

Toevoeging op 21/03/2023 20:42:27:

Maar even een andere vraag tussendoor, hoe haal ik in PhpMyAdmin een ID gap weg?
Ik heb nu ID 1, ID 2 en dan ineens ID 6, hoe haal ik die gap weg?
 
- Ariën  -
Beheerder

- Ariën -

21/03/2023 20:47:59
Quote Anchor link
Waarom zou je die leegte weg willen? Stel dat er ergens nog een 3 is gekoppeld, en je hangt er een nieuw item met nummer 3 aan, dan zit je jouw data te vernachelen met foute koppelingen.

Als je meerdere opties wilt koppelen aan een item, dan moet je een tussen tabel gebruiken met twee entiteit-tabellen.

Je hebt de tabel met Opties, waarbij elke omschreven optie een uniek ID-nummer heeft.
Je hebt de tabel Gebruikers, waarbij elke gebruiker een uniek ID-nummer heeft.
Je hebt een tabel met OptiesGebruikers waarin je per record het ID van de optie noemt, en het ID van de gebruiker.
 
Arno van Zanten

Arno van Zanten

21/03/2023 20:49:11
Quote Anchor link
De database wordt nu pas opgebouwd en ik moet die gap weg hebben.
 
- Ariën  -
Beheerder

- Ariën -

21/03/2023 20:50:27
Quote Anchor link
TRUNCATE tabel voor het gemak.

Verder maakt die ID gap weinig uit, tenzij je iets van OCD hebt :-P
Gewijzigd op 21/03/2023 20:51:28 door - Ariën -
 
Arno van Zanten

Arno van Zanten

21/03/2023 20:51:28
Quote Anchor link
Hmmm, dat hebben ze uitgeschakeld
 
- Ariën  -
Beheerder

- Ariën -

21/03/2023 20:52:38
Quote Anchor link
Raar, waarom zou je dat niet mogen?
Anders maak je de tabel opnieuw aan.
 
Arno van Zanten

Arno van Zanten

21/03/2023 21:04:35
Quote Anchor link
heb ik al
 
- Ariën  -
Beheerder

- Ariën -

21/03/2023 21:33:46
Quote Anchor link
Mooi! :-)
 
Arno van Zanten

Arno van Zanten

21/03/2023 22:31:38
Quote Anchor link
Even deze tussendoor
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
<?php
    $datahost
= "localhost";  // dbase hostname
    $datauser = "knip"; //dbase username
    $datapass = "knip"; // dbase password
    $dataname = "knip"; // dbasename

    $connect=mysqli_connect($datahost, $datauser, $datapass, $dataname) or die("Connection Failed");
    $db = mysqli_select_db($connect, $dataname);
    
    if(!$connect) {
        echo "Not Connected";
    }


        $sql = 'SELECT * FROM options ORDER BY ID';
        $result = mysqli_query($connect, $sql);
        $Option = mysqli_fetch_all($result, MYSQLI_ASSOC);
        
        foreach($Option as $options)
            {

            echo "<label class='labels'>".$options['option']."<input type='checkbox' id='".$options['option']."' name='".$options['option']."' value='".$options['option']."'></label>";
            }

?>

Krijg steeds deze fout:
Quote:
Deze pagina werkt nietsexy-devil.nl kan dit verzoek momenteel niet verwerken.
HTTP ERROR 500

en met de F12 met chrome, deze fout:
Quote:
crbug/1173575, non-JS module files deprecated.

en
Quote:
No resource with given URL found


Wat doe ik fout?
Gewijzigd op 21/03/2023 23:06:21 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

21/03/2023 22:45:21
Quote Anchor link
Moet je even in de error log kijken. Of error reporting aanzetten.
 
Arno van Zanten

Arno van Zanten

22/03/2023 01:16:48
Quote Anchor link
Fatal error: Uncaught mysqli_sql_exception: No such file or directory in /data/sites/web/sexy-devilnl/www/test/services.php:14 Stack trace: #0 /data/sites/web/sexy-devilnl/www/test/services.php(14): mysqli_connect('localhost', 'sexyde_admin', 'password', 'sexyde_services') #1 {main} thrown in /data/sites/web/sexy-devilnl/www/test/services.php on line 14

Toevoeging op 22/03/2023 01:34:53:

Opgelost, maar nu krijg ik deze melding

Quote:
Warning: Undefined array key "option" in /data/sites/web/sexy-devilnl/www/test/services.php on line 29


dit is de code op lijn 29
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<label class='labels'>".$options['option']."<input type='checkbox' id='".$options['option']."' name='".$options['option']."' value='".$options['option']."'></label>";
?>


Toevoeging op 22/03/2023 01:39:06:

Ook alweer opgelost, sorry mensen voor de overlast.
 
Ivo P

Ivo P

22/03/2023 09:35:26
Quote Anchor link
Over je aaneensluitende rij ID's:

Wat nu als je straks option met id = 12 wilt verwijderen? Ga je dan options 13 tot en met 129 allemaal 1 positie opschuiven? Dat wordt een niet te overziene ramp als je dat met een gevulde database doet (hooguit als je foreign key restrictions hebt aangelegd met een "on update cascade" zou het misschien goed gaan.

Daarnaast: je gebruikt nu ORDER BY ID.
Ook dat is niet slim: een gat in je rij waar id=12 is verwijderd geeft geen probleem, want id=13 komt nog steeds ná id=11.

Maar nu wil je na option 10 nog een option plaatsen. id=10.5 zal niet mogelijk zijn (geen INT). Die nieuwe optie krijgt van de auto-increment id=130.

Daarom zou je er beter aan doen om een volgorde kolom toe te voegen.
In eerste instantie zou je daarvoor kunnen gebruiken dat die kolom gevuld wordt met dezelfde waarde als het id. (of misschien beter nog: met id*10. Dan heb je een volgorde nummer 10, 20 etc. Daarmee dus ook bij id=10 een volgorde=100 en id=11 met volgorde=110.
Dat nieuwe record dat id=130 heeft, geef je volgorde=105 en voilà hij staat er tussen op z'n plek. Pas als je 9 records tussen de oorspronkelijke records hebt geschoven, is je vrije ruimte op.

ID kolommen dienen alleen om een record aan te kunnen wijzen. Het heeft geen betekenis. Niet in dat het opvolgend moet zijn, niet in dat er een volgorde uit af te leiden is.
Kijk anders eens naar je BSN. Dat is een nummer van 9 cijfers. daaruit is niets af te leiden: niet wanneer je geboren bent, niet wat je geslacht is (wel in België), niet van wie je familie bent. En toch werkt dat.

Dus:
id alleen te gebruiken als je 1 record wilt aanwijzen. Zie de url van deze pagina: 104656 is kennelijk het id van dit topic.
Maar de lijst met topics is gesorteerd op datum van aanmaak dan wel datum laatste aanpassing.

Het is een denkwijze je je misschien eigen moet maken, maar doe dat voor je hele site gebouwd is en maakt dat de sortering afhangt van de volgorde van de idnummers en dat het een aaneengesloten rij is.
 
- Ariën  -
Beheerder

- Ariën -

23/03/2023 14:42:28
Quote Anchor link
Warning: Undefined array key "option" betekent dat: je de index, en dus ook het veld 'option' aanroept. Die infeite niet blijkt te bestaan.
Gewijzigd op 23/03/2023 14:44:44 door - Ariën -
 
Ivo P

Ivo P

23/03/2023 16:10:16
Quote Anchor link
eerder gebruikte je de index "option01" ipv "option"
 
- Ariën  -
Beheerder

- Ariën -

23/03/2023 16:28:21
Quote Anchor link
Ivo P op 23/03/2023 16:10:16:
eerder gebruikte je de index "option01" ipv "option"

Ja, dat was eerst, voordat ik hem de tip gaf om 'horizontaal' te werken i.p.v. verticaal en tig oplopende velden aan te maken.
 

Pagina: 1 2 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.