Avatar billede fkp85 Praktikant
02. marts 2012 - 11:00 Der er 11 kommentarer og
1 løsning

slette i databasen..

Kode:
**************************************************************
if(isset($_GET['v_id'])){// henter fra adresse linjen
    $sql = "delete from venstrebar where v_id=".$_GET['vid']."";
    mysqli_query($db,$sql) or die (mysqli_error($db));
    };
    $sql = "select * from venstrebar order by v_id asc";
    $query = mysqli_query($db,$sql) or die (mysqli_error($db));
            echo"<table border='0' cellpadding='0' cellspacing='0' width='800px'>
                    <tr>";
                    $y = 1;
            while($res = mysqli_fetch_array($query)){
               
                    echo'<td align="left" valign="top" ><img src="../cms/images/upload/thumb_'.$res["v_picture"].'" /><br /><strong>'.$res["v_title"].'</strong><br /><font style="font-size:10px; color:#C10000;">'.$res["v_date"].'<br /><br /></font>
                    <font style="font-size:12px;">'.nl2br($res["v_text"],0).'</font><br /><font style="font-size:12px; color:#C10000;">'.$res["v_price"].'</font><br /><br /></font>                        <a href="indexcms.php?page='.$page.'&vid='.$res["v_id"].'">Slet</a>

<br /><br /><br /></td>
                            ';   
                            if($y % 4 == 0){
                            echo "</tr><tr>";
                        };
                            $y++;
       
            };
            echo"</tr>
                </table>";
            //substr= tekstmanipulation.
***********************************************************
Hvad gør jeg galt?? :)
Avatar billede fkp85 Praktikant
02. marts 2012 - 12:02 #1
Anyone??

Den reagerer slet ikke når der bliver trykket på slet knappen og der kommer ikke nogen fejlmeddelelser?
Avatar billede inteeeL Nybegynder
02. marts 2012 - 12:11 #2
Du tjekker, om $_GET['v_id'] er sat, hvorefter du i din sql-statement sletter rækken, hvor v_id=$_GET['vid']. Så umiddelbart ser det ud til, at du glemmer en underscore. Rettelse (desuden er den sidste dobbel-appostrof udnødvendig):

$sql = "delete from venstrebar where v_id=".$_GET['v_id'];


Jeg har yderligere et par kommentarer.

1. Du validerer ikke $_GET['v_id'], hvilket betyder, at en ondsindet bruger kan manipulere denne værdi. Tjek derfor, om denne værdi er et tal, der opfylder eventuelle krav.

2. Saml dine CSS-elementer i en css-fil frem for at have dem i dine html-tags.

3. Saml outputtet i en lokal variabel og udskriv den til sidst ved brug af et enkelt echo-kald. Dette vil medføre bedre perfomance.

4. Du kan nøjes med at bruge mysqli_fetch_assoc frem for mysqli_fetch_array, da du ikke har brug for et numerisk array, men blot et associativt array.

5. <br />-tags bruges ved linjeskift, alt andet ordnes med CSS.

Ovenstående er umiddelbart det, jeg har tid til at kommentere på.
Avatar billede fkp85 Praktikant
02. marts 2012 - 12:21 #3
Prøvede at rette det til dit eksempel med en underscore, men det virker stadig ikke...

Men sætter pris på dit svar :)
Avatar billede inteeeL Nybegynder
02. marts 2012 - 12:28 #4
Prøv at foretage et echo-kald efter if(isset($_GET['v_id'])){. Dette kaldes debugging og er i dette tilfælde med til at sikre, at du når videre i scriptet. Hvis dette echo-kald ikke bliver foretaget tyder det det, at $_GET['v_id'] ikke bliver sat, hvorefter du skal se på det problem.
Avatar billede olebole Juniormester
02. marts 2012 - 16:06 #5
<ole>

Hvorfor bruger du MySQLI, når du alligevel udnytter API'ets øgede sikkerhed? Så kan du ligeså godt bruge det gamle API. Din kode står pivåben for SQL-injection

/mvh
</bole>
Avatar billede fkp85 Praktikant
02. marts 2012 - 17:48 #6
Er ikke den store haj endnu, men prøver så godt jeg kan, så er glad for jeres respons :) Vil prøve og foretage et echo-kald, så vender jeg lige tilbage...
Avatar billede fkp85 Praktikant
02. marts 2012 - 17:49 #7
API?
Avatar billede olebole Juniormester
02. marts 2012 - 17:58 #8
API = Application Programming Interface. PHP hat to forskellige API'er til at 'tale' med en MySQL-database på. Det gamle, kaldet mysql - og det nye, kaldet mysqli (i for improved).

Den måde, hvorpå du bruger mysqli, udnytter du ikke mysqli's forbedringer - herunder den væsentligt forbedrede sikkerhed. Prøv at læse denne guide om prepared statements, så du lærer at sikre dig mod, at en 'ubehagelig' bruger smadrer din database
Avatar billede fkp85 Praktikant
03. marts 2012 - 08:16 #9
Er faktisk lidt forundret over vi ikke har hørt om bind_param her under vores udd. Jeg er glad for at du henviste til den guide for jeg må indrømme jeg har en del kode jeg skal have lavet om så tingene er iorden, Bla. koden længere oppe, så spørgsmålet bliver lukket og så hører i jo nok fra mig hvis jeg render ind i problemer ;) Olebole vil du have point må du jo lige give et svar :)
Avatar billede olebole Juniormester
03. marts 2012 - 15:52 #10
Ellers tak, jeg samler ikke point. Så enten må du selv eller en anden deltager lægge et svar, så vi får lukket tråden  =)

Der er desværre alvorlige problemer med visse uddannelser. Systemet lægger op til, at skoler tænker mere i forretningen end de gør i uddannelsen, og mange underviseres faglige kompetencer er skræmmende fraværende.

Mange kommer selv direkte fra uddannelsen og har aldrig været ude i branchen, mens andre ikke har været i branchen i mange år. Hvis man tager i betragtning, at fagfolk regner med en videnshalveringstid på tre år (har man været væk fra branchen i tre år, er halvdelen af ens viden forældet/ubrugelig), ser det desværre sort ud  :o|
Avatar billede fkp85 Praktikant
06. marts 2012 - 12:55 #11
Så ser det lidt sort ud hehe ;)
Avatar billede olebole Juniormester
06. marts 2012 - 15:37 #12
Det kunne lyde, som om du er igang med en uddannelse som webintegrator. Tør man spørge, hvor?  =)
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