webForumDet fria alternativet

Hjälp med kunskapsbank

PHP

25 svar · 697 visningar · startad av addeweb

Medlem sedan jan. 2004216 inlägg
Frågan#1

Hej! Jag vet inte om det går att få hjälp i det här forumet men jag försöker. Har kört fast med en kunskapsbank. Förutom söksidan som fungerar helt perfekt, så finns det en administrationssida där man som kan hantera rubriker som finns i banken. Det finns också en förslagssida med inlämnade förslag från medlemmar som fyller i ett formulär på en annan sida. Administrationssidan fungerar bra men förslagssidan har jag problem med. Det går att ta bort alla förslag men inte godkänna eller ta bort enstaka rubriker. Godkänner man en rubrik så syns inte samma rubrik på administrationssidan, ingen skillnad i admin-listan. I förslagstabellen finns två kolumner validate och deleteit med null som utgångsvärde. Dessa värden ändras tyvärr inte till siffran 1 när jag på förslagssidan godkänner eller tar bort rubriker mha update set. Förslagna rubriker måste få siffran 1 för att det ska fungera. Har också testat med att ändra i själva förslagstabellen så att en rubrik fick siffran 1 och det fungerade men det blev en blank rad på admin-sidan medan rubriken fanns kvar på förslagssidan. Meningen är att när man har godkännt en rubrik, så ska rubriken med beskr läggas in i banken och samtidigt tas bort från förslagssidan. För sidorna använder jag databashanteraren MSSQL. Finns det någon som kan hjälpa mig??

suggestions.php

<?php

function rows_affected(){
$result = mssql_query("SELECT @@ROWCOUNT");
list($affected) = mssql_fetch_row($result);
return $affected;
}

// Färgvariabler för lista med varannan färg
$bg1 = "#FFFFFF";
$bg2 = "#FFEEFF";

?>
<html>
<head>
<title></title>
<title></title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../style/style_main.css">
</head>
<body>
<?php

    $bekrafta_borttagning = $_POST['bekrafta_borttagning'];
    $utfor_atgard = $_POST['utfor_atgard'];

	if($bekrafta_borttagning){

        $result = mssql_query("DELETE FROM forslag") or die("Att ta bort alla förslag fungerar ej!");
        die("Alla förslag raderade!");
	}
	if ($utfor_atgard){
	         if(isset($_POST['tabortallaforslag'])){
			echo "<br/><br/><form action=\"$PHP_SELF\" method=\"post\" >";
	                echo "<input type=\"submit\" name=\"bekrafta_borttagning\" value=\"Ja, ta bort alla!\" class=\"button\">";
	               echo "</form>";
	               echo "<br><br><a href=\"$PHP_SELF\">&#171 Tillbaka till förslag-sidan.</a>";
	               exit;
			}
			for ($i=0;$i<count($ids);$i++){
		             if(isset(${$ids[$i]})){
		               $result = mssql_query("UPDATE forslag SET validate=\"1\" WHERE id='$ids[$i]'")
				or die("MSSQL Query (set validate) failed");
		               echo "Byt validate till 1<br>";
				} //slut if
		               } //slut for
			for ($i=0;$i<count($deleteids);$i++){
		             if(isset(${$deleteids[$i]})){
		               $sub_id=substr($deleteids[$i],6);
		               $result = mssql_query("UPDATE forslag SET deleteit=\"1\" WHERE id='$sub_id'")
				or die("MSSQL Query (set deleteit) failed");
		               echo "Byt deleteit till 1<br>";
		               	 } //slut if
	              		} //slut for

				echo "<p><a href=\"$PHP_SELF\">&#171 Tillbaka till förslag-sidan</a></p>";

				//  Hämta rubriker, beskr från forslag-tabellen och som har validate = 1.
				
				$result = mssql_query("SELECT rubrik, beskr FROM forslag WHERE validate=\"1\"");
				while($row = mssql_fetch_array($result)){
				$rubrik = $row['rubrik'];
				$beskr = $row['beskr'];
				
				// Lägga in godkända rubriker med ev beskrivning i kunskapsbanken.

				$result = mssql_query("INSERT INTO kunskapsbank (rubrik,beskr) VALUES('$rubrik', '$beskr') WHERE forslag.validate=\"1\"")
				or die("Att lägga in rubriker i banken fungerar ej!");
				
				// $result = mssql_query("INSERT INTO kunskapsbank (rubrik, beskr) VALUES('$rubrik', '$beskr') WHERE forslag.validate="\1\"")
				// or die("Att lägga in rubriker i banken fungerar ej!");
				}

				if( rows_affected() != 0 ){
				//if (mssql_affected_rows()!=0){
					echo "Uppdateringen utförd.<br>";
				}
				// Efter dessa rubriker tagits bort ( förslagen markerade för radering raderas också)
				$result=mssql_query("DELETE FROM forslag  WHERE validate=\"1\" OR deleteit=\"1\"")
				or die("Att ta bort eller godkänna rubriker fungerar ej!");
				
		              	 mssql_close ($connection);
              			 exit;

	}else { ?>
		<h3>Inlämnade förslag</h3>

		<a href="admin.php">&#171 Tillbaka till admin-sidan.</a><br /><br />
		
		Innan du godkänner ett förslag, kontrollera gärna om samma rubrik redan finns i kunskapsbanken och har beskrivning som du vill behålla. 
	        Både rubrik och beskrivning i banken ersätts helt och hållet av den nya rubriken med ev beskrivning. 
		<?php

		// Hämta från forslag-tabellen
		$result = mssql_query("SELECT * FROM forslag ORDER BY rubrik");

		// Kolla om förslag finns
	        if(mssql_num_rows($result)== 0) {
	        die ("Inga förslag för tillfället.");
		}
			echo "<form action=\"$PHP_SELF\" method=\"post\" >";
		     	echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" width=\"100%\">";
			echo "<tr style=\"text-align: left; background-color: #FFCCFF\"><th>Rubrik</th><th>Beskrivning</th><th>Åtgärd</th></tr>";
			while ($row = mssql_fetch_array($result)) {

			// Varannan färg
				     echo "<tr bgcolor='";
					if( $i++ % 2 == 0 ){
						echo $bg1;
					}else{
						echo $bg2;
					}
				     echo "' valign=\"top\"><td width=\"85\">$row[1]</td>";

				     // Beskrivningskolumnen använder wordwrap för radbrytningar av alltför långa ord.
 				     
				     // om checkboxar för Godkänna och Ta bort ersätts med radioknappar, måste name heta samma sak. 
				     // Löses med if-sats?
				     
				     echo "<td width=\"200\">".$row[2] = wordwrap($row[2], 30, "\n", 1)."</td>";
				     echo "<td align=\"right\" width=\"90\">Godkänna: <input type=\"checkbox\" name=\"$row[0]\" value=\"1\">";
				     echo "<input type=\"hidden\" name=\"ids[]\" value=\"$row[0]\"><br>";
		     		     echo "Ta bort: <input type=\"checkbox\" name=\"delete$row[0]\" value=\"1\">";
				     echo "<input type=\"hidden\" name=\"deleteids[]\" value=\"delete$row[0]\"><br></td></tr>";
		  		     }

			echo "<tr><td align=\"right\" colspan=\"3\" height=\"30\">";
			echo "<input type=\"reset\" name=\"clear\" value=\"Rensa\" class=\"button\" />&nbsp;";
			
			// Godkänna eller ta bort markerade rubriker med beskr.
			echo "<input type=\"submit\"  name=\"utfor_atgard\" value=\"Utför åtgärd\" class=\"button\" />";

			// Med markerad checkbox tas alla förslag bort. 
			echo "&nbsp;Ta bort alla förslag: <input type=\"checkbox\" name=\"tabortallaforslag\" value=\"1\" />";
			echo "</td></tr></table>";
			echo "</form>";

			mssql_close ($connection);
			exit;
		}
	?>
</html>
</body>
Medlem sedan jan. 2004216 inlägg
#2

Fortsättning kunskapsbank

admin.php

<html>
<head>
<title></title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../style/style_main.css">
</head>
<body>
<?php

 $submitdel = $_POST['submitdel'];
 $submit_admin = $_POST['submit_admin'];

 if(!$submitdel && !$submit_admin){

// if(!$submitdel){
// ---------- Hämta rader från kunskapsbank-tabellen ----------
$query = "SELECT * FROM kunskapsbank ORDER BY rubrik";
$result = mssql_query($query);

// ------ Hämta förslag som har lämnats in. ----------
	$query2 = "SELECT * FROM forslag ORDER BY rubrik";
	$result2 = mssql_query($query2);
	
// ----- Formulär för hantering av rubriker --------
	?>
	<h3>Administrera banken</h3>

<?php
// ------ Kontrollera om förslag finns och räkna antal ---------
	
	  if(mssql_num_rows($result2) == 0){
	echo "Inga inlämnade förslag för tillfället.";
	 } else {
	echo "Antal inlämnade förslag som väntar på att bli godkända: <b>".mssql_num_rows($result2)."</b> st.<br />";
	echo "<a href=\"suggestions.php\"><u>Åtgärda dessa förslag.</u></a>";
	echo "<p><a href=\"index.php\">&#171 <u>Tillbaka</u></a></p>";
        } 
?>
	<form action="admin.php" method="post">
	<b>Lägga till, ändra och ta bort rubriker</b>
	<table cellpadding="3" border="0" cellspacing="0"><tr><td>Rubrik: <input type="text"size="25" name="rubrik" class="input"></td>
	<td><select name="action" class="input">
	<option>Lägga till</option>
	<option>Ändra</option>
	<option>Radera</option>
	</select></td></tr>
	<tr><td colspan="2">Beskrivning:<br />
	<textarea name="beskr" cols="52" rows="5" class="input"></textarea></td></tr>
	<tr><td align="right" colspan="2"><input type="reset" name="clear" value="Rensa" class="button" />&nbsp;
	<input type="submit" name="submit_admin" value="Utför åtgärd" class="button" /></td></tr>
	</table>
	</form>
<?php

// ----- Lista rubriker med beskrivning ---------
	echo "<form action=\"admin.php\" method=\"post\">";
	echo "<table cellpadding=\"3\" cellspacing=\"0\" border=\"0\" width=\"100%\">
	<tr style=\"background-color: #FFCCFF; text-align: left\"><th>Rubrik</th><th>Beskrivning</th><th width=\"10\">Markera</th></tr>";
		
	while($row = mssql_fetch_array($result)){ // Början på while-sats

	// --- Varannan färg för rader. ---
	echo "<tr bgcolor='";
		if( $i++ % 2 == 0 ){
			echo $bg1;
		}else{
			echo $bg2;
		}

	echo "' valign=\"top\">";
echo "<td width=\"80\">$row[1]</td>\n";
	// --- Beskrivningskolumnen använder wordwrap för radbrytningar och för att undvika alltför långa ord.----
	echo "<td>".$row[2] = wordwrap($row[2], 15, "\n", 1)."</td><td align=\"center\">";
	echo "<input type=\"checkbox\" name=\"ids[]\" value=\"$row[0]\" />\n";
	// echo "<input type=\"hidden\" name=\"ids[]\" value=\"$row[0]\" /></td>\n";
	echo "</tr>\n";
	} // slut på while-sats

	echo "<tr><td colspan=\"3\" align=\"right\">
	<input type=\"reset\" name=\"clear\" value=\"Rensa\" class=\"button\" />&nbsp;&nbsp;
	<input type=\"submit\" name=\"submitdel\" value=\"Ta bort\" class=\"button\" /></td></tr>";
	echo "</table></form>";
 ?>

<?php
// ------------ Ta bort markerade rubriker -----------------
} else if( $submitdel ) {
    $ids = $_POST['ids']; // Variabel som tar emot värdet från checkboxarna.
	
	if(!empty($ids)){
	for($i = 0; $i < count($ids);$i++)
	{
		if($ids[$i] > 0){
			$result = mssql_query("DELETE FROM kunskapsbank WHERE id='$ids[$i]'")
			or die( "Åtgärden fungerar ej!");
			echo "Markerade rader har nu tagits bort.";
			} 
	}// for slut
	mssql_close($connection);
	echo "<p><a href=\"admin.php\">&#171 Tillbaka till admin-sidan.</a></p>";

	}else{ 
		echo "Du har inte markerat de rader du vill ta bort.";
	  	echo "<p><a href=\"admin.php\">&#171 Tillbaka till admin-sidan.</a></p>";	
	}

/*
	for($i = 0; $i < count($ids);$i++)
	{
		if($ids[$i] > 0){
			$result = mssql_query("DELETE FROM kunskapsbank WHERE id='$ids[$i]'")
			or die( "Åtgärden fungerar ej!");
			echo "Markerade rader har nu tagits bort.";
						
   		} else {
			
			echo "Du har inte markerat de rader du vill ta bort.";
					
		} // if slut
	} // for slut
	echo "<p><a href=\"admin.php\">&#171 Tillbaka till admin-sidan.</a></p>"; 
	mssql_close($connection);
*/
	
}else if ($submit_admin) {

    $rubrik = $_POST['rubrik'];
    $beskr = $_POST['beskr'];
    $action = $_POST['action'];

	$result =  mssql_query("SELECT * FROM kunskapsbank where rubrik='$rubrik'");
    $count = mssql_num_rows($result);

	// -------------- Lägga till rubrik -------------
	if($action == 'Lägga till' && $count == 0 ){

	$result=mssql_query("INSERT INTO kunskapsbank (rubrik, beskr) VALUES('$rubrik','$beskr')");
	echo "Rubriken <b>$rubrik</b> har nu lagts in i kunskapsbanken.<br /><br />";
	echo "<a href=\"admin.php\"> &#171 Tillbaka till admin-sidan.</a>";

	mssql_close($connection);
	exit;
	}
	else if( $action == 'Lägga till' && $count != 0 ){

	echo "Rubriken <b>$rubrik</b> finns redan i kunskapsbanken!<br /><br />";
	echo "<a href=\"admin.php\">&#171 Tillbaka till admin-sidan.</a>";
	mssql_close($connection);
	exit;
	}
	// ---------- Ändra rubrik/beskrivning -------------
	if($action == 'Ändra' && $count != 0) {

	$result = mssql_query("UPDATE kunskapsbank SET beskr='$beskr' WHERE rubrik='$rubrik'");
	echo "Rubriken <b>$rubrik</b> har nu ändrats.<br /><br />";
	echo "<a href=\"admin.php\">&#171 Tillbaka till admin-sidan.</a>";
	mssql_close($connection);
	exit;
	}
	else if( $action == 'Ändra' && $count == 0 ){

	echo "Det finns ingen sådan rubrik <b>$rubrik</b> att ändra!<br /><br />";
	echo "<a href=\"admin.php\">&#171 Tillbaka till admin-sidan.</a>";
	mssql_close($connection);
	exit;
	}
	// -------------- Radera rubrik -----------
	if( $action == 'Radera' && $count != 0 ){

	$result = mssql_query("DELETE from kunskapsbank WHERE rubrik='$rubrik'");
	echo "Rubriken <b>$rubrik</b> har nu tagits bort från kunskapsbanken.";
	echo "<br /><br /><a href=\"admin.php\">&#171 Tillbaka till admin-sidan.</a>";
	mssql_close($connection);
	exit;

	}else if( $action=='Radera' && $count == 0 ){

	echo "Ingen sådan rubrik <b>$rubrik</b> som kan tas bort.";
	echo "<br /><br /><a href=\"admin.php\">&#171 Tillbaka till admin-sidan.</a>";
	mssql_close($connection);
	exit;

	}
}
?>
</body>
</html>
Medlem sedan nov. 20014 054 inlägg
#3

oh my god..

mycket kod att läsa igenom.. orkade inte riktigt som..

INSERT INTO kunskapsbank (rubrik,beskr) VALUES('$rubrik', '$beskr') WHERE forslag.validate=\"1\"

är detta de du menar att de inte funkar eller? från denna del av koden:

$result = mssql_query("SELECT rubrik, beskr FROM forslag WHERE validate=\"1\"");

                while($row = mssql_fetch_array($result)){
                $rubrik = $row['rubrik'];
                $beskr = $row['beskr'];
                
                // Lägga in godkända rubriker med ev beskrivning i kunskapsbanken.
                $result = mssql_query("INSERT INTO kunskapsbank (rubrik, beskr) VALUES('$rubrik', '$beskr') WHERE forslag.validate="1\"") or die("Att lägga in rubriker i banken fungerar ej!");

                }

i sådant fall så ta bort WHERE i INSERT-satsen.

för i SELECT satsen så plockar du juh ut redan de som är godkända.. och så läser du genom de recordsetet och lägger in dem i kunskapsbanken och så tar du och exekverar mssql-satsen varje inne i while-loopen så skall den ju för varje påträffad lägga in det i kunskapsbank.

om jag nu inte missat nåt! ;)

Medlem sedan jan. 2004216 inlägg
#4

Jag har kollat om det gick men tyvärr med oförändrat resultat.
Att jag har lagt in koden från två olika sidor här beror på att kunskapsbanken ej är tillgänglig, dvs är lösenordsskyddad.

Medlem sedan nov. 20014 054 inlägg
#5

addeweb skrev:

Jag har kollat om det gick men tyvärr med oförändrat resultat.
Att jag har lagt in koden från två olika sidor här beror på att kunskapsbanken ej är tillgänglig, dvs är lösenordsskyddad.

så du menar att den inte skriver in dem i kunskapsbanken?

Medlem sedan jan. 2004216 inlägg
#6

Ang update_set-frågorna som finns längre ner i koden. På nåt sätt funkar inte dessa frågor eftersom värdet null för kolumnerna validate och deleteit i forslagstabellen i databasen ändras inte till värdet 1 för att det ska funka. Kanske det är fel där?

Medlem sedan jan. 2004216 inlägg
#7

Nä, den har inget med lösordsskyddet att göra om. Det är bara administratören som har tillgång till dessa sidor, admin-sidan och förslagssidan. De sidor som är tillgängliga för andra är lämna-förslag-sida med formulär och söksida med A-Ö Alla och sökfält. Lämna_förslag-formuläret är också skyddat och används av medlemmar.

Medlem sedan nov. 20014 054 inlägg
#8

addeweb skrev:

Ang update_set-frågorna som finns längre ner i koden. På nåt sätt funkar inte dessa frågor eftersom värdet null för kolumnerna validate och deleteit i forslagstabellen i databasen ändras inte till värdet 1 för att det ska funka. Kanske det är fel där?

$result = mssql_query("UPDATE forslag SET validate=\"1\" WHERE id='$ids[$i]'") or die("MSSQL Query (set validate) failed");[/php[php]
$result = mssql_query("UPDATE forslag SET deleteit=\"1\" WHERE id='$sub_id'") or die("MSSQL Query (set deleteit) failed");

by the way, skriv ut satsen, så du ser om det skickas med nå värde och så.. men annars ska de juh vara korrekt i sqlen här alltså.. hmm.. klurigt när man inte kan testa koden! :D

Medlem sedan nov. 20014 054 inlägg
#9

addeweb skrev:

Nä, den har inget med lösordsskyddet att göra om. Det är bara administratören som har tillgång till dessa sidor, admin-sidan och förslagssidan. De sidor som är tillgängliga för andra är lämna-förslag-sida med formulär och söksida med A-Ö Alla och sökfält. Lämna_förslag-formuläret är också skyddat och används av medlemmar.

hade räknat ut de! ;) undrade bara om de skriver in dem i kunskapsbanken?

Medlem sedan jan. 2004216 inlägg
#10

För tillfället läggs inte rubrikerna med beskrivning i banken. Det går bara om man ändrar manuellt i forslagstabellen , ändra till 1 för att det ska funka men då blir det blankrader på admin-sidan.

Medlem sedan nov. 20014 054 inlägg
#11

addeweb skrev:

För tillfället läggs inte rubrikerna med beskrivning i banken. Det går bara om man ändrar manuellt i forslagstabellen , ändra till 1 för att det ska funka men då blir det blankrader på admin-sidan.

blank rader på admin sidan.. med det menar du att förslagen inte längre syns eller är jag iq-fiskmås idag? :OO

Medlem sedan jan. 2004216 inlägg
#12

Förslagen syns fortfarande på förslagsidan medan motsvarande rader hos admin-sidan är blanka. Det blir så om man ändrar i databasen manuellt, annars händer ingenting.

Medlem sedan nov. 20014 054 inlägg
#13

addeweb skrev:

Förslagen syns fortfarande på förslagsidan medan motsvarande rader hos admin-sidan är blanka. Det blir så om man ändrar i databasen manuellt, annars händer ingenting.

okai... och vad skiljer i sqlsatserna mellan dessa två?

Medlem sedan jan. 2004216 inlägg
#14

Jag har skickat ett privat meddelande till dig.

Om man markerar checkboxar till höger om varje rad och sedan klickar på knappen "Utför åtgärd", då ska man sätta värde 1 på de rubriker som man markerat för borttag eller godkännande. Det gör man med update_set frågorna. På samma gång körs sql-frågorna "insert into....", "select...." och "delete...." för de markerade frågorna.

Medlem sedan jan. 2004216 inlägg
#15

Finns nån annan som kan hjälpa mig??

Medlem sedan jan. 2004216 inlägg
#16

Fortfarande problem med kunskapsbanken

Det funkar inte med banken än. Har gjort de ändringar som krävs men nånting fattas.
Har gjort ändringar så här i filen:suggestions.php.

// Nuvarande kod
				     echo "Godkänna: <input type=\"checkbox\" name=\"ids[]\" value=\"$row[0]\"><br>";		
				     echo "Ta bort: <input type=\"checkbox\" name=\"deleteids[]\" value=\"delete$row[0]\">";
		     		    
				    // Tidigare kod
				    // echo "Godkänna: <input type=\"checkbox\" name=\"$row[0]\" value=\"1\">";
				    // echo "<input type=\"hidden\" name=\"ids[]\" value=\"$row[0]\"><br>";
				    // echo "Ta bort: <input type=\"checkbox\" name=\"delete$row[0]\" value=\"1\">";
				    // echo "<input type=\"hidden\" name=\"deleteids[]\" value=\"delete$row[0]\">";

Och så har jag också i början av body-innehållet lagt in följande variabler som tar emot värdet från checkboxarna:

 $ids = $_POST['ids'];
 $deleteids = $_POST['deleteids'];

Återigen hela koden i helhet i suggestions.php med nämnda ändringar...

function rows_affected(){
$result = mssql_query("SELECT @@ROWCOUNT");
list($affected) = mssql_fetch_row($result);
return $affected;
}

// Färgvariabler för lista med varannan färg
$bg1 = "#FFFFFF";
$bg2 = "#FFEEFF";

?>
<html>
<head>
<title></title>
<title></title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../style/style_main.css">
</head>

<body>
<?php

    $bekrafta_borttagning = $_POST['bekrafta_borttagning'];
    $utfor_atgard = $_POST['utfor_atgard'];
    
    $ids = $_POST['ids'];
    $deleteids = $_POST['deleteids'];

	if($bekrafta_borttagning){

        $result = mssql_query("DELETE FROM forslag") or die("Att ta bort alla förslag fungerar ej!");
        die("Alla förslag raderade!");
	}
	if ($utfor_atgard){
	         if(isset($_POST['tabortallaforslag'])){
			echo "<br/><br/><form action=\"$PHP_SELF\" method=\"post\" >";
	                echo "<input type=\"submit\" name=\"bekrafta_borttagning\" value=\"Ja, ta bort alla!\" class=\"button\">";
	               echo "</form>";
	               echo "<br><br><a href=\"$PHP_SELF\">&#171 Tillbaka till förslag-sidan.</a>";
	               exit;
			}
			
			for ($i=0;$i<count($ids);$i++){
		             if(isset(${$ids[$i]})){
		               $result = mssql_query("UPDATE forslag SET validate=\"1\" WHERE id='$ids[$i]'")
				or die("MSSQL Query (set validate) failed");
		               echo "Byt validate till 1<br>"; 
				} //slut if
		               } //slut for
			for ($i=0;$i<count($deleteids);$i++){
		             if(isset(${$deleteids[$i]})){
		               $sub_id=substr($deleteids[$i],6); 
		               $result = mssql_query("UPDATE forslag SET deleteit=\"1\" WHERE id='$sub_id'")
				or die("MSSQL Query (set deleteit) failed");
		               echo "Byt deleteit till 1<br>";
		               	 } //slut if
	              		} //slut for

				echo "<p><a href=\"$PHP_SELF\">&#171 Tillbaka till förslag-sidan</a></p>";

				//  Hämta rubriker, beskr från forslag-tabellen och som har validate = 1.
				
				$result = mssql_query("SELECT rubrik, beskr FROM forslag WHERE validate=\"1\"");
				while($row = mssql_fetch_array($result)){
				$rubrik = $row['rubrik'];
				$beskr = $row['beskr'];
				
				// Lägga in godkända rubriker med ev beskrivning i kunskapsbanken.
				$result = mssql_query("INSERT INTO kunskapsbank (rubrik,beskr) VALUES('$rubrik', '$beskr')")
				//$result = mssql_query("INSERT INTO kunskapsbank (rubrik,beskr) VALUES('$rubrik', '$beskr') WHERE forslag.validate=\"1\"")
				or die("Att lägga in rubriker i banken fungerar ej!");
				
				}

				if( rows_affected() != 0 ){
				//if (mssql_affected_rows()!=0){
					echo "Uppdateringen utförd.<br>";
				}
				// Efter dessa rubriker tagits bort ( förslagen markerade för radering raderas också)
				$result=mssql_query("DELETE FROM forslag  WHERE validate=\"1\" OR deleteit=\"1\"")
				or die("Att ta bort eller godkänna rubriker fungerar ej!");
				
		              	 mssql_close ($connection);
              			 exit;

	}else { ?>
		<h3>Inlämnade förslag</h3>

		<a href="admin.php">&#171 Tillbaka till admin-sidan.</a><br /><br />
		
		Innan du godkänner ett förslag, kontrollera gärna om samma rubrik redan finns i kunskapsbanken och har beskrivning som du vill behålla. 
	        Både rubrik och beskrivning i banken ersätts helt och hållet av den nya rubriken med ev beskrivning. 
		<?php

		// Hämta från forslag-tabellen
		$result = mssql_query("SELECT * FROM forslag ORDER BY rubrik");

		// Kolla om förslag finns
	        if(mssql_num_rows($result)== 0) {
	        die ("Inga förslag för tillfället.");
		}
			echo "<form action=\"$PHP_SELF\" method=\"post\" >";
		     	echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" width=\"100%\">";
			echo "<tr style=\"text-align: left; background-color: #FFCCFF\"><th>Rubrik</th><th>Beskrivning</th><th>Åtgärd</th></tr>";
			while ($row = mssql_fetch_array($result)) {

			// Varannan färg
				     echo "<tr bgcolor='";
					if( $i++ % 2 == 0 ){
						echo $bg1;
					}else{
						echo $bg2;
					}
				     echo "' valign=\"top\"><td width=\"85\">$row[1]</td>";

				     // Beskrivningskolumnen använder wordwrap för radbrytningar av alltför långa ord.
 				     			     
				     echo "<td width=\"200\">".$row[2] = wordwrap($row[2], 30, "\n", 1)."</td>";
				     echo "<td align=\"right\" width=\"90\">";
				   
				    // Nuvarande kod
				     echo "Godkänna: <input type=\"checkbox\" name=\"ids[]\" value=\"$row[0]\"><br>";		
				     echo "Ta bort: <input type=\"checkbox\" name=\"deleteids[]\" value=\"delete$row[0]\">";
		     		    
				    // Tidigare kod
				    // echo "Godkänna: <input type=\"checkbox\" name=\"$row[0]\" value=\"1\">";
				    // echo "<input type=\"hidden\" name=\"ids[]\" value=\"$row[0]\"><br>";
				    // echo "Ta bort: <input type=\"checkbox\" name=\"delete$row[0]\" value=\"1\">";
				    // echo "<input type=\"hidden\" name=\"deleteids[]\" value=\"delete$row[0]\">";

				     echo "</td></tr>";
		  		     }

			echo "<tr><td align=\"right\" colspan=\"3\" height=\"30\">";
			echo "<input type=\"reset\" name=\"clear\" value=\"Rensa\" class=\"button\" />&nbsp;";
			
			// Godkänna eller ta bort markerade rubriker med beskr.
			echo "<input type=\"submit\"  name=\"utfor_atgard\" value=\"Utför åtgärd\" class=\"button\" />";

			// Med markerad checkbox tas alla förslag bort. 
			echo "&nbsp;Ta bort alla förslag: <input type=\"checkbox\" name=\"tabortallaforslag\" value=\"1\" />";
			echo "</td></tr></table>";
			echo "</form>";

			mssql_close ($connection);
			exit;
		}
	?>
</html>
</body>
Medlem sedan jan. 2004216 inlägg
#17

Jag har slitit alltför länge med kunskapsbanken utan att komma
nånstans vart. Kanske det är för mycket kod i tidigare inlägg som
skrämmer en del här?? Tanken var ju att få en helhet om hur det
fungerar. Nåväl, jag får väl kanske skapa en ny tråd med de viktigaste delarna istället. Eller behöver jag inte göra det?

Medlem sedan nov. 20014 054 inlägg
#18

addeweb skrev:

Jag har slitit alltför länge med kunskapsbanken utan att komma
nånstans vart. Kanske det är för mycket kod i tidigare inlägg som
skrämmer en del här?? Tanken var ju att få en helhet om hur det
fungerar. Nåväl, jag får väl kanske skapa en ny tråd med de viktigaste delarna istället. Eller behöver jag inte göra det?

du kan plocka ut de delarna som du tror inte funkar! :)

harinte hunnit grunna igenom koden ordentligt än... ska göra det ikväll och då får du varför om inte nån annan hunnit tidigare! :)

Medlem sedan jan. 2004216 inlägg
#19

En förkortad version av banken

Här är en förkortad version nedan av suggestions.phjp
som jag plockat ihop delar till från originalet som finns i tidigare
inlägg ovan så att någon förhoppningsvis inte ska behöva bli
alltför utmattad... :)

$ids = $_POST['ids'];
$deleteids = $_POST['deleteids'];
if ($utfor_atgard){
   for ($i=0;$i<count($ids);$i++){
                  if(isset(${$ids[$i]})){
                     $result = mssql_query("UPDATE forslag SET validate=\"1\" WHERE id='$ids[$i]'")
              or die("MSSQL Query (set validate) failed");
                       echo "Byt validate till 1<br>"; 
                } //slut if
                        } //slut for
             for ($i=0;$i<count($deleteids);$i++){
                      if(isset(${$deleteids[$i]})){
                        $sub_id=substr($deleteids[$i],6); 
                        $result = mssql_query("UPDATE forslag SET deleteit=\"1\" WHERE id='$sub_id'")
                or die("MSSQL Query (set deleteit) failed");
                      echo "Byt deleteit till 1<br>";
                             } //slut if
                          } //slut for
  
                 echo "<p><a href=\"$PHP_SELF\">&#171 Tillbaka till förslag-sidan</a></p>";
 
//  Hämta rubriker, beskr från forslag-tabellen och som har validate = 1.
                
                $result = mssql_query("SELECT rubrik, beskr FROM forslag WHERE validate=\"1\"");
                while($row = mssql_fetch_array($result)){
               $rubrik = $row['rubrik'];
                 $beskr = $row['beskr'];
                 
                // Lägga in godkända rubriker med ev beskrivning i kunskapsbanken.
                $result = mssql_query("INSERT INTO kunskapsbank (rubrik,beskr) VALUES('$rubrik', '$beskr')")
                //$result = mssql_query("INSERT INTO kunskapsbank (rubrik,beskr) VALUES('$rubrik', '$beskr') WHERE forslag.validate=\"1\"")
                or die("Att lägga in rubriker i banken fungerar ej!");
                 
                 }
  
 // Efter dessa rubriker tagits bort ( förslagen markerade för radering raderas också)
                 $result=mssql_query("DELETE FROM forslag  WHERE validate=\"1\" OR deleteit=\"1\"")
                 or die("Att ta bort eller godkänna rubriker fungerar ej!");
                 
                            mssql_close ($connection);
                            exit;
 
 }else {
 
 // Hämta från forslag-tabellen
         $result = mssql_query("SELECT * FROM forslag ORDER BY rubrik");
 
// Hämta från forslag-tabellen
        $result = mssql_query("SELECT * FROM forslag ORDER BY rubrik");
 
       // Kolla om förslag finns
           if(mssql_num_rows($result)== 0) {
           die ("Inga förslag för tillfället.");
        }
            echo "<form action=\"$PHP_SELF\" method=\"post\" >";
                 echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" width=\"100%\">";
            echo "<tr style=\"text-align: left; background-color: #FFCCFF\"><th>Rubrik</th><th>Beskrivning</th><th>Åtgärd</th></tr>";
            while ($row = mssql_fetch_array($result)) {
 
            // Varannan färg
                      echo "<tr bgcolor='";
                    if( $i++ % 2 == 0 ){
                         echo $bg1;
                    }else{
                         echo $bg2;
                    }
                      echo "' valign=\"top\"><td width=\"85\">$row[1]</td>";

                      // Beskrivningskolumnen använder wordwrap för radbrytningar av alltför långa ord.
                                        
                     echo "<td width=\"200\">".$row[2] = wordwrap($row[2], 30, "\n", 1)."</td>";
                      echo "<td align=\"right\" width=\"90\">";
                    
                   // Nuvarande kod
                     echo "Godkänna: <input type=\"checkbox\" name=\"ids[]\" value=\"$row[0]\"><br>";        
                     echo "Ta bort: <input type=\"checkbox\" name=\"deleteids[]\" value=\"delete$row[0]\">";
                          
                     // Tidigare kod
                    // echo "Godkänna: <input type=\"checkbox\" name=\"$row[0]\" value=\"1\">";
                    // echo "<input type=\"hidden\" name=\"ids[]\" value=\"$row[0]\"><br>";
                     // echo "Ta bort: <input type=\"checkbox\" name=\"delete$row[0]\" value=\"1\">";
                    // echo "<input type=\"hidden\" name=\"deleteids[]\" value=\"delete$row[0]\">";

                     echo "</td></tr>";
                       }
 
             echo "<tr><td align=\"right\" colspan=\"3\" height=\"30\">";
             echo "<input type=\"reset\" name=\"clear\" value=\"Rensa\" class=\"button\" />&nbsp;";
            
            // Godkänna eller ta bort markerade rubriker med beskr.
             echo "<input type=\"submit\"  name=\"utfor_atgard\" value=\"Utför åtgärd\" class=\"button\" />";
  
             echo "</td></tr></table>";
             echo "</form>";
 
             mssql_close ($connection);
            exit;
         }

Till Fredde vill jag gärna nämna att jag har ändrat lite på
admin-sidan att rubrikerna under rubrik-kolumnen på sidan är nu
länkar som kan öppnas till ett formulär med rubrik och beskr
redan ifyllda i rutorna. Det har inget med förslagssidan att göra,
bara underlättar för användaren att ändra i innehållet. ;)

Medlem sedan nov. 20014 054 inlägg
#20

En sak!

Jo en sak, jag vet inte om det var för att jag inte har arbetat med PHP nu på typ 2 månader. Men i alla fall i ASP så har vi ex denna kod:

<%
dim ids, deleteids, utfor_atgard

ids = Array(Request.Form("ids[]"))
utfor_atgard = Request.FOrm("utfor_atgard")

if(utfor_atgard <> "") Then
	For i = 0 To Ubound(ids)
		if(ids(i) <> "") Then
			Response.Write(ids(i) & "<br />")
		End if
	Next
End if
%>
<form name="form1" action="test.asp" method="POST">
	<input name="ids[]" value="1" type="text"><br />
	<input name="ids[]" value="145" type="text"><br />
	<input name="ids[]" value="451" type="text"><br />
	<input name="ids[]" value="3451" type="text"><br />
	<input name="ids[]" value="234" type="text"><br />
	<input name="ids[]" value="45" type="text"><br />
	<input name="ids[]" value="3" type="text"><br />
	<input type="submit" name="utfor_atgard" value="utför åtgärd" />
</form>

Lägg märke till att om jag har i input namnet ids[], så måste jag ha i min request.form() samma namn.. så om du i ditt script ändrar i form i inputen var du döpt dem till ids[] och deleteids[], ta bort hakparenteserna så bör det funka.. hittar som inget annat som skulle kunna vara felet..

för i mitt asp-exempel så funkar det inte om jag i formen har hakparenteser men inte i request.form().. det måste vara samma namn! ;)

detta bör lösa ditt problem

$ids = $_POST['ids'];
$deleteids = $_POST['deleteids'];

frågar efter ids och deleteids inte efter ids[] och deleteids[]

:)

271 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
115 ms — deklarationer (db)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)