webForumDet fria alternativet

update funkar inte

PHP

14 svar · 448 visningar · startad av mr.mainline

Medlem sedan feb. 2003777 inlägg
Frågan#1

jag har en text på index sidan som jag vill kunna uppdatara,jag använder mysql, och koden funkar inte riktigt,jag får inga felmeddelamde,men när jag klicka på "Redigera texten" så kommer det tillbaka till samma text som jag hade innan, någon som kan hitta felet?.

<form method="POST" action="uppdat.php">
<textarea name="maintext" cols="40" rows="20">
<?php
$conn = mysql_connect("localhost", "******", "******") or die("Kunde inte skapa koppling!");
			  mysql_select_db("******") or die("Kunde inte välja databas");

$hamta = "SELECT text FROM main";
$resultat = mysql_query($hamta) or die ("Kunde inte hämta info från db");

while($rad = mysql_fetch_array($resultat))
echo(  $rad["text"]   );

mysql_free_result($resultat);
?>
</textarea>
<br><br><input type="submit" value="Redigera texten">
</form>
<?
if(!empty($_POST['text']) and empty ($_POST['perform']))
{
$text = $_POST['text'];
$hamta = "SELECT * FROM main WHERE text = '$'text' " ;
$resultat = mysql_query($hamta) or die("Det gick inte att hämta info från db");
$rad=mysql_fetch_object($resultat);

echo ("<form method=POST action=uppdat.php>");
echo ("<input type=hidden name=text value=" . $rad->text . ">");
echo ("<input type=hidden name=perform value=uppdat>");
echo ("<input type=submit value=Redigera texten>");

mysql_free_result($resultat);
}
if(!empty($_POST['preform']))
{
$text = $_POST['text'];
$del = "UPDATE main SET text = '$text' ";
mysql_query($del) or die ("Kunde inte radera från databasen");
}
?>

Ni kan testa på https://www.freddeholm.com/admin/uppdat.php

Medlem sedan juni 20006 031 inlägg
#2

Luskade igenom koden lite snabbt och fann att du i din kod har

if(!empty($_POST['text']) and empty ($_POST['perform']))

Men i koden du har postat hittar jag inget i formuläret som heter text eller perform. Textfältet heter ju maintext t.ex.

Medlem sedan feb. 2003777 inlägg
#3

Måste m,an använda hidden fält?? för att få det att funka?

Medlem sedan juni 20006 031 inlägg
#4

Nej du behöver inte använda hidden fält.
Testa detta

<?php
$conn = mysql_connect("localhost", "******", "******") or die("Kunde inte skapa koppling!");
mysql_select_db("******") or die("Kunde inte välja databas");

if (isset($_POST['redigera'])) {
	//Kolla så det finns text
	if (empty($_POST['maintext'])) {
		echo "Du måste fylla i en text";
	} else {
		//Här kör du din update då du lägger in i databasen
	}
} else {
?>
<form method="POST" action="9.php">
<textarea name="maintext" cols="40" rows="20">
<?php
// här hämtar du texten som ska kunna redigeras
?>
</textarea>
<br><br><input type="submit" name="redigera" value="Redigera texten">
</form>
<?php
}
?>
Medlem sedan feb. 2003777 inlägg
#5

ok,ska testa det,tack,bara en fråga varför använder man hidden fält?? jag hittade det oxå i INTERNETWORLD tidningen.

Medlem sedan juni 20006 031 inlägg
#6

Hidden fält använder du för att skicka med värden från ett formulär som användaren inte ska kunna ändra. Kan vara bra ibland att använda sig av, t ex om du vill skicka med ett usernamne, referer eller något annat.

Medlem sedan feb. 2003777 inlägg
#7

ok,tack ska du ha Pedda.

Medlem sedan feb. 2003777 inlägg
#8

får fortfarande inte rätt på det,så här ser koden ut nu.

<?
$conn = mysql_connect("localhost", "******", "******") or die("Kunde inte skapa koppling!");
mysql_select_db("******") or die("Kunde inte välja databas");

if (isset($_POST['redigera'])) {
    //Kolla så det finns text
    if (empty($_POST['maintext'])) {
        echo "Du måste fylla i en text";
    } else {
	  //Här körs update då det läggs in i databasen
	  $del = "UPDATE main SET text = ['$text'],  WHERE id = 1  ";
	  echo ("Texten är nu uppdaterad");
	  mysql_query($del) or die("Det gick inte att uppdatara texten i main");	
		}
} else {
?>
<form method="POST" action="admin_hem.php">
<textarea name="maintext" cols="40" rows="20">
<?php
//  hämtar texten som ska redigeras
      $text = $_POST['text'];
      $hamta = "SELECT * FROM main ";
      $resultat = mysql_query($hamta) or die ("Det gick inte att hämta info från db");
       while ($rad = mysql_fetch_array($resultat))
       echo $rad['text'];
	   mysql_free_result($resultat);
	   mysql_close($conn);
?>
</textarea>
<br><br><input type="submit" name="redigera" value="Redigera texten">
</form>
<?php
}
?>
Medlem sedan dec. 200012 464 inlägg
#9
$del = "UPDATE main SET text = '" . $text ."'  WHERE id = 1";
mysql_query($del) or 
die("Det gick inte att uppdatara " . mysql_error());
Medlem sedan feb. 2003777 inlägg
#10

Då uppdataeras inte texten alls,utan där det ska visas blir bara vit bakgrund och ingen text alls,jag kollade oxå i databasen och då den raden som där var text i har blivit tom.

Medlem sedan juni 20006 031 inlägg
#11
$del = "UPDATE main SET text = '" . $_POST['maintext']."'  WHERE id = 1";
mysql_query($del) or 
die("Det gick inte att uppdatara " . mysql_error());
Medlem sedan jan. 20023 327 inlägg
#12

Pedda skrev:

Luskade igenom koden lite snabbt och fann att du i din kod har

if(!empty($_POST['text']) and empty ($_POST['perform']))

Men i koden du har postat hittar jag inget i formuläret som heter text eller perform. Textfältet heter ju maintext t.ex.

Det där väl inte heller korrekt php-syntax, borde väl vara...

if(!empty($_POST['text']) && empty ($_POST['perform']))

Eller har jag missat något?

Medlem sedan juni 20006 031 inlägg
#13

Compusa skrev:

Eller har jag missat något?

&& eller AND går att använda likadant som du kan använda || istället för OR.
Men jag håller med dig, använder själv && och || istället för AND och OR.

Medlem sedan jan. 20023 327 inlägg
#14

Okej visste inte att det gick göra så i PHP, tänker inte göra det heller ;) Att jag inte trodde det gick att göra har nog med att jag av misstag skrivit så i Java, där fungerar det garanterat inte :)

Medlem sedan feb. 2003777 inlägg
#15

Pedda: det funkade som du skrev,tack.

299 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
159 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
155 ms — ändringar (db)