Avatar billede Slettet bruger
20. oktober 2010 - 19:42 Der er 20 kommentarer og
1 løsning

Venneliste - PHP

Jeg har et Problem med denne kode

<?php
$get = $_GET['mid']; // den henter hvilken profil man er inde på.
$id = $session->username; // Det er personen der er logget ind
if($get == $id){
   
    }
else{
        mysql_connect("xxx", "xxxx", "xxxx6")
or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());
$result = mysql_query("SELECT * FROM friendlist")
or die(mysql_error());
while($row = mysql_fetch_array( $result )) {
$modtageren = $row['modtageren'];
$afsenderen = $row['afsenderen'];
$accepteringen = $row['accepteringen'];
} // fejlen er her..
if( $afsenderen == $get and $afsenderens == $id){
    echo "<h3> Du har ansøgt denne person."; }
    }
    else ($afsenderen == $id and $afsenderens == $get and $accepteringen == 1){
        echo "du er allerede ven med denne person";
}

    ?>
   
 
   
            <h3>Vennerliste
                  <form action="<?php echo $editFormAction; ?>" method="post" id="form2">
                    <table>
                      <tr valign="baseline">
                        <td><input type="submit" value="ansøg om ven" />
                          <input type="text" style="visibility:hidden" name="afsenderen" value="<?php $id = $session->username; echo"$id"; ?>" size="1" />
                        <input type="text" style="visibility:hidden" name="modtageren" value="<?php $get = $_GET['mid']; echo"$get"; ?>" size="1" /></td>
                      </tr>
                    </table>
                    <input type="hidden" name="MM_insert" value="form2" />
                  </form>
                    <? } ?>


Mit problem er at den kun tar efter den første row i min database, der hvor der står (Fejlen er her) men hvis jeg så flytter "}" lidt ned, så viser den stadig min form, som den ikke skal vise hvis (if/else) passer...
Avatar billede webweaver Praktikant
20. oktober 2010 - 20:39 #1
Jeg skal lige forstå dig korrekt her.
Hvad ønsker du at opnå?..

Den skal lave en liste? Og ud fra hver række den finder, skal der stå "Du har ansøgt denne person" eller "Du er allerede ven med denne person"?

Hvornår vil du have formen vist?

Du har noget rodet kode, hvor du har en if, efterfølgende af en else og dernæst igen en else så vidt jeg kan se. Det fungerer altså ikke.

Du kan heller ikke skrive,
else ($afsenderen == $id and $afsenderens == $get and $accepteringen == 1){

så hedder det  elseif ($afsenderen == $id and $afsenderens == $get and $accepteringen == 1){

Når du har forklaret hvad du 100% ønsker, så skal vi have ryddet op i den kode :)
Avatar billede webweaver Praktikant
20. oktober 2010 - 20:39 #2
Og luk nogle af alle dine åbne tråde tak!!!!
Avatar billede Slettet bruger
20. oktober 2010 - 20:43 #3
Jeg vil have at hvis den ikk kan finde noget om Begge profiler/brugere så skal den vise selvste formen, ellers skal den ikk vise den. men kan ikk få det til at virke rigtigt. har prøvet med elseif. det virker heller ikke.. (:
Avatar billede webweaver Praktikant
20. oktober 2010 - 21:43 #4
<?php
   
    $get = $_GET['mid']; // den henter hvilken profil man er inde på.
    $id = $session->username; // Det er personen der er logget ind
    $showform = false;

    if ($get == $id) {
        // Et eller andet kode her ...
    } else {
        mysql_connect("xxx", "xxxx", "xxxx6") or die(mysql_error());
        mysql_select_db("xxx") or die(mysql_error());

        $result = mysql_query("SELECT * FROM friendlist") or die(mysql_error());
       
        while($row = mysql_fetch_array( $result )) {
            $modtageren = $row['modtageren'];
            $afsenderen = $row['afsenderen'];
            $accepteringen = $row['accepteringen'];
        }
       
   

        if ($afsenderen == $get and $afsenderens == $id) { //$afsenderens, hvor har du den variabel henne?
            echo "Du har ansøgt denne person.";
          } elseif ($afsenderen == $id and $afsenderens == $get and $accepteringen == 1) {
              echo "du er allerede ven med denne person";
        } else {
            $showform = true;
        }
    }
   
    if ($showform) {

?>
   
             
   
<h3>Vennerliste
      <form action="<?php echo $editFormAction; ?>" method="post" id="form2">
        <table>
          <tr valign="baseline">
            <td><input type="submit" value="ansøg om ven" />
              <input type="text" style="visibility:hidden" name="afsenderen" value="<?php $id = $session->username; echo"$id"; ?>" size="1" />
            <input type="text" style="visibility:hidden" name="modtageren" value="<?php $get = $_GET['mid']; echo"$get"; ?>" size="1" /></td>
          </tr>
        </table>
        <input type="hidden" name="MM_insert" value="form2" />
      </form>

<?

    }

?>

Det skulle gøre det ...
Avatar billede Slettet bruger
20. oktober 2010 - 21:46 #5
Koden er bare en del af en side. Alle de der session og alt det har jeg fra en anden side.
prøver lige koden
Avatar billede Slettet bruger
20. oktober 2010 - 21:47 #6
og $afsenders det er $modtageren, havde bare lige skrevet fejl da jeg skulle skrive den ind her
Avatar billede Slettet bruger
20. oktober 2010 - 21:50 #7
Det virker ikk den du har lavet. fordi så når man har trykket på den brude der stå " du har ansøgt denne person" og hvis man er venner "Du er venner med denne person" men selvom man har trykket ansøg en gang, så kan man blive ved alligevel. Formen skal bare forsvinde når man har trykket 1 gang.
Avatar billede webweaver Praktikant
20. oktober 2010 - 22:55 #8
Så er det fordi at du har en fejl i dine variabler... Det virker den måde jeg har lavet. Hvis du kan se formen stadig, er det fordi at dine if sætninger ikke går igennem.

$afsenderen == $get and $afsenderens == $id

eller

$afsenderen == $id and $afsenderens == $get and $accepteringen == 1

skal være opfyldt, ellers ser du fortsat formen.
Avatar billede webweaver Praktikant
20. oktober 2010 - 22:59 #9
Men jeg undrer mig også lidt over hvad du egentlig vil hente ud af din database? For det angiver du ikke rigtig.

Du skriver bare

$result = mysql_query("SELECT * FROM friendlist") or die(mysql_error());

Det vil sige den henter alle ud på vennelisten. Skal den ikke kun hente den profil ud, som du er inde på?
Avatar billede Slettet bruger
20. oktober 2010 - 23:02 #10
Jo men så skal man enten hente afsenderen eller modtageren. fordi det kan jo være dem begge?
Avatar billede Slettet bruger
20. oktober 2010 - 23:04 #11
Tror fejlen er her
$result = mysql_query("SELECT * FROM friendlist") or die(mysql_error());
       
        while($row = mysql_fetch_array( $result )) {
            $modtageren = $row['modtageren'];
            $afsenderen = $row['afsenderen'];
            $accepteringen = $row['accepteringen'];
        }
       
Fordi du slutter den egentligt fordi den henter kun 1 row ud. Så den går efter den første i min tabel, Tror man skal flytte "}" ned under Alle de der else/if men det kan jeg ikk. så opstår der fejl
Avatar billede Slettet bruger
20. oktober 2010 - 23:20 #12
Jeg kan ikk få det til at virke, altså lige meget hvad kommer den der form hele tiden frem?
Avatar billede webweaver Praktikant
20. oktober 2010 - 23:25 #13
Hvorfor kan det være begge 2? Man er logget ind for at se det her .. Så du har brugernavn i en variabel. Så skal du finde ud af om ham som er logget ind er venner med den profil han er inde på eller om han har ansøgt den. Det gør du ved at hente data ud fra den ene profil han er inde på?

Der er ikke fejl i det jeg har lavet ... Det som jeg har lavet, er det samme som du har, bare med lidt oprydning og tilføjelse af det som du ønsker. Du kan godt smide dine if sætninger ind i din løkke, men det vil ikke give dig den ønskede effekt, for så er det bare den sidste i din tabel, som afgør hvad der skal vises.. Og stadig ikke den rigtige bruger...
Avatar billede Slettet bruger
20. oktober 2010 - 23:31 #14
Hey webweaver Det du har lavet er der faktisk en fejl på.. fordi at når man har trykket ansøgt, eller man har accepteret venneanmodningen kan man stadig trykke ansøg som ven
Avatar billede Slettet bruger
20. oktober 2010 - 23:33 #15
Og læs det jeg skrev i #11
Avatar billede Slettet bruger
20. oktober 2010 - 23:36 #16
Og hvis man sætter  $result = mysql_query("SELECT * FROM friendlist WHERE `afsenderen` = '$id'") or die(mysql_error()); så henter den jo kun ham der er logget ind og tar bestemt ud fra det. så det ville ikk hjælpe. fordi hvis en bruger der hedder test ansøger test1 om venskab. så vil test ikk kunne ansøge ham. men test1 ville kunne ansøge test. så det de ville være dobbeltvenner. fungere heller ikke
Avatar billede webweaver Praktikant
21. oktober 2010 - 00:33 #17
Prøv nu at læs, det har jeg jo skrevet 1 gang...

Hvis du kan se formen/ansøge om venskab stadig, er det fordi at
$afsenderen == $get and $afsenderens == $id

eller

$afsenderen == $id and $afsenderens == $get and $accepteringen == 1

ikke er opfyldt! Præcis som det er meningen.
Det er dig som har bragt det kode her i tråden.
Det er ikke en fejl.

Jeg har læst det du skrev i #11.
Vil du gerne have hjælp eller ej?

Siden du skal trække 2 ud af databasen, hvordan har du opbygget din tabel?

Prøv denne SQL, har ikke afprøvet om den virker..

mysql_query("SELECT * FROM friendlist WHERE afsender = '$get' AND modtager = '$id' OR (afsender = '$id' AND modtager = '$get')") or die(mysql_error());

Jeg må sige, at jeg heller ikke helt kan gennemskue din idé med if sætningen. Det er lidt svært at vide, når man kun kan se et udsnit af koden.

if ($afsenderen == $get and $afsenderens == $id)

hvad så hvis

$afsenderen == $id og $afsenderens == $get) og acceptering ikke er 1 fx?
Avatar billede Slettet bruger
21. oktober 2010 - 11:53 #18
Hmm webweaver. hvordan ville du ellers lave sådan en venneliste? hvis man ikk skal bruge det med else og if?
Avatar billede webweaver Praktikant
21. oktober 2010 - 13:39 #19
Du skal stadig bruge if.

Men kan ikke se logikken i din kode. Du kan stadig godt bruge noget i samme stil, men den skal vel bare tage højde for begge situationer. Ligesom du ønsker i dit SQL statement.

if ($afsender == $get && $modtager == $id && $acceptering != 1 || $afsender == $id && $modtager == $get && $acceptering != 1) {
echo "Du har ansøgt denne person";
} elseif ($afsender == $get && $modtager == $id && $acceptering == 1 || $afsender == $id && $modtager == $get && $acceptering == 1) {
echo "I er allerede venner...";
} else {
$showform = true;
}

Det burde være den if sætning du søger.
Men du skal stadig have styr på SQL udtrækket, før dit system vil virke.
Avatar billede Slettet bruger
21. oktober 2010 - 14:03 #20
Når sådan :D
Det virker nu d;
Lig lige et svar :D
Avatar billede webweaver Praktikant
26. oktober 2010 - 19:41 #21
Det var godt :)
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
Kurser inden for grundlæggende programmering

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