webForumDet fria alternativet

Ändra i tabell

12 svar · 747 visningar · startad av tanten

tantenMedlem sedan nov. 20051 596 inlägg
#1

Nu har jag försökt och försökt... Medan datorn har pajat och jag försökt komma ihåg hur jag gjort tidigare och inte gjort. Suck! Koden börjar se helt förfärlig ut så nu tänkte jag fråga innan jag fortsätter. Är detta möjligt med bara php?
Hämta en hästs namn i option som sedan lägger in hästens kolumn i textarea som ska redigeras och sparas. Eller måste man skicka vidare till ny sida?
Tog bort länken som fanns här tidigare.
Tacksam för lite tips om hur man gör detta bäst.

SpinxMedlem sedan nov. 200321 inlägg
#2

Om du använder PHP tillsammans med Javascript så går det att lösa

Skapa upp en javascript array: hastar[1] = "bla bla bla text som skall editeras"
Denna kan du skapa upp via php.

Exempel på hur jag har gjort:

<script language="javascript">
bgcolor = new Array();
<?
$sql = "select * from templates order by id";
$res = mysql_query($sql) or die(mysql_error()."<br>".$sql);
while ($row = mysql_fetch_assoc($res)) {
	echo "bgcolor[".$row['id']."] = '".$row['bgcolor']."';";
}
?>
function updatebgcolor() {
	bgcolorform = document.getElementById('bgcolor');
	bgcolorform.value = bgcolor[document.getElementById('option').value];
}
</script>

Sen använder du onChange="updatebgcolor();" i optionen.

Option måste då ha id "option" och textarea måste ha id "bgcolor" i mitt exempel

tantenMedlem sedan nov. 20051 596 inlägg
#3

Tack så mycket Spinx, ska se senare i kväll om jag kan få i hop det. :D
Känns lite mer motiverat att försöka igen nu...

tantenMedlem sedan nov. 20051 596 inlägg
#4

Jag tar upp min gamla tråd igen. Har inte hunnit att fortsätta med den förrän nu. Vad är fel? Vad behövs. Har försökt få in javascriptet men vet nog inte hur man gör :r
Någon som kan ge tips om hur jag ska gå vidare.? Eller är det här fel sätt att göra detta på? Hämta en text. Redigera den och spara på en och samma admin-sida. Taget ur en bok.

$hamta = "SELECT h.stallID, h.namn, h.besk
          FROM hest AS h
          INNER JOIN stallad AS s ON ( h.stallID = s.stallID )
          WHERE s.ur_treningDatum IS NULL
			 ORDER BY namn";
$resultat = mysql_query($hamta) or die("Det gick inte att hämta information från databasen!");
 
while($rad = mysql_fetch_array($resultat))
{
	echo "<option value='{$rad['stallID']}' >{$rad['namn']} </option>";
}

echo "</select></fieldset><p>

<input type='submit' name='Submit' value='submit' /></p></form>";

// ett försk att hitta array $rad = $_POST['namn'];
 mysql_free_result($resultat);
	
if(isset($_POST['namn']))
{
	$sql2="SELECT besk FROM hest WHERE namn='{$_POST['namn']}'AND stallID='$stallID'"; 
	$result=mysql_query($sql2);
	$besk = mysql_fetch_array($result);
	
	//uppdateringen börjar här

	if (isset($_POST['submit']) && $_POST['submit'] == 'Submit') 
	{ 
		//formatera data
		$besk = $_POST['besk'];
		$as_besk = addslashes($_POST['besk']);

		//uppdatera beskrivningen
	 	$query = "UPDATE besk SET besk = '$as_besk   WHERE namn = '{$rad['namn']}'"; 
	
		$result = mysql_query($query);
	
		if (mysql_affected_rows() == 1) 
		{
			$success_msg = '<p> Beskrivningen har blivit uppdaterad!</p>';
		}else{
	 		error_log(mysql_error());
	 		$success_msg = '<p>Något blev fel</p>';
	   }
	}else{
		//På något sätt ska besk hämtas, detta är ett försök som inte fungerar 
		$rad = $_POST['namn'];	
		$query ="SELECT  besk FROM  hest WHERE  namn`  = {$rad['namn']}";
		if ($result = mysql_query($query));
		$besk_arr = mysql_fetch_array($result);
		$besk = stripslashes ($besk_arr[1]);
		
	}

	
$thispage = $_SERVER['PHP_SELF'];
}
DufferMedlem sedan mars 2003429 inlägg
#5

Alltså vill du hämta den data som är sparad för just den hästen och visa det i textarean? eller vill du bara lägga in hästnamnet i textarean, förstod inte riktigt din fråga!

Inget av det ska vara några problem med javascript så det löser vi ;-)

mvh

tantenMedlem sedan nov. 20051 596 inlägg
#6

Ja det är data för en häst i taget jag vill få in i textarean. Som ska kunna redigeras och sparas på nytt. Idén syns i länken i första inlägget... Tror det finns en del fel i koden också...
Har varit utan ström i 18 timmar nu i stormen, hoppas den är kvar för att stanna nu :-)
MVH

aasahMedlem sedan mars 20034 471 inlägg
#7

Det där kan lösas utan JavaScript genom att döpa fälten i formen med name och ladda om sidan. Om du ger dina två submit-knappar olika namn, så kan du fånga de olika knapparna var för sig. Varje formfält som får ett name kan kommas åt via det namnet.

$_POST['index'] fångar resultatet från det formelement som innehåller
.... name="index"....

//Översta formen skrivs alltid ut på samma sätt
echo '<form name="HastVal" method="post" action="dennaFil.php">
<select name="hast">';
$hamta = "SELECT h.stallID, h.namn
          FROM hest AS h 
          INNER JOIN stallad AS s ON ( h.stallID = s.stallID ) 
          WHERE s.ur_treningDatum IS NULL 
             ORDER BY namn"; 
$resultat = mysql_query($hamta) or die("Det gick inte att hämta information från databasen!"); 

while($rad = mysql_fetch_array($resultat)) 
{ 
    echo '<option value="'.$rad['stallID'].'" >'.$rad['namn'].' </option>'; 
} 

echo '</select></fieldset><p> 

<input type="submit" name="SubmitHastVal" value="submit" /></p></form>';

//Om första submitknappen tryckts in OCH du har valt en häst
if (isSet($_POST["SubmitHastVal"]) && isSet($_POST["hast"])) {
   //Hämta befintlig info om hästen
   $sql2="SELECT besk FROM hest WHERE stallID=".$_POST['hast']; 
   $result=mysql_query($sql2); 
   $row = mysql_fetch_array($result); 
   $info = $row[0];
   $hastID = $_POST["hast"];
} 
else {
   $info = '';
   $hastID = '';
}

//Andra formen laddas med befintlig info OM 
//första submitknappen tryckts in OCH du har valt en häst
//Annars är textfältet tomt

echo '<form name="updateInfo" method="post" action="dennaFil.php">
<textarea name="infoField">'.$info.'</textarea>
<input type="hidden" name="hastID" value="'.$hastID.'">
<input type="submit" name="SubmitUpdate" value="submit" /></form>';

//Om andra formen fyllts i - uppdatera
if (isSet($_POST["SubmitUpdate"]) && isSet($_POST["infoField"])) {
   $sql3= "UPDATE hest SET besk='".$_POST["infoField"]."' WHERE stallID = $hastID";
   mysql_query($sql3); 
}

Obs att felhanteringen är minimal här!

tantenMedlem sedan nov. 20051 596 inlägg
#8

Suttit nu och försökt få ditt förslag att fungera aasah, men får "No input file specified", när jag tryckt på en häst.
Ska <form name="updateInfo"... se ut så? Jag hittar ingen $_post för den, eller ska det inte behövas i textfield?
Har skickat med
error_reporting(E_ALL); men får inga andra felmeddelanden.

Peter SMedlem sedan dec. 20025 483 inlägg
#9

För action måste du ändra till edit.php.

tantenMedlem sedan nov. 20051 596 inlägg
#10

Peter S. Men så korkad jag är! :r
Tack så jättemycket :bire

tantenMedlem sedan nov. 20051 596 inlägg
#11

Nu har jag kommit en bit till med denna adminsida, men uppdateringen fungerar inte.

$sql3= "UPDATE hest SET besk='".$_POST["infoField"]."' WHERE stallID = $hastID";

När jag lagt till echo så visar det sig att $hastID inte har något värde.

När jag då på olika sätt försökte få fram värdet så blev det så här

$sql3 = ("UPDATE hest SET besk='" . $_POST["infoField"]."' WHERE stallID = '{$_POST['hastID']}'" or die ("Error: " . mysql_error()); 
   echo ("$sql3");)

vilket ser fel ut...
men då blev echo:
UPDATE hest SET besk='Jag har ...o.s.v. ' WHERE stallID = '2'
Men inget händer i databasen och inget annat fel skrivs ut.
Jag har inte ändrat något annat i koden som aasah visade högre upp.
Vad har jag missat? :(

aasahMedlem sedan mars 20034 471 inlägg
#12

Du har tappat en väsentlig bit... Tantens kod:

$sql3 = ("UPDATE hest SET besk='" . $_POST["infoField"]."' WHERE stallID = '{$_POST['hastID']}'" or die ("Error: " . mysql_error()); 
   echo ("$sql3");)

$sql3 är/borde vara en sträng med ett SQL-anrop. Men som su skriver försöker du tilldela den resultatet av att ha kört strängen i databasen! Ändra till:

$sql3 = "UPDATE hest SET besk='" . $_POST["infoField"]."' WHERE stallID = ".$_POST['hastID'];
$res = mysql_query($sql3) or die ("Error: " . mysql_error());

Observera också att stallID är en siffra. Siffror har inga '-fnuttar runt sig.

tantenMedlem sedan nov. 20051 596 inlägg
#13

Åh tack så mycket... Du är en guldstjärna!

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)