Savner en CREATE TABLE i app.php

Hvordan laver man en "public function CreateTable" i app.php.??
Jeg kunne forestille mig i første omgang med en enkelt kolonne ("id" AI) og så ville mit næste spørgsmål naturligvis være: Hvordan med "public function 'tilføj kolonne i'Table"?
(Begge dele som/til en del til administrationssiderne)??
Jeg har desværre kun de 40 points til rådighed
Med venlig hilsen
Steen

Hej @Steen
Først og fremmest vil jeg sige, at det ikke er idéen med App.php at lave tabeller og så videre dynamisk. Men derimod at manipulere de allerede eksisterende. Fordi, får at lave en funktion som kan den slags. Kræver det at brugeren (du logger ind på MySQL med) har rettigheder til den slags. (At kunne lave tabeller m.m.) Hvad oftest ikke er tilfældet, ved eksempelvis et webhotel.
Udover det, så dét med dynamisk "on-the-fly" at lave tabeller kan være lidt noget rod og give dig hovedpine senere hen. Det er meget bedre at lave en tabel igennem eksempelvis phpMyAdmin. For så har du fuldt ud styr på hvad og hvordan din database ser ud. Dog med alt det her sagt, så er det selvfølgelig ikke umuligt.
Du kan benytte dig af SQL-sproget tl det hele. Ligesom den gør for dig med phpMyAdmin. Eller når du trækker data ud, sætter ind m.m.
Her er et eksempel på en public function CreateTable();
public function CreateTable($table_name) {
try {
// så vi kan få fejlbeskeder
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// sql til at lave din database tabel
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY
)";
// prøv at lav databasen
$conn->exec($sql);
} catch (PDOException $e) {
// får vi en fejl, viser vi den efter vores sql kode
echo $sql . "<br>" . $e->getMessage();
}
}
// Vi kan nu kalde funktionen med eksempelvis:
$app->CreateTable("navn_paa_tabel");
Der er mange ting som kan gå galt her, så det er en af grundene til at man normalt ikke gør det i PHP kode.
Men overstående er en måde at lave et enkel tabel på, med et id som er sat til auto Increment og primary.
Jeg håber at det fik dig lidt på vej. Jeg ville dog som sagt, virkelig sætte spørgsmålstegn ved - om du overhovedet behøver at din PHP kode kan lave tabeller. Du kan selvfølgelig ændre i $sql delen så meget du vil, så du laver præcis det du vil have.
@dhh
d. 28.11.2016 kl. 10:40 Med venlige hilsner
Daniel H. Hemmingsen (@dhh)

#1
Tak skal du have - hurtigt og effektivt.
Det er vist lige det, jeg eftersøgte - jeg har dog været lidt forud i forhold til at skulle bruge det (jeg følger kurset "Byg et medlemssystem" slavisk, selvom jeg har en smule kendskab til php i forvejen).
Problemet/opgaven er at lave et lønberegningssystem, der kan indeholde flere overenskomster med flere undergrupper og satser med gældende periode for hver undergruppe - disse skal kunne oprettes løbende alt efter hvor langt jeg er kommet (og ved oprettelsen/indførelsen af ny overenskomst), og med det i én tabel, vil tabellen blive fuldstændig uoverskuelig (relationsdatabase(?))
Tak for et eminent kursus - der er meget, jeg ikke har forstået før, som nu er faldet på plads.
Med venlig hilsen
Steen

#2
Det er sådan noget man bruger forskellige tabeller til, ja. Men i stedet for at lave en ny tabel hele tiden. Så har man en hovedtabel, med informationen. Og en anden tabel som virker som ét kartotek.
Lidt ala. at have alle papirene på bordet. Give dem alle et nummer, og så indeksere dem i en anden tabel.
Det er noget vi dog ikke har gået ret meget ind i, at "linke" tabeller sammen og lave et mere udvidet/advanceret system. Men det er sådan man gør det. Man laver strukturen først og så følger den. (Du kan evt. søge på JOIN i SQL, så kan du nu nok finde nogle simplificerede eksempler omkring det.)
Redigeret af
@dhh
d. 28.11.2016 kl. 13:29 Med venlige hilsner
Daniel H. Hemmingsen (@dhh)