Avatar billede stefmeister Nybegynder
12. september 2004 - 15:42 Der er 20 kommentarer og
1 løsning

Hvorfor skriver den det samme så mange gange

Hej

Jeg har lavet en indkøbskurv og det virker da også nogenlunde, men når brugeren trykker på Tøm Kurv, så tømmer den variablen og skal så skrive "Kurven er tom", men istedet så skriver "Kurven er TomKurven erTomKurven er TomKurven er Tom" etc. det skriver den RET mange gange. Hvad er der galt?

--------------- vis_kurv.php --------------

<html>
<head>
<title>Vis Kurv</title>
<?
session_start();


$con = mysql_connect( "localhost", "BRUGERNAVN", "KODEORD" );
mysql_select_db( "DATABASENAVN" );

$sql = "SELECT FILMID,FILMNAVN,GENRE,DVDER,LINK,PRODUKTION,PRIS FROM FILMTABEL";
$qh = mysql_query( $sql );
while ( $row = mysql_fetch_assoc( $qh ) )

    if(!isset($_SESSION['kurv1'])) {

    echo 'Kurven er tom';

    } else {

echo '<p><a href="toem_kurv.php">Tøm Kurv</a></p>';
echo '<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">

  <tr>
    <td width="33%" align="center"><font color="#0033CC"><b>FilmID</b></font></td>
    <td width="33%" align="center"><font color="#0033CC"><b>Film</b></font></td>
    <td width="33%" align="center"><font color="#0033CC"><b>Pris</b></font></td>
  </tr>
</tabel>';


    foreach ($_SESSION['kurv1'] as $item) {
    $sql = "SELECT FILMNAVN, PRIS FROM FILMTABEL WHERE FILMID = $item";
    $qh = mysql_query( $sql );
    while ( $film = mysql_fetch_assoc( $qh ) )

      echo '<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">

  <tr>
    <td width="33%"><font color="black" size="2">&nbsp;&nbsp;'.$item.'</font></td>
    <td width="33%"><font color="black" size="2">&nbsp;&nbsp;'.$film[FILMNAVN].'</font></td>
    <td width="33%"><font color="black" size="2">&nbsp;&nbsp;'.$film[PRIS].'</font></td>
  </tr>
</tabel>';

    }

}
?>

------------- slut ----------------------


Den gør det også selvom jeg bytter rundt så if(isset(bla bla)) er omvendt.
Avatar billede dennismp Nybegynder
12. september 2004 - 15:45 #1
sæt din if(isset(.. ) før while() .. og put whilen ind i din else
Avatar billede exp Juniormester
12. september 2004 - 15:45 #2
$sql = "SELECT FILMID,FILMNAVN,GENRE,DVDER,LINK,PRODUKTION,PRIS FROM FILMTABEL";
$qh = mysql_query( $sql );
while ( $row = mysql_fetch_assoc( $qh ) )

    if(!isset($_SESSION['kurv1'])) {

    echo 'Kurven er tom';

    } else {


Den skriver det så længe der er indhold i databasen :-)

Du skal finde en måde at afgrænse SQL-queryen...
Avatar billede dennismp Nybegynder
12. september 2004 - 15:46 #3
Sådan her:
<html>
<head>
<title>Vis Kurv</title>
<?
session_start();


$con = mysql_connect( "localhost", "BRUGERNAVN", "KODEORD" );
mysql_select_db( "DATABASENAVN" );

$sql = "SELECT FILMID,FILMNAVN,GENRE,DVDER,LINK,PRODUKTION,PRIS FROM FILMTABEL";
$qh = mysql_query( $sql );
if(!isset($_SESSION['kurv1'])) {
  echo 'Kurven er tom';
} else {

while ( $row = mysql_fetch_assoc( $qh ) )


echo '<p><a href="toem_kurv.php">Tøm Kurv</a></p>';
echo '<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">

  <tr>
    <td width="33%" align="center"><font color="#0033CC"><b>FilmID</b></font></td>
    <td width="33%" align="center"><font color="#0033CC"><b>Film</b></font></td>
    <td width="33%" align="center"><font color="#0033CC"><b>Pris</b></font></td>
  </tr>
</tabel>';


    foreach ($_SESSION['kurv1'] as $item) {
    $sql = "SELECT FILMNAVN, PRIS FROM FILMTABEL WHERE FILMID = $item";
    $qh = mysql_query( $sql );
    while ( $film = mysql_fetch_assoc( $qh ) )

      echo '<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">

  <tr>
    <td width="33%"><font color="black" size="2">&nbsp;&nbsp;'.$item.'</font></td>
    <td width="33%"><font color="black" size="2">&nbsp;&nbsp;'.$film[FILMNAVN].'</font></td>
    <td width="33%"><font color="black" size="2">&nbsp;&nbsp;'.$film[PRIS].'</font></td>
  </tr>
</tabel>';
    }
}
?>
Avatar billede stefmeister Nybegynder
12. september 2004 - 15:53 #4
dennismp -> det virker fint så længe kurven er tom, men når den så ikke er tom, så skriver den Tøm Kurv omrking 70 gange.
Avatar billede terrak Nybegynder
12. september 2004 - 15:54 #5
eller:

    if(!isset($_SESSION['kurv1']) && !isset($printempty) ) {

    echo 'Kurven er tom';
    $printempty = 1;
    }

Den anden måde med at teste for session først, er dog mere korrekt, da det kræver mindre maskinkraft(dog en forsvindende og ubetydelig lille forskel).
Avatar billede dennismp Nybegynder
12. september 2004 - 15:57 #6
stefmeister; også selvom du flytter din if ud af while-løkken?
Avatar billede stefmeister Nybegynder
12. september 2004 - 16:42 #7
hmmm den gør det stadig... og nu har jeg endda rykket den HELT op, før end den overhoved connecter til databasen.
Avatar billede dennismp Nybegynder
12. september 2004 - 16:44 #8
kalder du filen direkte i browseren? eller er det via include()'s eller require()'s ?
Avatar billede stefmeister Nybegynder
12. september 2004 - 16:47 #9
filen?
Avatar billede stefmeister Nybegynder
12. september 2004 - 16:48 #10
jeg skriver til variablen sådan her:

    if(!isset($_SESSION['kurv1'])) {
        $_SESSION['kurv1'] = array();
        $_SESSION['kurv1'][] = $new;
    } else {
        $_SESSION['kurv1'][] = $new;
    }
Avatar billede dennismp Nybegynder
12. september 2004 - 16:49 #11
filen=vis_kurv.php
Avatar billede dennismp Nybegynder
12. september 2004 - 16:50 #12
skriver du http://www.hjemmesidensomjegarbejderpå.dk/vis_kurv.php ? eller bruger du en anden fil, som har en include('vis_kurv.php'); ?
Avatar billede stefmeister Nybegynder
12. september 2004 - 16:55 #13
aaaah...

jeg skriver den direkte i browseren.
Avatar billede stefmeister Nybegynder
12. september 2004 - 16:56 #14
jeg er ikke så syg til php så det andet der kan jeg ikke finde ud af.
Avatar billede dennismp Nybegynder
12. september 2004 - 17:01 #15
Prøv at paste det kode du har ligenu. Fatter ikke helt hvorfor den skriver det mere end een gang..
Avatar billede stefmeister Nybegynder
12. september 2004 - 17:04 #16
<html>
<head>
<title>Vis Kurv</title>
<?
session_start();

if(!isset($_SESSION['kurv1'])) {
  echo 'Kurven er tom';
} else {
$con = mysql_connect( "localhost", "BRUGERNAVN", "KODEORD" );
mysql_select_db( "DATABASE" );

$sql = "SELECT FILMID,FILMNAVN,GENRE,DVDER,LINK,PRODUKTION,PRIS FROM FILMTABEL";
$qh = mysql_query( $sql );


while ( $row = mysql_fetch_assoc( $qh ) )


echo '<p><a href="toem_kurv.php">Tøm Kurv</a></p>';
echo '<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">

  <tr>
    <td width="33%" align="center"><font color="#0033CC"><b>FilmID</b></font></td>
    <td width="33%" align="center"><font color="#0033CC"><b>Film</b></font></td>
    <td width="33%" align="center"><font color="#0033CC"><b>Pris</b></font></td>
  </tr>
</tabel>';


    foreach ($_SESSION['kurv1'] as $item) {
    $sql = "SELECT FILMNAVN, PRIS FROM FILMTABEL WHERE FILMID = $item";
    $qh = mysql_query( $sql );
    while ( $film = mysql_fetch_assoc( $qh ) )

      echo '<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">

  <tr>
    <td width="33%"><font color="black" size="2">&nbsp;&nbsp;'.$item.'</font></td>
    <td width="33%"><font color="black" size="2">&nbsp;&nbsp;'.$film[FILMNAVN].'</font></td>
    <td width="33%"><font color="black" size="2">&nbsp;&nbsp;'.$film[PRIS].'</font></td>
  </tr>
</tabel>';
    }
}
?>
Avatar billede dennismp Nybegynder
12. september 2004 - 17:08 #17
Ret:
while ( $row = mysql_fetch_assoc( $qh ) )
til:
while ( $row = mysql_fetch_assoc( $qh ) ) {

og tilføj en } i slutningen af filen.
Avatar billede stefmeister Nybegynder
12. september 2004 - 17:10 #18
NICE nu virker det.
drop et svar.
Avatar billede dennismp Nybegynder
12. september 2004 - 17:13 #19
Yay! :)
Avatar billede Slettet bruger
12. september 2004 - 22:08 #20
Ret også lige </tabel> til </table>. HTML forstår ikke dansk ;-)
Avatar billede stefmeister Nybegynder
12. september 2004 - 23:13 #21
ok
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