Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  9 4015
Det jeg prøver meg på er å lage så få funksjoner som mulig til et prosjekt, som også skal være veldig fleksibelt og kunne brukes til alt.
Derfor har jeg en tabell med følgende:
id - recipient - type - data - date - target

Der legger jeg inn f.eks.
ID: 0
Recipient: _NULL_
Type: settings-for-website
Data: JSON-array (title, header, footer, default language)
Date: DDMMYY
Target: _NULL_

ID: 1
Recipient: _NULL_
Type: user-info
Data: JSON-array (username, profilepicture, email, country
Date: DDMMYY
Target: _NULL_

ID: 2
Recipient: Avsender
Type: message
Data: melding
Date: DDMMYY
Target: Mottaker

Skriver en enkel og uriktig kode under og håper på at det er mulig å forstå. Jeg ønsker å gjøre sånn:

Kode

<?php
function return($what,$id='') {
$query="select * from `altmuligtabellen`";
while($row=mysqli_fetch_array($query)) {

select-row type=$what where id:$id // eksempel

return $row;
}
Ovennevnte vet jeg nemlig ikke om går an...
Jeg har i utgangspunktet gjort det sånn:

Kode

if(isset($id) && $what) {
$query="select * from altmuligtabellen where type=$what AND id=$id;
return $row[];
}
Og så videre. Altså en spørring per funksjon.

Men her har jeg lyst til å høre med dere om det finnes en løsning for å bruke den eksisterende wildcard-spørringen og så i ettertid etterspørre kolonne og rad i PHP...

Håper at dette ble gjort forståelig. Det er mange år siden jeg har lekt med PHP og MySQL, så hvis det finnes en mulighet til å unngå å måtte skrive en egen spørring per formål, fortell gjerne meg om det.

Jeg gjør OBS på at det som er skrevet overfor er eksempler.


Så..?

Hmm, ser ut til at det var så enkelt som:

Kode

foreach($row as $key => $value) {
					if($key["type"]=="settings-for-website") {
					echo $value;
					}
				}
Jeg tok feil.
Glemte å fjerne test-arrayet som lå i index.php-fila, derfor fikk jeg inntrykket av at siste kodesnutt fungerte, når den i virkeligheten ikke gjorde noe som helst.

Noen?
Sist endret av Tysteren; 15. november 2021 kl. 13:26. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Trigonoceps occipita
vidarlo's Avatar
Donor
Kvifor vil du lagre det i ein relasjonsdatabase? Er ikkje document store bedre om du skal lagre dokumenter?
Sitat av vidarlo Vis innlegg
Kvifor vil du lagre det i ein relasjonsdatabase? Er ikkje document store bedre om du skal lagre dokumenter?
Vis hele sitatet...
Jeg er ikke sikker på om det er en terminologi du bruker når du nevner document og "dokumenter". Lyst til å si noe mer om det?

Jeg leker meg bare, lager ikke noe spesielt.
Hvis jeg ikke tar veldig feil så vil det være en dårlig idé å filtrere resultatene i ettertid dersom du ikke skal bruke alle resultatene siden du da vil hente svært mye data fra databasen som du egentlig ikke behøver.
Tabellen vil også bli ganske stor etterhvert.

Jeg vet heller ikke om jeg ville lagret konfigurasjoner som website setting i databasen. Det kan du lagre i en egen fil som inneholder featureflags og konfigurasjoner.
Trigonoceps occipita
vidarlo's Avatar
Donor
Relasjonsdatabaser er laga for å lagre relasjoner. SQL-databaser er generelt relasjonsdatabaser, dvs. at innhaldet har relasjoner.

T.d. kan du ha ein tabell med forfattere, og ein tabell med innlegg, der tabellen med innlegg henviser til tabellen forfattere for å knytte forfattere til innlegg. Det er ein relasjon.

Når du derimot forsøker å lagre generisk data, så har du åpenbart ikkje relasjoner, og då er gjerne document storage som MongoDB betre; den forsøker ikkje å opprette relasjoner, men lar deg spørre etter JSON-dokumenter basert på innhaldet i JSON-dokumenta.
Du kan se på eksempelet her: https://www.php.net/manual/en/functi...p#example-1710
Der looper de gjennom resultatene. Fortsetter du denne veien bør du og se på PDO: https://www.php.net/manual/en/book.pdo.php

Skal du bruke det til noe fornuftig er nok dokument-databaser veien å gå, PHP har også støtte for MongoDB: https://docs.mongodb.com/drivers/php/
Tusen takk for alle svarene
Nå sitter jeg og prøver å lære meg det grunnleggende bak det å oppdatere informasjonen på nettsiden i sanntid. Greit å kunne til en eller annen gang.
Prøver meg på en halvdårlig felleschat-lignende løsning. Prøver meg frem med forskjellige måter å lagre chat-meldingene på, og tenker for meg at det kunne ha vært dumt å lagre det i en MySQL-database, ettersom det kan bli mange chattemeldinger etterhvert. Det er selvfølgelig mulig å fjerne meldingene etterhvert, men hva ville dere ha gjort? Tekstfil, PDO, MySQL?
Trigonoceps occipita
vidarlo's Avatar
Donor
MySQL funker absolutt her.

Då har du typisk tabell med meldinger, og en med brukere. Då kan du ha relasjonen at ei melding har avsender og mottaker, som henviser til bruker-tabellen.

Det sagt så vil du etterkvart støte på problemer med skalering og levering av meldinger, ettersom du må polle databasen på eit vis. Ei meir elegant løysing er gjerne ein protokoll for meldingsutveksling, med eit køsystem, t.d. Jabber eller ein urelatert protokoll, som MQTT. Då vil du kunne fokusere på UI, og la softwarestacken som finst rundt t.d. MQTT ta seg av levering av meldinger.
Sitat av vidarlo Vis innlegg
MySQL funker absolutt her.

Då har du typisk tabell med meldinger, og en med brukere. Då kan du ha relasjonen at ei melding har avsender og mottaker, som henviser til bruker-tabellen.

Det sagt så vil du etterkvart støte på problemer med skalering og levering av meldinger, ettersom du må polle databasen på eit vis. Ei meir elegant løysing er gjerne ein protokoll for meldingsutveksling, med eit køsystem, t.d. Jabber eller ein urelatert protokoll, som MQTT. Då vil du kunne fokusere på UI, og la softwarestacken som finst rundt t.d. MQTT ta seg av levering av meldinger.
Vis hele sitatet...
Tusen takk. Jeg begynte også å tenke på at hvis jeg skulle gjøre alvor ut av dette, ville jeg kanskje gjort ting i Python isteden, og på et eller annet vis levert meldingene direkte til brukerne, og dermed ikke ha noe stort behov for å lagre meldingene lokalt. Jeg tenker på de andre chatteplattformene som finnes, der man ikke har mulighet til å se historikken fra før man logget seg inn. Tenker for meg at de plattformene kanskje fungerer på en lignende måte. Tror du det stemmer?
Sjekk ut WebSocket API, og f. eks Socket.IO. Eksempel på chat + implementasjon finnes her: https://socket.io/get-started/chat