Avatar billede minimadsens Nybegynder
07. november 2007 - 18:57 Der er 11 kommentarer og
1 løsning

Forkert output ved hentning af rows. Den øverste er den samme.

Det her spørgsmål var godt nok svært at forklarer i titlen. :D

Men nu kan jeg da forklarer det lidt bedere med lidt af min kode til. :)
Jeg har nemlig det problem at jeg har lavet en venneliste til brugere på min side, og lige til højre på listen over ens venner kan man fjerne ens venner fra listen igen.

Det har jeg gjort med denne lange kode:

<center>
<table border="0" cellpadding="0" cellspacing="0">
<?
$name = $session->username;
  $query = "SELECT username, ven FROM venner WHERE username = '$name' && accept = '0' order by username DESC";
  $result = mysql_query($query);
  while($r=mysql_fetch_array($result))   
  {
  ?>
<tr>
<td width="150" valign="top" align="left">
<? echo "<span id=red><a target=_top href=../brugerprofil.php?user=$r[ven]&page=1><u>$r[ven]</u></a></span>"; ?>
</td><td width="15"></td>
<td>
<form action="slet_ven.php?id=post" method="post" name="slet">
<body onkeyup="submit_myform(event)">
<a href="#" onclick="document.getElementById('slet').submit()" style="text-decoration:none">Fjern</a>
<input type="hidden" name="subslet" value="1">
<input type="hidden" name="sletven_txt" value="<? echo $r[ven]; ?>">
<input type="hidden" name="sletter_txt" value="<? echo $session->username; ?>">
<input type="hidden" name="retPage" value="<?=$_SERVER["REQUEST_URI"]?>">
</form>
</td>
</tr>
<?
  }
echo "</table>";
?>
</center>

Men problemer et så at når den sende informationer til den fil hvorfra den sletter navnene fra databasen, så sender den hele tiden det "navn" der er øverst på venne listen.

Hvilket vil sige at hvis min venne liste ser sådan her ud:

                    Test1 - Fjern
                    Test2 - Fjern

og jeg så trykker på fjern til "Test2" så sletter den "Test1" fordi den ligger øverst af en eller anden grund? nogen der har en forklaring?
Avatar billede dkfire Nybegynder
07. november 2007 - 19:51 #1
Det sker fordi alle dine forms har name=slet , og du med javascript submitter den form.
De værdier du så sender med formen vil du aldrig kunne regne med.
Avatar billede dkfire Nybegynder
07. november 2007 - 19:54 #2
Og så undgå lige at bruge <center>, det er en gammel html kode, som er ved at uddø.
Avatar billede minimadsens Nybegynder
07. november 2007 - 21:40 #3
skal jeg så bruge <p align="center"></p> i stedet for? eller?

Hvad gør jeg så for at det vil komme til at virke?
Avatar billede dkfire Nybegynder
07. november 2007 - 21:48 #4
Det gør du nemmest ved at lade hver form du laver have et unikt navn.
Hvis du foreksempel lade en variabel tælle op og så lader den styrer navnet.

Med hensyn til dit center, så brug en div i stedet og brug styles til at centrer den.
Avatar billede minimadsens Nybegynder
07. november 2007 - 21:50 #5
Okay.. Det med center. lillebror sidder ved siden af, og spørger hvad der sker ved at det bliver "forældet". Jeg har hørt det en del gange før, og har bare rettet mig efter det, men kan du sige hvad det egentlig betyder? :)

Så jeg skal altså give hver formel hver sit navn..

Kan du evt. give et eksempel på dette? :D Så ville jeg være meget glad. :)
Avatar billede dkfire Nybegynder
08. november 2007 - 10:42 #6
Du kan risikere at på et tidspunkt vil browsere ikke understøtte <center>.
Hvis du vil fremtidssikre dit design eller bare følge lidt med tiden, så gå over til css  og div's.

$i = 0
while($r=mysql_fetch_array($result)) 
  {
  $i+=1;?>
<tr>
    <td width="150" valign="top" align="left">
    <? echo "<span id='red'><a target=\"_top\" href=\"../brugerprofil.php?user={$r['ven']}&page=1\"><u>{$r['ven']}</u></a></span>"; ?>
    </td>
    <td width="15"></td>
    <td>
        <form action="slet_ven.php?id=post" method="post" name="slet<?php echo $i;?>">
            <a href="#" onclick="document.getElementById('slet<?php echo $i;?>').submit()" style="text-decoration:none">Fjern</a>
            <input type="hidden" name="subslet" value="1">
            <input type="hidden" name="sletven_txt" value="<? echo $r['ven']; ?>">
            <input type="hidden" name="sletter_txt" value="<? echo $session->username; ?>">
            <input type="hidden" name="retPage" value="<?php echo $_SERVER['REQUEST_URI']?>">
        </form>
    </td>
</tr>
<?
  } 

Mere skal der ikke til, har også lige rettet jeres kode lidt til, så den bliver lidt mere korrekt.
Avatar billede minimadsens Nybegynder
08. november 2007 - 11:16 #7
Wow.. :D

Det ser godt ud, og utrolig simpelt. :D

forresten.. jeg kan se du bruger det, og er lige nødt til at spørge.
Ved f.eks linket til "brugerprofil.php", har du rettet: target="top" til:
target=\"_top\"

Hvad gør de der ekstra tegn? :)
Jeg er lige i skole, og desværre ikke uploade filer herfra, men når jeg kommer hjem, skal jeg nok uploade det, og så skrive her. :)
Avatar billede dkfire Nybegynder
08. november 2007 - 11:40 #8
Problemet lå i at du havde skrevet target=_top hvilket ikke er særlig god html.
Normalt vil man skrive target="_top", men eftersom du laver echo "noget"; kan target="_top" give problemer.
Ved at tilføje \ til " så tager php " som normalt tekst og ikke som slutning på din echo.
Dvs:
echo "en lille " en ";
vil give fejl, da php tror echo slutter ved anden ".
echo "en lille \" en ";
vil skrive:
en lille " en
på skræmen.

Håber det gav lidt mening
Avatar billede minimadsens Nybegynder
08. november 2007 - 17:08 #9
Det vil sige at \ fungerer lidt på samme måde som at bruge ' i en echo, hvis man har lavet sin echo sådan: echo ""; ?? :D
Avatar billede minimadsens Nybegynder
08. november 2007 - 17:24 #10
wow. :D

Det virker helt perfekt. :D

Kom med et svar, og få point. :)
Avatar billede dkfire Nybegynder
08. november 2007 - 17:57 #11
Ja noget i den stil, udover man nogle gange gerne vil have at den printer " og ikke '.

Og et svar :-)
Avatar billede minimadsens Nybegynder
08. november 2007 - 18:31 #12
Ok.. :) Over and out. :P
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