v5.dk logo
Kom ind og besøg vores Discord Chat-community
Bliv medlem her eller læs mere om Discord her
1 stor kaffe i byen eller 1 hel md.
som Premium-medlem, valget er dit! :-)

Mere info Køb nu

Premium på v5.dk
v5.dk logo  v5.dk e-learning
Log på med Facebook
  • Log ind på v5.dk
  • Opret bruger
  • Log ind
  • v5.dk Premium
  • v5.dk Premium
  • Hvad siger vores kunder?
  • E-læring for begyndere
  • icon for WordPress 4 e-learning WordPress 4
  • icon for Office 365 e-learning Office 365
  • icon for Microsoft Word e-learning Microsoft Word
  • Bloggen for alle
  • E-læring for nørder
  • icon for PHP-programmering e-learning PHP-programmering
  • icon for iOS Programmering e-learning iOS Programmering
  • icon for Linux Server e-learning Linux Server
  • Bloggen for nørder
  • Arkiverede videoer
  • Fællesskab
  • Forum
  • Idéer og ønsker
  • Markedspladsen
  • v5.dk Premium
  • Gratis webhotel
  • Cloud-servere
  • Om v5.dk
  • Søg på v5.dk
  • Om v5.dk ApS
    • Om virksomheden
    • RSS-feeds og tjenester
    • Driftsmeddelelser
    • Presse-kit
    • Ledige jobs
    • Social Netværk
      • Facebook
      • Twitter
      • Instagram
    • Alt det andet
      • Forretningsbetingelser
      • Ophavsret og Copyright
  • Kontakt kundeservice
  • FAQ og Hjælp
    • Premium og abb.
    • Videoer og Afspiller
    • Forum og Points
    • Cloud-servers
  • Partner/Virksomhed
  • Partner-kanal
v5.dk logo mobile
  • Menu
  • Opret bruger

Fejlkode ved brug af CREATE TABLE i app.php - hjælp søges

  • v5.dk
  • Forum
  • PHP-programmering
  • Fejlkode ved brug af CREATE TABLE i app.php - hjælp søges
  • Sidevisninger: 3163 har set dette indlæg
Besvar #0Spørgsmål oprettet af @Steen | 3925 points
30 points ude 5 indlæg 6 år siden Spørgsmål besvaret
avatar
 

 Jeg fik en fin public function til min app.php, og den ligner lige dét jeg havde brug for, men:

Jeg får fejlkode når jeg kalder den med " <?php $app->CreateTable($_POST['okNavn']); ?>"

får jeg:

"Fatal error: Uncaught Error: Call to a member function setAttribute() on null in C:\xampp\htdocs\app.php:44 Stack trace: #0 C:\xampp\htdocs\Loenberegning\test.php(50): minAwesomeApp->CreateTable('Testtabel') #1 {main} thrown in C:\xampp\htdocs\app.php on line 44"

og linie 44 i app.php:

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

Jeg kan se, at den har fat i den rigtige POST (Testtabel), og jeg har forsøgt mig med alt jeg kan finde på (bl.a. at outline line 44 - og så kører den fejlfri gennem, bare uden at lave tabellen).

Hvis jeg er off topic, hører jeg gerne om hvor der er et forum, jeg kan stille denne slags spørgsmål.

 


Med venlig hilsen

Steensteenpedersens Signatur

avatar
 
Besvar#1 @db Admin kommenterede for 6 år siden

Hej  Steen @Steen   

Tak for dit indlæg her på forummet. createTable() er ikke en funktion som vi har udviklet, så det er svært for mig at hjælpe dig uden at kende yderligere til din kode. Kan du ikke sende relevante kode-stumper ind i indlægget her på vores forum, så kan vi bedre hjælpe dig.

Du sætter kode ind ved at bruge "Indsæt code"-knappen i vores editor:


Med venlige hilsner

Daniel Bahls Signatur   Daniel Bahl (@db)
   CEO – v5.dk ApS

avatar
 
Besvar#2 @Steen kommenterede for 6 år siden

Det drejer sig om nedenstående (som jeg fik i svaret på "Hvordan laver man en "public function CreateTable" i app.php.??"):

 

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 ingen tvivl om, at det var denne jeg manglede (hvis jeg ellers kan få den til at virke ).

Hvis du skulle undre dig over hvorfor jeg har brug for en sådan funktion kan dette (noget ubehjælpsomme - man er vel amatør) måske give dig en ide:

Billede uploadet af steenpedersen


Med venlig hilsen

Steensteenpedersens Signatur

avatar
 
Besvar#3 @Steen kommenterede for 6 år siden

Jeg kunne forestille mig, at fejlen ligger i, at koden ikke er skrevet til den app.php som bliver brugt i "Byg et brugersystem PHP" (og som jeg med kyshånd gør brug af ;-) ).

Jeg sidder selvfølgelig og "fedter lidt" med en tilpasning, men forstår ikke rigtigt koden - bortset fra, at det kun er nødvendigt at sende $table_name til CreateTable (altså ikke den $query, som skal sendes til de øvrige funktioner i app.php).

 

 


Med venlig hilsen

Steensteenpedersens Signatur

avatar
 
Besvar#4 @db Admin kommenterede for 6 år siden

Hej  Steen @Steen   

Jeg har nu haft tid til at bygge en funktion der er kompatibel med vores app.php fil, her er hvad du skal gøre:

1) Åbn app.php filen og indsæt denne kode et tilfældigt sted, på lige fod med de andre "public function"-linjer der allerede eksisterer.

Koden her laver en ny funktion, som vi kan kalde, der hedder "DatabaseCreateTable". Funktionen laver en ny Tabel i din database med 3 felter: id, navn og adresse.

public function DatabaseCreateTable($table_name) {
  
  try {
      // Rå SQL-kode der opretter en ny "Tabel" i din database:
      $query = "CREATE TABLE IF NOT EXISTS $table_name (
        id int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        navn varchar(20) NOT NULL,
        adresse varchar(30) NOT NULL
      )";
      // Kalder vores "Prepare" der forbereder ovenstående query
      $stmt = self::$db->prepare($query);
      // Eksekverer vores query
      $stmt->execute();
      // Returnerer status fra vores eksekvering
      return $stmt;

  } catch (PDOException $e) {
    // Catch fejlbesked og echo den ud
    echo 'Der opstod en fejl - fejlbesked: ' . $e->getMessage();
    exit;
  }
  
}

2) Lav en ny fil du kalder f.eks. test.php. Inde i denne fil, skal du indsætte følgende linjer, for at kalde den nye "DatabaseCreateTable"-funktion. F.eks. vil følgende kode, oprette en ny tabel i din database der hedder "MinNyeTabel".

<?php

// Inkluderer vores class
include("app.php");
$app = new minAwesomeApp;

$app->DatabaseCreateTable('MinNyeTabel');

Når du kører følgende, og logger ind i din database, har du nu den nye omtalte tabel:

Billede uploadet af db

Redigeret af db @db  d. 19.12.2016 kl. 19:24

Med venlige hilsner

Daniel Bahls Signatur   Daniel Bahl (@db)
   CEO – v5.dk ApS

Dette svar er accepteret af OP og tildelt 30 points
avatar
 
Besvar#5 @Steen svarede for 6 år siden

Det er så smukt, at man næsten får tårer i øjnene

Der går dog et par dage inden jeg får tid til at prøve det af for alvor - jeg skal (selvfølgelig)også lige rette til de rigtige (start-)kolonner startDato og slutDato (resten skal i lighed med tabeloprettelsen foregå fra "admin front end" (ALTER TABLE som jeg skal "lege lidt" med, inden det bliver et spørgsmål)

Tak for endnu et hurtigt svar.

Redigeret af Steen @Steen  d. 19.12.2016 kl. 21:40

Med venlig hilsen

Steensteenpedersens Signatur

Spørgsmålet er besvaret, men du er altid mere end velkommen til at skrive en kommentar!
avatar
 

Du er ikke logget ind

Du skal være logget ind på v5.dk før du kan benytte vores forum. Det er ganske gratis at oprette en bruger.

Opret en ny gratis bruger Log ind

Følger med i denne tråd

Steen

Forum kategorier

  • Generelt
  • Guides & Howto85
  • Offtopic / Andet160
  • Microsoft Office
  • Microsoft Word13
  • Microsoft Excel4
  • Microsoft PowerPoint0
  • Web og hjemmesider
  • Wordpress17
  • Operativsystemer
  • Apple Mac OS X14
  • Apple iOS28
  • Microsoft Windows4
  • Linux16
  • Teknologier
  • Netværk og WiFi3
  • Internet-tjenester9
  • Programmering
  • PHP-programmering125
  • iPhone-/Xcode-programmering9

Aktive forum-tråde lige nu

pentobarbital kaufen ohne rezept
gras kaufen online - grasthc.com
online marketing
Køb juridiske dokumenter såsom kørekort, pas, visum, opholdstilladelse og andre dokumenter
Køb juridiske dokumenter såsom kørekort, pas, visum, opholdstilladelse og andre dokumenter
Weed online kaufen
Er det værd at have en "portfolio"-hjemmeside!?
Fejlkode i form af bip-lyde ved opstart af gammel stationær PC
Bygget med af v5.dk
© Copyright 2006-2023 • Forretningsbetingelser • Copyright • Persondata- og Cookiepolitik
v5.dk ApS - Åbogade 15 - 8200 Aarhus N - CVR: 36902833
v5.dk logo
Hej, vi hedder v5.dk og vi laver e-learning på dansk

v5.dk er sat i verden for at gøre teknologi tilgængeligt og anvendeligt for både professionelle og almindelige brugere på alle niveauer.

93 200 555
  Skriv til os
v5.dk bruger cookies til at huske dine indstillinger, livechat samt til statistik
 

Alle vores priser er inkl. moms Sikker SSL-beskyttet forbindelse

Dankort og Visa-Dankort  Visa  Mastercard og Mastercard Junior  Maestro

  • Produkter
  • v5.dk Premium
  • Cloud-servers
  • v5.dk
  • Om v5.dk
  • Kunderne siger
  • Kontakt os
  • Presse
  • Stay updated
  • RSS & tjenester
  • Søg på v5.dk
  • Sitemap