Pugger Skrevet 31. juli 2009 Del Skrevet 31. juli 2009 Hei. Jeg driver å trener litt på php/javascript og har laget en liten status side for bestillinger. Alle ordrer blir hentet ut fra mysql. Det jeg mangler nå er å kunne slette hver ordre som blir listet. Jeg har prøvd å lage en knapp med onlick og en function men den fungerer ikke. Kanskje noen kan hjelpe. <?php class status { function status() { } function displayStatus() { global $mysql; $user_id = $_SESSION['user_id']; $result = $mysql->query("SELECT ordrer.kunde_id, ordrer.status, ordrer.sporingsnummer, ordrer.dato, ordre_detaljer.id, ordre_detaljer.ordre_id, ordre_detaljer.varenavn FROM ordrer, ordre_detaljer WHERE ordrer.kunde_id='{$user_id}' and ordrer.ordre_id=ordre_detaljer.ordre_id limit 10"); echo " <script type=\"text/javascript\"> function slett() { mysql; $mysql->query(\"DELETE FROM ordrer WHERE ordre_id='{$ordreid}'\"); $mysql->query(\"DELETE FROM ordre_detaljer WHERE ordre_id='{$ordreid}'\"); } </script>"; echo "<br /> <br /> <table width=\"800\" align=\"center\" style=\"font-size:13px;\"> <tr style=\"font-size:;\"> <td width=\"90\" align=\"center\"><b>Ordrenr</b></td> <td width=\"120\" align=\"center\"><b>Ordrestatus</b></td> <td width=\"150\" align=\"center\"><b>Sporingsnummer</b></td> <td width=\"200\" align=\"center\"><b>Beskrivelse</b></td> <td width=\"100\" align=\"center\"><b>Dato</b></td> </tr>"; while($row = mysql_fetch_array($result)) { echo " <tr> <td align=\"center\">".$row["ordre_id"]."</td> <td align=\"center\">".$row["status"]."</td> <td align=\"center\">".$row["sporingsnummer"]."</td> <td align=\"center\">".$row["varenavn"]."</td> <td align=\"center\" style=\"font-size:12px;\">".$row["dato"]."</td> <td align=\"center\"><button type=\"button\" onclick=\"slett()\">Slett</button></td> </tr>"; } echo "</table>"; } } ?> Lenke til kommentar
Wattengård Skrevet 31. juli 2009 Del Skrevet 31. juli 2009 (endret) Du prøver å kalle PHP-funksjoner fra JavaScript... Det vil nok funke veldig dårlig. For å få det til å fungere på den måten du ønsker så må du nok til med litt Ajax. Når man klikker på slett-knappen så kan det f.eks. gå et ajax-kall til en fil kallt "slett.php" som tar ordre_id som parameter. while($row = mysql_fetch_array($result)) { echo " <tr> <td align=\"center\">".$row["ordre_id"]."</td> <td align=\"center\">".$row["status"]."</td> <td align=\"center\">".$row["sporingsnummer"]."</td> <td align=\"center\">".$row["varenavn"]."</td> <td align=\"center\" style=\"font-size:12px;\">".$row["dato"]."</td> <td align=\"center\"><a href=\"#\" onClick='slett(".$row["ordre_id"]."'>Slett</a></td> </tr>"; } Ser du at jeg har endret slette-kolonnen der? Deretter må du bruke XMLHttpRequest eller et Javascriptbibliotek for å utføre ajax-kallet. function slett(id) { // Jeg husker ikke syntaksen på XMLHttpRequest så vi kaller dette for pseudo-kode;) xhr.request('slett.php?oid=' + id, (function { // her må du kjøre callback-kode som sjekker om den får OK fra slett.php, samt evt fjerne linjen fra tabellen. }); } og slett.php kan vel være noe slik <?php var $ordre_id = $_GET["oid"]; $mysql->query("DELETE FROM ordrer WHERE ordre_id='{$ordre_id}'"); $mysql->query("DELETE FROM ordre_detaljer WHERE ordre_id='{$ordre_id}'"); echo 'OK'; ?> Du kan returnere en feilmelding hvis det ikke går bra. Foreslår at du ser litt på f.eks. JQuery for JavaScript-biten. -C- (DISCLAIMER: Jeg koder ikke PHP til vanlig så koden kan inneholde feil) EDIT: borka koden litt første gang Endret 31. juli 2009 av ChristianW Lenke til kommentar
Pugger Skrevet 31. juli 2009 Forfatter Del Skrevet 31. juli 2009 (endret) Har laget slett.php <?php global mysql; var $ordre_id = $_GET["oid"]; $mysql->query("DELETE FROM ordrer WHERE ordre_id='{$ordre_id}'"); $mysql->query("DELETE FROM ordre_detaljer WHERE ordre_id='{$ordre_id}'"); echo 'OK'; ?> og lagt til istedenfor knappen <td align=\"center\"><a href=\"#\" onClick='slett(".$row["ordre_id"]."'>Slett</a></td> </tr>"; men det skjer ingenting i databasen. Endret 31. juli 2009 av Pugger Lenke til kommentar
Wattengård Skrevet 31. juli 2009 Del Skrevet 31. juli 2009 (endret) Nei. Fordi du må fortsatt lage en javascriptfunksjon som kaller slett.php Gi meg noen minutter så skal jeg prøve å lage et forslag til deg. EDIT: OK. Har prøvd å hive sammen et komplett forslag. http://pastie.org/566518 Det som mangler er å inkludere JQuery. Sjekk www.jquery.com for dette. Og det er fortsatt utestet. -C- Endret 31. juli 2009 av ChristianW Lenke til kommentar
Pugger Skrevet 31. juli 2009 Forfatter Del Skrevet 31. juli 2009 Venter spent.. har du fått til noe? Lenke til kommentar
Wattengård Skrevet 31. juli 2009 Del Skrevet 31. juli 2009 Ser du ikke edit'en min i forrige post? Lenke til kommentar
Pugger Skrevet 31. juli 2009 Forfatter Del Skrevet 31. juli 2009 (endret) Ser du ikke edit'en min i forrige post? Hei jeg så det nå. Jeg har nå endret koden min og den ser nå slik ut.. jeg har rota til koden og ingenting fungerer.. hmm.. <?php class status { function status() { } function displayStatus() { global $mysql; $user_id = $_SESSION['user_id']; $result = $mysql->query("SELECT ordrer.kunde_id, ordrer.status, ordrer.sporingsnummer, ordrer.dato, ordre_detaljer.id, ordre_detaljer.ordre_id, ordre_detaljer.varenavn FROM ordrer, ordre_detaljer WHERE ordrer.kunde_id='{$user_id}' and ordrer.ordre_id=ordre_detaljer.ordre_id limit 10"); echo "<br /> <br /> <table width=\"800\" align=\"center\" style=\"font-size:13px;\"> <tr style=\"font-size:;\"> <td width=\"90\" align=\"center\"><b>Ordrenr</b></td> <td width=\"120\" align=\"center\"><b>Ordrestatus</b></td> <td width=\"150\" align=\"center\"><b>Sporingsnummer</b></td> <td width=\"200\" align=\"center\"><b>Beskrivelse</b></td> <td width=\"100\" align=\"center\"><b>Dato</b></td> </tr>"; while($row = mysql_fetch_array($result)) { echo " <tr id="order_<?=$row["order_id"]?>"> <td width="90" ><?=$row["ordre_id"] ?></td> <td width="120" ><?=$row["status"] ?></td> <td width="150" ><?=$row["sporingsnummer"] ?></td> <td width="200" ><?=$row["varenavn"] ?></td> <td width="100" ><?=$row["dato"] ?></td> <td><a href="#" onClick='slett(<?=$row["ordre_id"] ?>'>Slett</a></td> </tr>"; } echo "</table>"; echo"<script type=\"text/javascript\"> function slett(oid) { var ordre_id = oid; // ordreid som skal slettes $.get(\"slett.php\", { oid: ordre_id }, function(data) { if (data == \"OK\") { $(\"tr#order_\" + ordre_id).remove(); } }); } </script>"; } } ?> Endret 31. juli 2009 av Pugger Lenke til kommentar
Wattengård Skrevet 2. august 2009 Del Skrevet 2. august 2009 Har du inkludert JQuery da? Og vær så snill å slutt å "echoe" ut html-koden. Det roter det bare til. Skriv ren html, og inkluder php med <?php ?> hver gang du trenger det. -C- Lenke til kommentar
TheClown Skrevet 3. august 2009 Del Skrevet 3. august 2009 Tror du bare kan gi opp, Christian.. Lenke til kommentar
Pugger Skrevet 3. august 2009 Forfatter Del Skrevet 3. august 2009 Tror du bare kan gi opp, Christian.. Finnes det ikke noe måte å få det til uten javascript ? Lenke til kommentar
Wattengård Skrevet 4. august 2009 Del Skrevet 4. august 2009 Jo. I "Slett" linken så linker du til "slett.php?oid=#{ordre_id}" istedet. Og på slutten av slett.php, istedet for echo blablabla, så kjører du en HTTP Redirect tilbake til siden med lista. Men det blir mye blinking av skjerm siden du laster to sider. -C- Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå