26. april 2004 - 23:05Der er
17 kommentarer og 1 løsning
Problem med id variabel
Heysa!
Problemet er, at når man trykker på Åben så åbner den godt nok første gang man trykker. Men gør man det mere end engang, bliver den bare ved med at åbne det samme id. En der har en idé om hvorfor?
$Bruger = $_GET['Bruger']; $SBruger = $_SESSION['username']; if(isset($Bruger) && $Bruger == $SBruger) { print "Indbakke:<hr>"; $post_query = mysql_query("SELECT * FROM du_bruger_post WHERE til='$Bruger' ORDER BY tid DESC"); while($post_row = mysql_fetch_array($post_query)) { $post_row['post'] = nl2br($post_row['post']); $id = $post_row['id'];
print " <table border='1' cellpadding='0' cellspacing='0' width='100%'> <tr> <td width='33%'> Fra: <a href='$DOC_ROOT/beta/profil.php?Bruger=$post_row[fra]'>".$post_row['fra']."</a><br /> </td> <td width='33%'> Sendt: ".date("H:i:s", strtotime($post_row[tid]))." ".date("d/m/Y", strtotime($post_row[tid]))."<br /> </td> <td width='33%'> <a href='$DOC_ROOT/beta/postindbakke.php?Bruger=$Bruger&open=$id'>Åben</a> </td> </tr> </table> "; } if(isset($_GET['open']) && $_GET['open'] = '$id') { print "<br /> <a href='$DOC_ROOT/beta/profil.php?Bruger=$fra'>$fra</a> skrev:<br /> $post "; } }else{ print "Du har ikke ret til at se denne indbakke.";
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
skal denne linje <a href='$DOC_ROOT/beta/postindbakke.php?Bruger=$Bruger&open=$id'>Åben</a> ikke være <a href='$DOC_ROOT/beta/postindbakke.php?Bruger=$Bruger&open=$_POST['id']}'>Åben</a>
(faktisk bør du bruge <a href=", jeg tror ikke at <a href=' er lovlig html.. Men det er en anden sag)
>>dennismp html er helt ligeglad med on du skriver ' eller " omkring attributværdierne.
>>human id værdien i dit link bliver fastlagt npr du sender siden med det link til brovseren. <a href='$DOC_ROOT/beta/postindbakke.php?Bruger=$Bruger&open=$id'>Åben</a> kik is 'vis kilde'. du kan trykke på det link så tit du vil, det er altid det id der er skrevet i kildekoden der bliver brugt. siden skal reloades for der kan komme til at stå en ny id værdi i det link. eller du kan evt ændre id værdien med javascript. men så kommer du til at formulere nogen regler om hvordan den skal ændres.
dennismp: Tror du har fat i noget af det rigtige.. Men får syntax error hvis jeg bruger det link istedet. Skal det ik, se således ud: <a href='$DOC_ROOT/deunge/beta/postindbakke.php?Bruger=$Bruger&open=".$_POST['id']."'>Åben</a>
Men det id, som skal i linket, får jeg jo fra udtræk fra db'en. Bruger jeg overstående link sendes id'et ikke. open=.
jakoba: Jeg kan da se at værdierne ændrede sig efter hvordan jeg kørte ned over de forskellige links. Så de må da ændre sig. Husk nu på det sidder i en while-løkke.
if(isset($Bruger) && $Bruger == $SBruger) { print "Indbakke:<hr>"; $post_query = mysql_query("SELECT * FROM du_bruger_post WHERE til='$Bruger' ORDER BY tid DESC") or die(mysql_error()); while($post_row = mysql_fetch_array($post_query)) { $id = $post_row['id']; $fra_url = urlencode($post_row['fra']); $fra = $post_row['fra']; $sendt = date("H:i:s d/m/Y", strtotime($post_row[tid])); $Bruger_url = urlencode($Bruger);
if(isset($_GET['open']) && $_GET['open'] == $id) { // Gem data, så vi kan vise det, når vi er færdig med while().. $post = nl2br($post_row['post']); $post_fra = $fra; $post_fra_url = $fra_url; }
>> Hvorfor starter du med at sætte disse til ingenting:
(God) vane :-). Når jeg koder sætter jeg error-reporting til all. Dvs at den brokker sig hvis jeg bruger ikke-initialiseret variabler (hvilket kan være rart hvis man leder efter fx. man har stavet et variablenavn forkert). Så det er for at jeg er sikker på hvad $post indeholder, selvom den ikke finder den mail-id der matcher den ønskede. En anden årsag er, at jeg ikke kan lide når variabler "pludselig" bliver brugt, uden at man kan se (nemt) hvor den kommer fra.
Nu ved jeg ikke om dine brugernavne har specialkarakter.. Men antog det. fx. Hvis jeg har en bruger der hedder "dennis&marianne" .. så vil du få en url der hedder profil.php?Bruger=dennis&marianne .. (så $_GET['Bruger'] indeholder kun "dennis" nu) .. For at undgå dette, url-encoder man, så "special-tegn" bliver lavet om til %<hexværdi> og så er du ude om den slags problemer.
Okay.. Lad os sige jeg vil have et slet link ved siden af Åben. Når der trykkes der, skal den køre engang query som sletter det valgte id. Jeg kan sagtens lave den query, kan bare ikke se hvad den skal når man trykker på "slet" linket, eller hvordan jeg får det korrekte id, sat ind i queryen, altså hvilken var det er.
Lav et link som dette: <a href="$DOC_ROOT/beta/postindbakke.php?Bruger=$Bruger_url&open=$id">Åben</a> fx: <a href="$DOC_ROOT/beta/postindbakke.php?Bruger=$Bruger_url&delete=$id">Delete</a>
efter denne linje: if(isset($Bruger) && $Bruger == $SBruger) { tilføjer vi: if( isset($_GET['delete']) ) { $id = intval($_GET['delete']); // intval sikre at det er kun et tal. $sql = "DELETE FROM du_bruger_post WHERE id = '$id'"; mysql_query($sql) or die($mysql_error()); echo "Besked slettet."; }
btw.. Det jakoba skrev.. Er det ham der har misforstået scriptet, eller er det noget jeg skal tage højde for? For mig lyder det som noget der ik rigtig har noget med det her at gøre.
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.