Avatar billede claushelth Nybegynder
08. februar 2003 - 15:24 Der er 8 kommentarer og
3 løsninger

transaktionsstyring med php

jeg er ikke klar over om dette er muligt, og om det overhovedet løser mit problem.

Jeg har en side der skal lave lave to udtræk fra den samme tabel, men uafhæningt af hinanden. dvs at jar vil have hevet nogle data ud 2 gange på en side, men de skal vises forskelligt.

Jeg åbner og lukker databasen hvergang (dvs 2 gange), men får denne fejl:

Fatal error: Cannot redeclare aabn_forbindelse_og_vaelgdb() (previously declared in c:\apache\htdocs\hj_funktioner\db_funktioner.php:5) in c:\apache\htdocs\hj_funktioner\db_funktioner.php on line 3

Fejlen kommer når den skal til at åbne DB 2. gang.

se selv fejlen i aktion: http://www.chelth.dk og tryk "Vis nyheder"

Jeg har forsøgt at låse DB på tabelniveau, men er ikke sikker på at det er gjort korrekt, men det er ikke det der giver fejl.

Det lyder måske lidt mærkeligt, at jeg vil vise 2x de samme data på siden, men det er problemet er også når jeg vil indsætte en ny artikel, og det er her det helst skal virke korrekt, så man kan se den nyoprettede artikel med det samme.

Claus
Avatar billede arne_v Ekspert
08. februar 2003 - 15:34 #1
Nu er jeg ikke PHP mand men det lyder som du erklærer en
funktion to gange med samme navn "aabn_forbindelse_og_vaelgdb".
Avatar billede jakoba Nybegynder
08. februar 2003 - 15:37 #2
det lyder somom du styrer din databaseadgang igennem en klasse der er gemt væk i den inkluderede fil db_funktioner.php

hvis det er korrekt er det den kode vi skal kikke på.

måske er det ikke engang nødvendigt at rette noget. hvis blot det bruges korrekt.

mvh JakobA
Avatar billede claushelth Nybegynder
08. februar 2003 - 15:42 #3
ok... jeg kalder min DB via en funktion (funktionen er den samme hver gang), hvor jeg behandler min kald til min DB.

her er funktionen i min hjælpefil:

<?php
//Åben forbindelsen til DB og vælg DB
function aabn_forbindelse_og_vaelgdb()
{
  $server = "localhost";
  $bruger = "claushelth";
  $kodeord = "gotfred";
  $database = "chelthdb";


  if(!mysql_connect("$server","$bruger","$kodeord"))
  {
    udskriv_fejl("Kunne ikke oprette en forbindelse til MySQL.");
  }
  else
  {
    $conn = mysql_connect("$server","$bruger","$kodeord");
  }
  if(!mysql_select_db($database,$conn))
  {
    udskriv_fejl("Kunne ikke vælge databasen: $database");
  }
  return $conn;
}


//Luk forbindelsen til DB
function luk_forbindelse($conn)
{
  if(!mysql_close($conn))
  {
    udskriv_fejl("Kunne ikke lukke forbindelsen til MySQL!");
  }

}
?>

Andre funktioner findes også i denne fil til DB:

//Forespørgelser der returnerer data
function sql_spoerg_og_faa_svar($query)

//Forespørgelser der IKKE returnerer data.
function sql_spoerg($query)

//Udskriv fejl

function udskriv_fejl($fejl)
Avatar billede jakoba Nybegynder
08. februar 2003 - 15:45 #4
du skal blot lade være med at inkludere den fil een gang til.
Avatar billede claushelth Nybegynder
08. februar 2003 - 15:48 #5
ok...men det er lidt af et problem for mig så for den andet kald er med på alle undersider på hjemmesiden, så der skal den med....og den skal vel erkleres inden funktionerne kaldes...kan jeg spørge med en if-else om den er sat ind i forvejen ellers require()?
Avatar billede claushelth Nybegynder
08. februar 2003 - 15:50 #6
det er måske slet ikke en fordel at have denne hjælpe DB-fil?

Jeg syntes nu den var meget gos netop fordi den kom med nogle standard fejlmeddelelser indsat på siden, hvis det gik galt!
Avatar billede claushelth Nybegynder
08. februar 2003 - 15:57 #7
på min side (vis nyheder) kalder jeg først noget php kode som åbner for db og laver den første forsp., så lukker den igen.

så fortsætter siden med at færdig-gøre mit design med andre php kald til alm. html. Og så bliver der kaldt igen til en ny foresp. i samme tabel i noget nyt php-kode. Den åbner db, laver ny forsp. og lukker DB igen.

Er det grundliggende fordi jeg kalder funktionshjælpefilen 2 gange?

jakoba -> keder du nogle steder hvor man fortæller lidt om strukturopbygning af hjemmesider med php (hjemmesider/mapper/php-koder), for det er nok der at jeg er mest forviret. Jeg troede ellers jeg var ved at have fat på det!!

VH Claus
Avatar billede claushelth Nybegynder
08. februar 2003 - 16:10 #8
jeg kan jo se at det virker hvis jeg kun reqire hj.-filen en gang, men det hjælper mig jo kun lige i denne ene situation, da jeg på forsiden kun vil have vist den 2. forsp.

Nogen der kan hjælpe...evt med st bud på en smart struktur i php
Avatar billede claushelth Nybegynder
08. februar 2003 - 16:18 #9
ok...I kunne hjælpe mig med at få løst symptomet, men sygdommen er ikke bekæmpet :-)

Jeg løste det sådan her i hvert :



if (!$hj_fil)
{
  $hj_fil = require($_SERVER["DOCUMENT_ROOT"] . "/hj_funktioner/db_funktioner.php");
}

Men det kan umuligt være en holdbar løsning...
Jeg vil oprette et nyt ? omkring bud på ny struktur!
Avatar billede claushelth Nybegynder
08. februar 2003 - 16:19 #10
jakoba -> du må lige smide et svar hvis du vil have lidt points
Avatar billede jakoba Nybegynder
08. februar 2003 - 17:51 #11
ok, men gør det på den nemme måde: http://dk.php.net/manual/en/function.include-once.php

mvh JakobA
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester