Avatar billede optur Novice
29. maj 2010 - 21:38 Der er 25 kommentarer og
1 løsning

Updatere database

Jeg er ved at prøve at lave en opdatering fra flere sider i en kode, jeg har bygget hjemmesiden op i functions, hvor menupunkterne 2, 3, 4, 5 og 6 har under punkter.

Hvert overpunkt er tildelt variablen $id, eks:
Forside ($id=1)
Kode:
function home($id,$idx,$action) {
$resultat = mysql_query("SELECT title,content FROM content WHERE id='$id'");
$row = mysql_fetch_array($resultat);
$body = $row['content'];
$title = $row['title'];
?>
<div id="content">
<?php echo $title; ?>
<?php if($action==succes) { ?> <h1>done</h1> <?php } ?>
<?php if($action==error) { ?> <h1>error</h1> <?php } ?>

<form action="./index.php?id=1&action=update" method="post">
<textarea id="elm1" name="content" rows="20" cols="80" style="width: 425px"><?php echo $body; ?></textarea>
<input type="submit" value="Opdatere" />
</form>
</div>
<?php
}

hovedpunkt 2 med undermenu ($id=1&idx=1) hvor idx variablen er sat til undermenupunkterne.
Kode:
function about($id,$idx,$action) {
if(!isset($idx)) {
$resultat = mysql_query("SELECT title,content FROM content WHERE idx='$id'");
} else {
$resultat = mysql_query("SELECT title,content FROM about WHERE id='$id'");
}
?>
<ul id="navilist">
<li><a href="./?id=3&idx=1">B&oslash;rnehaven i hverdagen<img src="../images/gren.png" class="branch" width="187" height="30" alt="gren" /></a></li>
<li><a href="./?id=3&idx=2">Madpolitik<img src="../images/gren.png" class="branch" width="187" height="30" alt="gren" /></a></li>
<li><a href="./?id=3&idx=3">&Aring;rsplan<img src="../images/gren.png" class="branch" width="187" height="30" alt="gren" /></a></li>
<li><a href="./?id=3&idx=4">Virksomhedsplan<img src="../images/gren.png" class="branch" width="187" height="30" alt="gren" /></a></li>
<li><a href="./?id=3&idx=5">Sprogstimulering<img src="../images/gren.png" class="branch" width="187" height="30" alt="gren" /></a></li>
<li><a href="./?id=3&idx=6">Traditioner<img src="../images/gren.png" class="branch" width="187" height="30" alt="gren" /></a></li>
<li><a href="./?id=3&idx=7">Inklusion (s&aring;rbare b&oslash;rn)<img src="../images/gren.png" class="branch" width="187" height="30" alt="gren" /></a></li>
</ul>
<div id="content">
<?php echo $header; ?>
<?php if($action==success) { ?> <h1>done</h1> <?php } ?>
<?php if($action==error) { ?> <h1>error</h1> <?php } ?>

<form action="./index.php?action=update" method="post">
<textarea id="elm1" name="content" rows="20" cols="80" style="width: 425px"><?php echo $body; ?></textarea>
<input type="submit" value="Opdatere" />
</form>
</div>
<?php
}

Det jeg så gerne ville var at høre én updatere funktion til disse. Jeg prøvede at lave et array som alt sammen ligger ovenfor dette, her er min kode:

$dbtables[1]="content";
$dbtables[2]="about";
$dbtables[3]="everyday";
$dbtables[4]="staff";
$dbtables[5]="parrents";
$dbtables[6]="official";

if($id==1&$action==update) {
$content = trim($_POST['content']);

if (empty($content)) {
header("location:index.php?id=1&action=error");
exit();
} else {

$insert="update '$dbtables_array[$id]' set content = '$content' where id='$id'" or die("Connection to table failed : " . mysql_error());

mysql_query($insert);

header("location:index.php?id=1&action=succes");
exit();
}
}

Mit spørgsmål er så hvordan får jeg min update hvor tabelnavnet er dynamisk og bestemmes afhængig af hvilken function den bliver sendt fra. Jeg prøvede at lave det i et array, men kan ikke rigtig få det til at virke. Kom frisk, kom frejdigt =)
Avatar billede majbom Novice
29. maj 2010 - 21:44 #1
har du prøvet at udskrive denne linje, inden du eksekverer den?

$insert="update '$dbtables_array[$id]' set content = '$content' where id='$id'" or die("Connection to table failed : " . mysql_error());
Avatar billede optur Novice
29. maj 2010 - 22:12 #2
den bliver du lige nød til at forklare lidt mere.. er rimelig ny inden for php
Avatar billede optur Novice
29. maj 2010 - 22:24 #3
eller rettere jeg kan virkelig ikke huske hvordan man gør
Avatar billede majbom Novice
29. maj 2010 - 22:25 #4
echo $insert;

?
Avatar billede optur Novice
29. maj 2010 - 22:38 #5
lol sorry,
får følge ud:
update '' set content = '......' where id='1'

så af en eller anden grund så er mit array tomt
Avatar billede majbom Novice
29. maj 2010 - 22:47 #6
så lav:

$insert="update '$dbtables_array[$id]' set content = '$content' where id='$id'" or die("Connection to table failed : " . mysql_error());

om til;

$db_table = $dbtables_array[$id];
$insert="update '$db_tables' set content = '$content' where id='$id'" or die("Connection to table failed : " . mysql_error());
Avatar billede optur Novice
29. maj 2010 - 22:59 #7
det er stadig det samme =/
Avatar billede majbom Novice
30. maj 2010 - 09:54 #8
prøv at udskriv $id

eller skriver den rent faktisk '......' der hvor der skal stå et tabel-navn? eller står der bare ''?
Avatar billede optur Novice
30. maj 2010 - 10:03 #9
'....' er indholdet fra min wysiwug editor '' er der tabelnavnet skulle stå
Avatar billede optur Novice
30. maj 2010 - 10:06 #10
når jeg udskriver id'en så bliver den til 1 som den skal være
Avatar billede optur Novice
30. maj 2010 - 10:08 #11
og når jeg udskirver $db_table så skriver den godt nok content, som tilhøre id=1 men den sætter den bare ikke ind i strengen
Avatar billede majbom Novice
30. maj 2010 - 10:51 #12
hov, der er da osse en fejl:

du skal jo ikke have din or die i røven af $insert, men efter myql_query :)


$db_table = $dbtables_array[$id];
$insert="update '$db_tables' set content = '$content' where id='$id'" or die("Connection to table failed : " . mysql_error());
mysql_query($insert);


skal være:


$db_table = $dbtables_array[$id];
$insert="update '$db_tables' set content = '$content' where id='$id'";
mysql_query($insert) or die("Connection to table failed : " . mysql_error());
Avatar billede optur Novice
30. maj 2010 - 11:12 #13
Det var forkert opstillet før denne fejl
Connection to table failed : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' set content = '

...asdf
' where id='1'' at line 1
Avatar billede optur Novice
30. maj 2010 - 11:12 #14
men nu satte den content
Avatar billede majbom Novice
30. maj 2010 - 11:17 #15
og hvordan ser $insert ud når du udskriver den?
Avatar billede optur Novice
30. maj 2010 - 11:27 #16
update '' set content = '...hghdg' where id='1'
når jeg udksriver den før mysql_query
Avatar billede majbom Novice
30. maj 2010 - 11:57 #17
hmm, og $id indeholder 1?

prøv lige at:

print_r($dbtables_array);
Avatar billede optur Novice
30. maj 2010 - 12:00 #18
Den ser god nok ud:

Array ( [1] => content [2] => about [3] => everyday [4] => staff [5] => parrents [6] => official )
Avatar billede majbom Novice
30. maj 2010 - 12:39 #19
men:

echo $dbtables_array[$id];

udskriver ikke noget?
Avatar billede optur Novice
30. maj 2010 - 12:44 #20
Fejlen fundet... jeg var kommet til at skrive $db_tables i stedet for $db_table i:
$insert="update '$db_tables' set content = '$content' where id='$id'" or die("Connection to table failed : " . mysql_error());
mysql_query($insert);
Avatar billede optur Novice
30. maj 2010 - 13:53 #21
nu bliver kommandoen kørt igennem, men den bliver ikke skrevet i databasen...
Avatar billede cronaldo Nybegynder
30. maj 2010 - 17:06 #22
mysql_query( "update ".$db_tables." SET content = '".mysql_real_escape_string($content)."' WHERE id='".mysql_real_escape_string($id)."'") or die("Connection to table failed: ".mysql_error() );
Avatar billede majbom Novice
04. november 2010 - 13:47 #23
kom du videre?
Avatar billede optur Novice
08. november 2010 - 12:32 #24
Ja min lærer rettede fejlen imens jeg ikke var der så jeg ved ikke helt hvad han gjorde..
Avatar billede majbom Novice
08. november 2010 - 16:17 #25
okay, så husk at få lukket spørgsmålet...
Avatar billede optur Novice
09. november 2010 - 10:59 #26
LUKKET!!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester