Gå til innhold

Slette fra mysql med javascript


Anbefalte innlegg

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
Videoannonse
Annonse

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 av ChristianW
Lenke til kommentar

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. :whistle:

Endret av Pugger
Lenke til kommentar

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 av ChristianW
Lenke til kommentar
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 av Pugger
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...