Avatar billede benjaboy Nybegynder
28. januar 2009 - 16:19 Der er 33 kommentarer og
1 løsning

problem men IF?

Hejsa.

Jeg har et problem med IF.

Denne kode:

<?php
require_once "maincore.php";
require_once THEMES."templates/header.php";

$userid = $userdata['user_id'];

opentable("Konkurrence oversigt");

$sql = "SELECT * FROM ".$db_prefix."konkurrence";
$query = mysql_query($sql) or die(mysql_error());
while($result = mysql_fetch_assoc($query)){

$kpris = $result['kpris'];
$ktitel = $result['ktitel'];
$ktekst = $result['ktekst'];
$kid = $result['kid'];
$kbillede = $result['kbillede'];

$sql = "SELECT * FROM ".$db_prefix."konkurrencedeltager";
$query = mysql_query($sql) or die(mysql_error());
while($result1 = mysql_fetch_assoc($query)){

$kid1 = $result1['kid'];
$brugerid1 = $result1['bruger'];

if ($kid1!=$kid && $brugerid1!=$userid  )
{
openside("test $ktitel");
    echo'
<TABLE>




<TR ALIGN=LEFT>
<TD ALIGN=LEFT VALIGN=TOP WIDTH=100%>'.$ktekst.'<br><br>'.$kpris.' kr.<br><a target="_blank" href="/konkurrencebekreft.php?kid='.$kid.'&bid='.$userid.'">Deltag</a></TD>
<TD ALIGN=RIGHT VALIGN=TOP WIDTH=100%>


            <a target="_blank" href="/konkurrence.php?kid='.$kid.'">
                <img border="0" src="/images/konkurrence/'.$kbillede.'" align="center">
            </a>

</TD>
</TR>
</TABLE>
';
closeside();
}

}

}
closetable();
require_once THEMES."templates/footer.php";

?>
-----------------------------
Den skal virke sådan at hvis $kid og $userid ikke allerede er i tabel må den godt vise echo. men ellers må den ikke?

Nogle der kan hjælpe?

Mvh Benjamin
Avatar billede dkfire Nybegynder
28. januar 2009 - 16:49 #1
Du skal have lidt bedre styr på dine variabler.
Du bruger $query og $kid flere gange.
Hvor kommer $userdata['user_id'] fra ?
Og så længe du bruger while og en select *, vil du får en MASSE unødig data fra din database.
Avatar billede benjaboy Nybegynder
28. januar 2009 - 16:54 #2
$userdata['user_id'] henter den fra maincore.php.

Hvordan kan jeg lave det så der er mere styr på det?

Der er kun de to ting i den pågældende tabel så der kommer ikke mere med end det :)
Avatar billede dkfire Nybegynder
28. januar 2009 - 16:57 #3
Er der kun to ting i begge tabeller ?
Avatar billede benjaboy Nybegynder
28. januar 2009 - 17:05 #4
Nej i ".$db_prefix."konkurrence er der:
kpris
ktitel
ktekst
kid
kbillede

Og i ".$db_prefix."konkurrencedeltager er der:
kid
bruger
Avatar billede benjaboy Nybegynder
28. januar 2009 - 17:07 #5
Men jeg ved problemet ligger i den her if: if ($kid1!=$kid && $brugerid1!=$userid)

Fordi jeg har testet alt det andet uden den og det virker fint. og hvis man skriver:
echo $kid1;
echo $brugerid1

så virker det også :)
Avatar billede dkfire Nybegynder
28. januar 2009 - 18:43 #6
Og du har testet at der ligger noget i $kid og $userid ???

Prøv evt at lave følgende test: '
<?php
require_once "maincore.php";
require_once THEMES."templates/header.php";

$userid = $userdata['user_id'];

opentable("Konkurrence oversigt");

$sql = "SELECT * FROM ".$db_prefix."konkurrence";
$query = mysql_query($sql) or die(mysql_error());
while($result = mysql_fetch_assoc($query)){

$kpris = $result['kpris'];
$ktitel = $result['ktitel'];
$ktekst = $result['ktekst'];
$kid = $result['kid'];
$kbillede = $result['kbillede'];

$sql = "SELECT * FROM ".$db_prefix."konkurrencedeltager";
$query = mysql_query($sql) or die(mysql_error());
while($result1 = mysql_fetch_assoc($query)){

$kid1 = $result1['kid'];
$brugerid1 = $result1['bruger'];
echo '$kid : '.$kid .'<br>';
echo '$kid1 : '.$kid1.'<br>';
echo '$kid1!=$kid :'.(($kid1!=$kid)?'true':'false').'<br>';

echo '$brugerid1 : '.$brugerid1.'<br>';
echo '$userid : '.$userid.'<br>';
echo '$brugerid1!=$userid : '.(($brugerid1!=$userid)?'true':'false').'<br>';

echo '$kid1!=$kid && $brugerid1!=$userid : '.(($kid1!=$kid && $brugerid1!=$userid)?'true':'false').'<br>';

}

}
closetable();
require_once THEMES."templates/footer.php";

?>
Avatar billede benjaboy Nybegynder
28. januar 2009 - 19:00 #7
Den udskriver ikke noget? :)
Kun temaet. :)
Avatar billede dkfire Nybegynder
28. januar 2009 - 20:14 #8
Det er jeg ikke helt med på. Hvad mener du med kun temaet ??
Har du slået fejlbeskeder til ??

Den kode bør skrive noget ud så længe du har nogle rækker i begge tabeller.
Men lidt mere debug:
<?php
require_once "maincore.php";
//require_once THEMES."templates/header.php";

$userid = $userdata['user_id'];

//opentable("Konkurrence oversigt");

$sql = "SELECT * FROM ".$db_prefix."konkurrence";
echo '$sql : '.$sql.'<br>';
$query = mysql_query($sql) or die(mysql_error());
echo 'Antal rækker fundet : '.mysql_num_rows($query).'<br>';
while($result = mysql_fetch_assoc($query)){

$kpris = $result['kpris'];
$ktitel = $result['ktitel'];
$ktekst = $result['ktekst'];
$kid = $result['kid'];
$kbillede = $result['kbillede'];

$sql1 = "SELECT * FROM ".$db_prefix."konkurrencedeltager";
echo '$sql1 : '.$sql1.'<br>';
$query1 = mysql_query($sql1) or die(mysql_error());
echo 'Antal rækker fundet : '.mysql_num_rows($query1).'<br>';
while($result1 = mysql_fetch_assoc($query1)){

$kid1 = $result1['kid'];
$brugerid1 = $result1['bruger'];
echo '$kid : '.$kid .'<br>';
echo '$kid1 : '.$kid1.'<br>';
echo '$kid1!=$kid :'.(($kid1!=$kid)?'true':'false').'<br>';

echo '$brugerid1 : '.$brugerid1.'<br>';
echo '$userid : '.$userid.'<br>';
echo '$brugerid1!=$userid : '.(($brugerid1!=$userid)?'true':'false').'<br>';

echo '$kid1!=$kid && $brugerid1!=$userid : '.(($kid1!=$kid && $brugerid1!=$userid)?'true':'false').'<br>';

}

}
//closetable();
//require_once THEMES."templates/footer.php";

?>
Avatar billede benjaboy Nybegynder
28. januar 2009 - 20:18 #9
Nu skriver den dette:
$sql : SELECT * FROM getpen7_konkurrence
Antal rækker fundet : 1
$sql1 : SELECT * FROM getpen7_konkurrencedeltager
Antal rækker fundet : 0
Avatar billede dkfire Nybegynder
28. januar 2009 - 20:19 #10
Jamen så har du jo intet i den sidste tabel, så er det jo klart at den ikke viser noget.
Avatar billede benjaboy Nybegynder
28. januar 2009 - 20:24 #11
den skal jo netop vise noget for != betyder jo at hvis ikke er der skal det vises? :)
Avatar billede dkfire Nybegynder
28. januar 2009 - 20:47 #12
Jamen lige nu ligger der ikke noget i din tabel, så er det vel lidt dumt at forsøge at hente noget ud af den.

Og så kunne du jo gøre det lidt smartere ved:

<?php
require_once "maincore.php";
require_once THEMES."templates/header.php";

$userid = $userdata['user_id'];

opentable("Konkurrence oversigt");

$sql = "SELECT k.* FROM ".$db_prefix."konkurrence k WHERE k.kid NOT IN (SELECT d.kid FROM ".$db_prefix."konkurrencedeltager d WHERE bruger <> $userid)";
$query = mysql_query($sql) or die(mysql_error());
while($result = mysql_fetch_assoc($query)){

$kpris = $result['kpris'];
$ktitel = $result['ktitel'];
$ktekst = $result['ktekst'];
$kid = $result['kid'];
$kbillede = $result['kbillede'];

openside("test $ktitel");
    echo'
<TABLE>




<TR ALIGN=LEFT>
<TD ALIGN=LEFT VALIGN=TOP WIDTH=100%>'.$ktekst.'<br><br>'.$kpris.' kr.<br><a target="_blank" href="/konkurrencebekreft.php?kid='.$kid.'&bid='.$userid.'">Deltag</a></TD>
<TD ALIGN=RIGHT VALIGN=TOP WIDTH=100%>


            <a target="_blank" href="/konkurrence.php?kid='.$kid.'">
                <img border="0" src="/images/konkurrence/'.$kbillede.'" align="center">
            </a>

</TD>
</TR>
</TABLE>
';
closeside();


}


closetable();
require_once THEMES."templates/footer.php";

?>
Men jeg er ikke sikkert at det vil virker i andet end mysql5.
Måske der er nogen i mysql kategorien som kan lave den sql-sætning til mysql4.
Avatar billede dkfire Nybegynder
28. januar 2009 - 20:49 #13
"WHERE bruger" skal lige rettes til "WHERE d.bruger"
Avatar billede benjaboy Nybegynder
28. januar 2009 - 21:05 #14
hm den viser det den skal men hvis jeg indsætter kid og bruger i ".$db_prefix."konkurrencedeltager skulle den meget gerne ikke undskrive det.
Men det gør den altså?
Avatar billede dkfire Nybegynder
28. januar 2009 - 21:40 #15
Ja men jeg har nok også lavet lidt forkert :-|

$sql = "SELECT k.* FROM ".$db_prefix."konkurrence k WHERE k.kid NOT IN (SELECT d.kid FROM ".$db_prefix."konkurrencedeltager d WHERE d.bruger = $userid)";

eller måske

$sql = "SELECT k.* FROM ".$db_prefix."konkurrence k, ".$db_prefix."konkurrencedeltager d  WHERE k.kid != d.kid AND d.bruger = $userid";
Avatar billede benjaboy Nybegynder
28. januar 2009 - 22:41 #16
$sql = "SELECT k.* FROM ".$db_prefix."konkurrence k WHERE k.kid NOT IN (SELECT d.kid FROM ".$db_prefix."konkurrencedeltager d WHERE d.bruger = $userid)";

Den virkede :)
Mange tak for hjælpen. Kan man lave sådan at hvis den nu ikke skal skal skrive det i echo så skal den skrive det der står i en anden echo? ligesom else funktion? :)
Avatar billede dkfire Nybegynder
28. januar 2009 - 22:48 #17
Det kunne være noget ala:

<?php
require_once "maincore.php";
require_once THEMES."templates/header.php";

$userid = $userdata['user_id'];

opentable("Konkurrence oversigt");

$sql = "SELECT k.* FROM ".$db_prefix."konkurrence k WHERE k.kid NOT IN (SELECT d.kid FROM ".$db_prefix."konkurrencedeltager d WHERE d.bruger = $userid)";
$query = mysql_query($sql) or die(mysql_error());
if( $query && mysql_num_rows($query) > 0 ){
while($result = mysql_fetch_assoc($query)){

$kpris = $result['kpris'];
$ktitel = $result['ktitel'];
$ktekst = $result['ktekst'];
$kid = $result['kid'];
$kbillede = $result['kbillede'];

openside("test $ktitel");
    echo'
<TABLE>




<TR ALIGN=LEFT>
<TD ALIGN=LEFT VALIGN=TOP WIDTH=100%>'.$ktekst.'<br><br>'.$kpris.' kr.<br><a target="_blank" href="/konkurrencebekreft.php?kid='.$kid.'&bid='.$userid.'">Deltag</a></TD>
<TD ALIGN=RIGHT VALIGN=TOP WIDTH=100%>


            <a target="_blank" href="/konkurrence.php?kid='.$kid.'">
                <img border="0" src="/images/konkurrence/'.$kbillede.'" align="center">
            </a>

</TD>
</TR>
</TABLE>
';
closeside();


}
}else {
  echo "Den gik desværre ikke";
}

closetable();
require_once THEMES."templates/footer.php";

?>
Avatar billede benjaboy Nybegynder
28. januar 2009 - 22:59 #18
ikke helt. den udskriver stadig dem man ikke er med i men den undskriver ikke Den gik desværre ikke. Hvis man allerede er med?
Avatar billede dkfire Nybegynder
28. januar 2009 - 23:13 #19
Nej den vil kun udskrive "Den gik desværre ikke" hvis du er med i alle.
Avatar billede dkfire Nybegynder
28. januar 2009 - 23:14 #20
Er det du gerne vil have, at den skal skrive hele listen ud.
Og hvis en bruger er med skal den skrive en ting, og hvis brugeren ikke er med skal den skrive en anden ting ??
Avatar billede benjaboy Nybegynder
28. januar 2009 - 23:20 #21
Ja lige præsis :)

Så bruger ligesom kan se hvis han allerede er med og hvis han ikke er har han mulighed og blive det :)
Avatar billede dkfire Nybegynder
29. januar 2009 - 00:26 #22
Jamen så skal vi jo lave noget helt andet kode.
Men det bliver ikke lige nu. Du kan jo selv prøve dig frem.
Avatar billede benjaboy Nybegynder
29. januar 2009 - 06:26 #23
Er det samme struktur? eller skal der vendes op og ned på alt? :)

Mvh Benjamin
Avatar billede benjaboy Nybegynder
29. januar 2009 - 09:44 #24
Den sidste kode du postede:

<?php
require_once "maincore.php";
require_once THEMES."templates/header.php";

$userid = $userdata['user_id'];

opentable("Konkurrence oversigt");

$sql = "SELECT k.* FROM ".$db_prefix."konkurrence k WHERE k.kid NOT IN (SELECT d.kid FROM ".$db_prefix."konkurrencedeltager d WHERE d.bruger = $userid)";
$query = mysql_query($sql) or die(mysql_error());
if( $query && mysql_num_rows($query) > 0 ){
while($result = mysql_fetch_assoc($query)){

$kpris = $result['kpris'];
$ktitel = $result['ktitel'];
$ktekst = $result['ktekst'];
$kid = $result['kid'];
$kbillede = $result['kbillede'];

openside("test $ktitel");
    echo'
<TABLE>




<TR ALIGN=LEFT>
<TD ALIGN=LEFT VALIGN=TOP WIDTH=100%>'.$ktekst.'<br><br>'.$kpris.' kr.<br><a target="_blank" href="/konkurrencebekreft.php?kid='.$kid.'&bid='.$userid.'">Deltag</a></TD>
<TD ALIGN=RIGHT VALIGN=TOP WIDTH=100%>


            <a target="_blank" href="/konkurrence.php?kid='.$kid.'">
                <img border="0" src="/images/konkurrence/'.$kbillede.'" align="center">
            </a>

</TD>
</TR>
</TABLE>
';
closeside();


}
}else {
  echo "Den gik desværre ikke";
}

closetable();
require_once THEMES."templates/footer.php";

?>

Giver nu denne fejl:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

Mvh Benjamin
Avatar billede benjaboy Nybegynder
08. februar 2009 - 11:45 #25
Jeg prikker altså lige lidt til den her tråd :)
For har prøvet og lavet en men jeg kan ikke :S

den skal fungere lige dkfire siger her:

Er det du gerne vil have, at den skal skrive hele listen ud.
Og hvis en bruger er med skal den skrive en ting, og hvis brugeren ikke er med skal den skrive en anden ting ??

Nogle der kan hjælpe mig? :)

Mvh Benjamin
Avatar billede dkfire Nybegynder
08. februar 2009 - 15:16 #26
Jeg har ikke lige haft så meget tid til at lave det store php, men på baggrund af dit andet spørgsmål kommer lidt kode:

<?php
require_once "maincore.php";
require_once THEMES."templates/header.php";

$userid = $userdata['user_id'];
$UserArray = array();

$sqlUser = "SELECT kid FROM ".$db_prefix."konkurrencedeltager WHERE bruger = $userid";
$resultUser = mysql_query($sqlUser) or die(mysql_eeror());
if(mysql_num_rows($resultUser) > 0){
    while($row = mysql_fetch_array($resultUser)){
        $UserArray[] = $row['kid'];
    }
}

$sql = "SELECT * FROM ".$db_prefix."konkurrence";
$query = mysql_query($sql) or die(mysql_error());

opentable("Konkurrence oversigt");

if( $query && mysql_num_rows($query) > 0 ){
    while($result = mysql_fetch_assoc($query)){
       
        $kid = $result['kid'];
        openside("test ".$result['ktitel']);
   
        if(in_array($kid, $UserArray)){
            echo '<hr style="border: 1px solid #008B8B; width: 90%;" /><br />
                <table>
                    <tr>
                        <td width="30%"><img border="0" src=http://mlz.dk/getpen/images/konkurrence/'.$result[kbillede].' align="left"></td>
                        <td></td>
                        <td width="50%">'.$result[ktekst].'</td>
                        <td></td>
                        <td width="10%" align="center"><h3>'.$result[kpris].' points</h3><br>Du er med</td>
                    </tr>
                </table>';
        }else{
            echo'
                <hr style="border: 1px solid #008B8B; width: 90%;" /><br />
                <table>
                    <tr>
                        <td width="30%"><img border="0" src=http://mlz.dk/getpen/images/konkurrence/'.$result[kbillede].' align="left"></td>
                        <td></td>
                        <td width="50%">'.$result[ktekst].'</td>
                        <td></td>
                        <td width="10%" align="center"><h3>'.$result[kpris].' points</h3><br><a href=http://www.mlz.dk/getpen/dik.php?kid='.$result["kid"].'&bid='.$userdata["user_id"].'>Deltag</a></td>
                    </tr>
                </table>';
        }


        closeside();
    }

}else {
  echo "Den gik desværre ikke";
}

closetable();
require_once THEMES."templates/footer.php";

?>
Avatar billede dkfire Nybegynder
08. februar 2009 - 15:17 #27
Men så kommer der også lige en ting fra mig.
Du bør gør noget ved alle de tabeller som du kommer til at lave, det er ikke den smarteste design løsning.
Avatar billede benjaboy Nybegynder
08. februar 2009 - 15:40 #28
Mange tak det virkede.

Har du en idé hvordan jeg så kunne lave mine tabeller?
Mvh Benjamin
Avatar billede dkfire Nybegynder
08. februar 2009 - 15:48 #29
Undgå at have en tabel for hver række.
Avatar billede benjaboy Nybegynder
08. februar 2009 - 15:51 #30
Hvad mener du? altså i tabellen ".$db_prefix."konkurrence er alle konkurrencer jo og i ".$db_prefix."konkurrencedeltager er alle deltagerne til alle konkurrencer.
Avatar billede dkfire Nybegynder
08. februar 2009 - 16:35 #31
Det er nu mere <tabel> og </tabel> jeg mener.
Avatar billede benjaboy Nybegynder
08. februar 2009 - 16:41 #32
Når på den måde ;)

Vil jeg da prøve og kigge på.

Men tak for hjælpen.

Mvh Benjamin
Avatar billede benjaboy Nybegynder
08. februar 2009 - 19:11 #33
Du skulle vel aldrig kende nogle gode guider og sådan så jeg kan blive noget bedre til det? :)
Avatar billede dkfire Nybegynder
08. februar 2009 - 19:39 #34
Nej kender ikke lige nogen.
Men der skulle meget gerne være noget at finde på http://w3schools.com/ eller her på eksperten.
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