24. marts 2007 - 17:19Der er
15 kommentarer og 1 løsning
Array problem
Jeg har brug for lidt hjælp til et lille problem. Når jeg prøver at opdatere indholdet i en database opdatere den ikke... Problemet er det felt der bliver hentet fra en anden side: $_POST['ret']. Den kan jeg ikke benytte når jeg skal have sendt noget til databasen. Jeg har prøvet forskellige løsninger men ingen virker.
Kan i hjælpe?
<?php
if( isset($_POST['ret']) && is_array($_POST['ret'])) { $ids = array_keys($_POST['ret']); $select = mysql_query("select * FROM sideindhold WHERE id IN(" . join($ids) . ");");
Jeg kan ikke helt forstå hvorfor du har puttet ind form i en while-løkke. Det bevirker jo bare at du kan få flere forms, med de samme id's for alle felterne. Derved kan du ikke skelne dem fra hianden når du så skal gemme dem i databasen. Eller er der noget jeg ikke lige har forstået med din kode ???
Jeg har lige prøvet med $row['id']. det virkede ikke. I første form får jeg godt nok det rigtige id skrevet ud og det er med $row->id. Det er ikke noget problem at få det indlæst i databasen med id'et da id'et er primær nøgle i tabellen.
1. dataen kommer fra en anden form fra en anden side. 2. der er kun én form på denne siden og det er der hvor dataen fra tabellen bliver fremvist. Herefter skal dataen sendes tilbage til tabellen, og der er her det hele går galt. og det er ID'et som ikke kommer med. Det gør at dataen ikke bliver skrevet ned i tabellen igen.
Nu ved jeg ikke om du med vilje har udeladt dele af koden, men husker du at køre mysql_query( $sql_et );?
Dernæst synes jeg fejlbeskrivelsen er kryptisk Hvad menes der f.eks. med: "Problemet er det felt der bliver hentet fra en anden side: $_POST['ret']. Den kan jeg ikke benytte når jeg skal have sendt noget til databasen."?
mysql_query( $sql_et ); er vel egentlig ligemeget da det er data der skal sendes til databasen. så jeg kunne egentlig have skrevet f.eks:
mysql_query ("update sideindhold set overskrift='".$_POST['overskrift']."', tekst='".$_POST['tekst']."', billede='".$_POST['billede']."', navn='".$_POST['navn']."', mainid='1' where id ='".$row['id']."';");
sorry med fejlbeskrivelsen. Problemet er at jeg ikke kan sende id'et videre til databasen. og $_POST['ret'] er id'et der bliver sendt fra den anden side i et array. Herefter bliver værdien læst ud i den der hedder $row->id. men jeg kan ikke få $row-id til at blive sendt i mysql queryen: $sql_et = "update sideindhold set overskrift='".$_POST['overskrift']."', tekst='".$_POST['tekst']."', billede='".$_POST['billede']."', navn='".$_POST['navn']."', mainid='1' where id ='".$_POST['id']."';";
og det er heller ikke der problemet er for jeg kan godt læse værdien ud 1gang, men når jeg skal bruge variablen nede i den anden sql query så kan jeg ikke bruge den.
Umiddelbart, er det måske ikke dit problem, men burde gi' dig et problem? IN (13456) virker ikke hos mig, anyway, men IN (1,3,4,5,6) henter de rows som findes.
At du bruger en form for hvert row kan du jo godt. Men du kunne også lade "textid" være et array <input name="id[]" type="hidden" value="<?php echo $row->id; ?>">
Lige ved først øjekast kan jeg se at din option mangler en value <option value="enværdi">noget tekst</option>
Så vidt jeg kan se, så er det kun muligt at rette en side af gangen ? Så kunne du lave din form om så istedet for at have mange forskellige submit kanpper, så bare have en button ala <input type="button" name="Ret" value="Ret Undermenu" onclick="window.location.href='retundermenusend.php?Id=$row->id'">
Skal nok rettes lidt til, men det er bare en ide. Du skal så bare lige tilpasse din anden side til at modtage $_GET['Id']. Så slipper du for at det array når du alligevel kun sender en værdi videre.
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.