Avatar billede fritter Nybegynder
15. november 2002 - 12:05 Der er 64 kommentarer og
1 løsning

Læg 2 eller flere tal sammen

Hejsa.

Jeg har en MySql database hvor der bliver oprettet nogle data. F.eks er der et felt der hedder pris, hvor man når man så har lavet noget bliver registreret i databasen med værelses nummer (Jeg simulerer et hotel), dato og tid, pris og ydelse. Nu vil jeg gerne have, at hvis det enkelte værelse ser f.eks flere film i løbet af deres ophold, bliver udskrevet og prisen for de forskellige lagt sammen i et PHP script.
Det eneste jeg lige mangler er at få prisen lagt sammen igennem PHP.
Mvh
Fritter
Avatar billede Slettet bruger
15. november 2002 - 12:12 #1
$tal1 = 293;
$tal2 = 116;

$tal3 = $tal1 + $tal2;


??
Avatar billede tipsen Nybegynder
15. november 2002 - 12:17 #2
klasse :-)
Avatar billede fritter Nybegynder
15. november 2002 - 12:18 #3
Ja, det lyder meget sandsynligt, men problemet ved dette er, at det hele skal forgå automatisk. Det vil sige at det jo er forskelligt hvor mange gange man ser en film eller noget. Man kan jo risikere at de ser en film 30 gange i løbet af deres ophold.
Avatar billede mjl Nybegynder
15. november 2002 - 12:19 #4
Så skal du jo bare hente SUM af felterne i din DB
Avatar billede tipsen Nybegynder
15. november 2002 - 12:21 #5
fritter: Problemer er så, at der findes hundrevis af forskellige svar til et så generelt formuleret spørgsmål, da svaret afhænger af din eksisterende kode samt af din database-struktur!

NB: Du skal bruge "Svar" når du reelt set besvarer dit spørgsmål eller ønsker at lukke det!
Avatar billede mjl Nybegynder
15. november 2002 - 12:21 #6
$result=mysql_query("SELECT SUM(det_hele) AS kr_ialt FROM din_base WHERE bruger = 'bruger_1'");
Avatar billede fritter Nybegynder
15. november 2002 - 12:21 #7
Hvad mener du? Hvordan gøres det. Jeg er ikke nogen haj til hverken PHP eller MySQL. Det var først i sidste uge, jeg begyndte at arbejde med det.
Avatar billede mjl Nybegynder
15. november 2002 - 12:22 #8
Se ovenfor...
Avatar billede fritter Nybegynder
15. november 2002 - 12:22 #9
Ahhh. Det må jeg prøve. Jeg giver besked hvis det virker.
Avatar billede mjl Nybegynder
15. november 2002 - 12:23 #10
<?
$result=mysql_query("SELECT SUM(det_hele) AS kr_ialt FROM din_base WHERE bruger = 'bruger_1'");
$row=mysql_fetch_array($result);
echo $row["kr"];
?>
Avatar billede mjl Nybegynder
15. november 2002 - 16:34 #11
Hvad så "pomes" fritter - kom du videre, eller gik det hele i selvsving!? :o)
Avatar billede tipsen Nybegynder
15. november 2002 - 17:21 #12
Rettelse:

<?
$result=mysql_query("SELECT SUM(det_hele) AS kr_ialt FROM din_base WHERE bruger = 'bruger_1'");
$row=mysql_fetch_array($result);
echo $row["kr_ialt"];
?>

eller bare:

<?
$result=mysql_query("SELECT SUM(det_hele) AS kr_ialt FROM din_base WHERE bruger = 'bruger_1'") or die(mysql_error());
$beloeb = mysql_result($result,0);
echo $beloeb;
?>
Avatar billede mjl Nybegynder
15. november 2002 - 17:44 #13
Tak - den der kr kontra kr_ialt overså jeg lige - ellers er det jo ok - ikk'?
Avatar billede fritter Nybegynder
16. november 2002 - 15:36 #14
Hej folkens. Nu har jeg siddet og studeret jeres eller glimrende forslag, men jeg kan bare ikke få lortet til at virke. Jeg får fejlen: Warning: Unable to jump to row 2 on MySQL result index 2 in c:\programmer\easyphp\www\index.php on line 50
Jeg vedlægger lige koden, så kan I måske se hvor det går galt.

<html>
  <body>

<?
  if($soeg){

    $db = mysql_connect("127.0.0.1", "root");
    mysql_select_db("Account",$db);

    $foresp = mysql_query("SELECT * FROM hotel WHERE vaerelse LIKE '%$query%'");
 
    echo mysql_num_rows($foresp)." Resultat(er) fundet<BR><BR>";

    while($data=mysql_fetch_array($foresp)){
      echo "Værelse    : $data[0]<BR>";
      echo "Dato og Tid : $data[1]<BR>";
      echo "Pris i kr.  : $data[2]<BR>";
      echo "Ydelse      : $data[3]<BR><BR><BR>";
    }
    echo "<FORM METHOD=POST ACTION=$PHP_SELF>";
    echo "<INPUT TYPE=SUBMIT VALUE=Tilbage>\t";
        echo "<INPUT TYPE=HIDDEN VALUE=$query>";
        echo "<INPUT TYPE=SUBMIT NAME=Slet VALUE=Slet>\t";
       
   
 
    echo "<INPUT TYPE=SUBMIT NAME=Print VALUE=Udskriv>";
 

  }elseif ($Slet) {
   
    $db = mysql_connect("127.0.0.1", "root");
        mysql_select_db("Account",$db);
     
    echo "Databasen er nu slettet";
   
   
      echo "<FORM METHOD=POST ACTION=$PHP_SELF>";   
      echo "<INPUT TYPE=SUBMIT VALUE=Tilbage>";

    mysql_query("DELETE FROM hotel WHERE vaerelse LIKE '%$query%'");

  }elseif ($Print) {
      $db = mysql_connect("127.0.0.1", "root");
        mysql_select_db("Account",$db);
   
    echo "Regning ";
   
    $result=mysql_query("SELECT Pris AS kr_ialt FROM hotel WHERE vaerelse = '%$query%'") or die(mysql_error());
    $beloeb = mysql_result($result,2);
    echo $beloeb;
             



echo "<INPUT TYPE=SUBMIT NAME=Print VALUE=Print Onclick=print()>";
echo "<FORM METHOD=POST ACTION=$PHP_SELF>";   
      echo "<INPUT TYPE=SUBMIT VALUE=Tilbage>";

}else{
?>
    <FORM METHOD=POST ACTION=<?echo $PHP_SELF;?>>
      Indtast Værelses Nummer
      <INPUT TYPE=TEXT  NAME="query">
      <INPUT TYPE=SUBMIT NAME="soeg" VALUE=Søg>
      <INPUT TYPE=Reset  VALUE=Nulstil>
    </FORM>
<?
  }
?>     
  </body>
</html>
Avatar billede mjl Nybegynder
16. november 2002 - 15:56 #15
Hvorfor det der ($result,2);
Avatar billede fritter Nybegynder
16. november 2002 - 16:02 #16
Det er også en fejl. Jeg prøvede at eksperimentere lidt med koden, så jeg ændrede den til 2 istedet for 0. Den skriver det samme om jeg bruger 2 eller 0. Désuden har jeg ingen anelse om hvad det 0 skal gøre godt for, men nu er det ihvertfald blevet ændret tilbage til 0
Avatar billede tipsen Nybegynder
16. november 2002 - 16:39 #17
Man bruger mysql_result hvis man vil have meget få resultater ud af et resultatsæt - ofte ét enkelt resultat/felt!

Læs mere om funktionen på:

http://dk.php.net/manual/en/function.mysql-result.php

-det er generelt en god ide, hvis man ikke ved hvordan en funktion bruges...
Avatar billede mjl Nybegynder
16. november 2002 - 17:43 #18
$result=mysql_query("SELECT Pris AS kr_ialt FROM hotel WHERE vaerelse = '%$query%'") or die(mysql_error());
    $beloeb = $result["pris"];
    echo $beloeb;
Avatar billede mjl Nybegynder
16. november 2002 - 17:44 #19
Arghhh....skulle ha' været en WHILE-fætter med...
Avatar billede mjl Nybegynder
16. november 2002 - 17:45 #20
$result=mysql_query("SELECT Pris AS kr_ialt FROM hotel WHERE vaerelse = '%$query%'") or die(mysql_error());
while ($beloeb = mysql_fetch_array($result)){
$beloeb = $result["pris"];
    echo $beloeb;
}
Avatar billede mjl Nybegynder
16. november 2002 - 17:47 #21
He he...

Sådan her - tror jeg:

$result=mysql_query("SELECT Pris AS kr_ialt FROM hotel WHERE vaerelse = '%$query%'") or die(mysql_error());
while ($saadan = mysql_fetch_array($result)){
$beloeb = $saadan["pris"];
echo $beloeb;
}
Avatar billede fritter Nybegynder
16. november 2002 - 17:55 #22
Funktionen kr_ialt, hvad gør den?
Avatar billede fritter Nybegynder
16. november 2002 - 18:01 #23
I må undskylde jeg spørger så meget, men jeg er som sagt ingen haj til MySQL eller PHP
Avatar billede fritter Nybegynder
16. november 2002 - 18:14 #24
Skal man ikke istedet for = skrive LIKE, som i .....hotel WHERE vaerelse LIKE '%$query%'?
Avatar billede mjl Nybegynder
16. november 2002 - 18:21 #25
Jo...når du bruger %%

Men din forespørgsel bør være værelse lig med noget bestemt:

værelse = '2'
Avatar billede mjl Nybegynder
16. november 2002 - 18:22 #26
Det er jo et bestemt værelse der spørges til og ikke et tilfældigt!!!
Avatar billede fritter Nybegynder
16. november 2002 - 18:25 #27
Og hvad med funktionen kr_ialt. Hvad gør den?
Avatar billede mjl Nybegynder
16. november 2002 - 18:28 #28
Sorry...det skal nok være sådan:

$result=mysql_query("SELECT Pris AS kr_ialt FROM hotel WHERE vaerelse = '%$query%'") or die(mysql_error());
while ($saadan = mysql_fetch_array($result)){
$beloeb = $saadan["kr_ialt"];
echo $beloeb;
}

Så ved du havd kr_ialt er...!!!
Avatar billede mjl Nybegynder
16. november 2002 - 18:28 #29
havd = hvad
Avatar billede fritter Nybegynder
16. november 2002 - 18:28 #30
Nu brugte jeg din sidste kode, og den melder ikke fejl på den, så mange tak for det, men tilgengæld skriver den ikke noget resultat ud. Jeg tjekkede min DB og der ligger 2 værdier på 40 og 45 og de skulle jo gerne skrives ud hvor de er lagt sammen til 85
Avatar billede mjl Nybegynder
16. november 2002 - 18:30 #31
2 sek.
Avatar billede mjl Nybegynder
16. november 2002 - 18:32 #32
<?
$result=mysql_query("SELECT SUM(pris) AS kr_ialt FROM din_base WHERE vaerelse = 'noget'");
$row=mysql_fetch_array($result);
echo $row["kr_ialt"];
?>

Prøv lige dette - og ret 'noget' til det det skal være....
Avatar billede mjl Nybegynder
16. november 2002 - 18:32 #33
...og din_base = hotel, selvfølgelig!
Avatar billede fritter Nybegynder
16. november 2002 - 18:41 #34
Det virker fint, hvis jeg ændrer "noget" til 100 som er det værelse hvor der er oprettet data til. Problemet er jo, at jeg gerne vil have at man bare indtaster et værelses nummer, og så søger programmet efter det værelse i databasen og udskriver det samlet resultat. Det virker bare ikke hvis jeg bruger '%$query%'
Avatar billede mjl Nybegynder
16. november 2002 - 18:45 #35
...vaerelse LIKE '%$query%'
Avatar billede mjl Nybegynder
16. november 2002 - 18:46 #36
...eller vaerelse = '$query'

$query bliver jo noget bestemt, efter indtastningen!!!
Avatar billede fritter Nybegynder
16. november 2002 - 18:50 #37
Jeg prøvede funktionen "...vaerelse LIKE '%$query%'" med det resultat at den lagde det samlede resultat sammen for alle værelserne (Det er der nok nogle gæster der ikke er helt tilfreds med:-))) Den anden funktion "...eller vaerelse = '$query'" skete der ikke noget ved.
Avatar billede fritter Nybegynder
16. november 2002 - 18:53 #38
Man kan vel godt have 2 elseif sætninger inde i hinanden?
Avatar billede fritter Nybegynder
16. november 2002 - 19:12 #39
Jeg forstår sgu heller ikke hvorfor det ikke virker nu. Nu synes jeg efterhånden at jeg har fået så mange gode forslag.
Avatar billede mjl Nybegynder
16. november 2002 - 19:28 #40
Kan du ikke lige smide hele koden op igen, sådan som den er nu?
Avatar billede fritter Nybegynder
16. november 2002 - 19:43 #41
Det er hermed gjort:


<html>
  <body>

<?
  if($soeg){

    $db = mysql_connect("127.0.0.1", "root");
    mysql_select_db("Account",$db);

    $foresp = mysql_query("SELECT * FROM hotel WHERE vaerelse LIKE '%$query%'");
 
    echo mysql_num_rows($foresp)." Resultat(er) fundet<BR><BR>";

    while($data=mysql_fetch_array($foresp)){
      echo "Værelse    : $data[0]<BR>";
      echo "Dato og Tid : $data[1]<BR>";
      echo "Pris i kr.  : $data[2]<BR>";
      echo "Ydelse      : $data[3]<BR><BR><BR>";
    }
    echo "<FORM METHOD=POST ACTION=$PHP_SELF>";
    echo "<INPUT TYPE=SUBMIT VALUE=Tilbage>\t";
        echo "<INPUT TYPE=HIDDEN VALUE=$query>";
        echo "<INPUT TYPE=SUBMIT NAME=Slet VALUE=Slet>\t";
       
   
 
    echo "<INPUT TYPE=SUBMIT NAME=Print VALUE=Udskriv>";
 

  }elseif ($Slet) {
   
    $db = mysql_connect("127.0.0.1", "root");
        mysql_select_db("Account",$db);
     
    echo "Databasen er nu slettet";
   
   
      echo "<FORM METHOD=POST ACTION=$PHP_SELF>";   
      echo "<INPUT TYPE=SUBMIT VALUE=Tilbage>";

    mysql_query("DELETE FROM hotel WHERE vaerelse LIKE '%$query%'");

  }elseif ($Print){
      $db = mysql_connect("127.0.0.1", "root");
        mysql_select_db("Account",$db);

$result=mysql_query("SELECT SUM(Pris) AS kr_ialt FROM Hotel WHERE vaerelse = '%$query%'");
$row=mysql_fetch_array($result);
echo $row["kr_ialt"];

echo "<INPUT TYPE=SUBMIT NAME=Print VALUE=Print Onclick=print()>";
echo "<FORM METHOD=POST ACTION=$PHP_SELF>";   
echo "<INPUT TYPE=SUBMIT VALUE=Tilbage>";   




}else{
?>
    <FORM METHOD=POST ACTION=<?echo $PHP_SELF;?>>
      Indtast Værelses Nummer
      <INPUT TYPE=TEXT  NAME="query">
      <INPUT TYPE=SUBMIT NAME="soeg" VALUE=Søg>
      <INPUT TYPE=Reset  VALUE=Nulstil>
    </FORM>
<?
  }
?>     
  </body>
</html>
Avatar billede mjl Nybegynder
16. november 2002 - 19:58 #42
Prøv dette:

<html>
<body>

<?
if($soeg){

    $db = mysql_connect("127.0.0.1", "root");
    mysql_select_db("Account",$db);

    $foresp = mysql_query("SELECT * FROM hotel WHERE vaerelse = '$query'");
 
    echo mysql_num_rows($foresp)." Resultat(er) fundet<BR><BR>";

    while($data=mysql_fetch_array($foresp)){
      echo "Værelse    : $data[0]<BR>";
      echo "Dato og Tid : $data[1]<BR>";
      echo "Pris i kr.  : $data[2]<BR>";
      echo "Ydelse      : $data[3]<BR><BR><BR>";
    }
    echo "<FORM METHOD=POST ACTION=$PHP_SELF>";
    echo "<INPUT TYPE=SUBMIT VALUE=Tilbage>\t";
        echo "<INPUT TYPE=HIDDEN VALUE=$query>";
        echo "<INPUT TYPE=SUBMIT NAME=Slet VALUE=Slet>\t";
       
   
 
    echo "<INPUT TYPE=SUBMIT NAME=Print VALUE=Udskriv>";
 

  }elseif ($Slet) {
   
    $db = mysql_connect("127.0.0.1", "root");
        mysql_select_db("Account",$db);
     
    echo "Databasen er nu slettet";
   
   
      echo "<FORM METHOD=POST ACTION=$PHP_SELF>";   
      echo "<INPUT TYPE=SUBMIT VALUE=Tilbage>";

    mysql_query("DELETE FROM hotel WHERE vaerelse = '$query'");

  }elseif ($Print){
      $db = mysql_connect("127.0.0.1", "root");
        mysql_select_db("Account",$db);

$result=mysql_query("SELECT SUM(Pris) AS kr_ialt FROM Hotel WHERE vaerelse = '$query'");
$row=mysql_fetch_array($result);
echo $row["kr_ialt"];

echo "<INPUT TYPE=SUBMIT NAME=Print VALUE=Print Onclick=print()>";
echo "<FORM METHOD=POST ACTION=$PHP_SELF>";   
echo "<INPUT TYPE=SUBMIT VALUE=Tilbage>";   




}else{
?>
    <FORM METHOD=POST ACTION=<?echo $PHP_SELF;?>>
      Indtast Værelses Nummer
      <INPUT TYPE=TEXT  NAME="query">
      <INPUT TYPE=SUBMIT NAME="soeg" VALUE=Søg>
      <INPUT TYPE=Reset  VALUE=Nulstil>
    </FORM>
<?
  }
?>     
  </body>
</html>
Avatar billede fritter Nybegynder
16. november 2002 - 20:44 #43
Desværre heller ikke nogen succes denne gang. Hvad havde du lavet af ændringer?
Avatar billede mjl Nybegynder
16. november 2002 - 20:49 #44
ændret '%$query%'
Avatar billede mjl Nybegynder
16. november 2002 - 20:50 #45
Har du flere felter (pris) med beløb i og med samme værelses nummer?
Avatar billede fritter Nybegynder
16. november 2002 - 20:50 #46
Men desværre hjalp det heller ikke. Kunne det tænkes at der er nogle ting som konflikter i koden?
Avatar billede mjl Nybegynder
16. november 2002 - 20:51 #47
Problemet er måske DB'en hvad hedder den? og hvad hedder dine felter?
Avatar billede fritter Nybegynder
16. november 2002 - 20:52 #48
Jeg har oprettet 2 forskellige priser til det samme værelse. Altså de har set 2 forskellige film med hver deres pris.
Min DB er som følger Database : Account
Tabel : hotel
Under hotel er der Værelse, Pris, Dato / Tid, Ydelse
Avatar billede fritter Nybegynder
16. november 2002 - 20:55 #49
Jeg bruger EasyPHP hvis det har nogen betydning
Avatar billede fritter Nybegynder
16. november 2002 - 20:55 #50
.........Og den er aktiv:-))
Avatar billede mjl Nybegynder
16. november 2002 - 20:55 #51
ok - her følger lige noget, der er MEGET vigtigt...!!!

Navnene på både DB, Tabel og hvert felt skal være stavet helt ens - også hvad angår store og små bogstaver - tjek det!!!!
Avatar billede mjl Nybegynder
16. november 2002 - 20:56 #52
...altså ens i DB'en og i din kode!
Avatar billede fritter Nybegynder
16. november 2002 - 21:02 #53
Det skulle være på plads nu, men det virker stadigvæk ikke
Avatar billede fritter Nybegynder
16. november 2002 - 21:06 #54
Jeg bruger PHPmyAdmin til at oprette Databasen med. Under feltet "Pris" er der nogle funktioner som jeg kan slå til.
Feltnavn = Pris
Datatype = INT
Længde/Værdi = 7
Attributter = Den er blank
Nul Værdi = Not null
Standard værdi = 0
Ekstra = Den er også blank
Avatar billede mjl Nybegynder
16. november 2002 - 21:24 #55
ok - er Pris med stort (P) eller lille (p) Du bruger jo stort i din kode - en god ide' er altid at lave navne med lille...
Avatar billede fritter Nybegynder
16. november 2002 - 21:26 #56
Det er med stort P alle steder, i DB såvel som i koden
Avatar billede mjl Nybegynder
16. november 2002 - 21:28 #57
Fint...prøv at sætte kr_ialt i citationstegn 'kr_ialt'

SELECT SUM(Pris) AS 'kr_ialt'
Avatar billede mjl Nybegynder
16. november 2002 - 21:29 #58
vaerelse står med småt?????
Avatar billede fritter Nybegynder
16. november 2002 - 21:34 #59
Jeg har ændret alt til småt; både i DB og i koden. Nu har jeg også sat citationstegn omkring samlet (Det har jeg ændret det til), men der sker stadig ingenting
Avatar billede mjl Nybegynder
16. november 2002 - 21:39 #60
<?
$result=mysql_query("SELECT SUM(Pris) AS samlet FROM Hotel WHERE vaerelse LIKE '$query'");
$row=mysql_fetch_array($result);
echo $row["samlet"];
?>
Avatar billede fritter Nybegynder
16. november 2002 - 21:42 #61
Det er også prøvet uden held. Hvad fanden gør jeg galt? Kan du se nogle ting galt med koden?
Avatar billede mjl Nybegynder
16. november 2002 - 21:47 #62
Nop...kan du ikke lige skrive navnet på alle felter i "hotel"
Avatar billede fritter Nybegynder
16. november 2002 - 21:52 #63
Feltnavn  Datatype Attributter Nulværdi Standardværdi Ekstra Handling
vaerelse  int(3)                  Nej        0              Ændre  Slet  Primær  Indeks  Unik  Fuldtekst 
dato/tid  datetime                Nej  0000-00-00 00:00:00    Ændre  Slet  Primær  Indeks  Unik  Fuldtekst 
pris  int(7)                      Nej        0              Ændre  Slet  Primær  Indeks  Unik  Fuldtekst 
ydelse  text                      Nej                        Ændre  Slet  Primær  Indeks  Unik  Fuldtekst
Avatar billede fritter Nybegynder
16. november 2002 - 22:01 #64
Databasen hedder "Account"
Avatar billede fritter Nybegynder
16. november 2002 - 22:09 #65
Jeg kom vidst til at acceptere dit svar, så du har fået de point jeg satte på højkant. Det var også velfortjent:-))
Jeg opretter lige et nyt spørgsmål under navnet "Fritter" Så kan vi forsætte der. Så sætter jeg nogle flere point på højkant til dig
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