19. maj 2003 - 13:17Der er
39 kommentarer og 1 løsning
Lille opgave i at redigere database(mySql) (fra asp til php)
Hej, Jeg har en admin_rediger.asp, som trækker hele databasen ind. På posterne skal man kunne klikke sig ind på en formular, hvor alle felter er redigerbare (rettelser.asp). Fra denne gemmer man sine rettelser (gem_rettelser.asp). Jeg vil gerne have oversat nedenståede 2 asp-filer til php.
<?php mysql_connect("host", "user", "psw"); mysql_select_db("database"); $result = mysql_query("select * from film where id='$id'"); $row = mysql_fetch_array($result); extract($row); ?>
Så skulle du gerne kunne udskrive dine værdier således: <input type='text' name='titel' class='form3' value=' <?echo $row["titel"];?> '>
gem_rettelser.php:
<?php mysql_connect("host", "user", "psw"); mysql_select_db("database"); mysql_query("update film set titel='$titel' where id='$id'"); mysql_query("update film set alder='$alder' where id='$id'"); mysql_query("update film set spilletid='$spilletid' where id='$id'"); mysql_query // osv. osv. header("Location: admin_rediger.asp"); ?>
Mine 3 filer ser nu sådan ud - men med fejl. Kan du se, hvor den er gal?
-----rediger.php------
<?
include('setup.php');
mysql_connect('x', 'x', 'x') or die ("Der kunne ikke oprettes forbindelse til databasen"); mysql_select_db('x'); $query = mysql_query("SELECT * FROM books ORDER BY title") or die (mysql_error()); $i = 1; while($row = mysql_fetch_array($query)) {
<?php mysql_connect(x, x, x); mysql_select_db(x); mysql_query("UPDATE books SET author='$author' WHERE id='$id'"); mysql_query("UPDATE books SET title='$title' WHERE id='$id'"); mysql_query("UPDATE books SET publisher='$publiser' WHERE id='$id'"); mysql_query("UPDATE books SET year='$year' WHERE id='$id'"); mysql_query("UPDATE books SET price='$price' WHERE id='$id'"); mysql_query("UPDATE books SET picture='$picture' WHERE id='$id'"); header("Location: rediger.php"); ?>
Det er muligt du skal indhente dine variabler med $_POST["title"]; afhængigt af hvordan dit php er sat op. Kan du ikke give lidt mere præcis information om hvor og hvordan det går galt?
Hej! Ok, jeg prøver at uddybe. Jeg får denne fejl, når jeg prøver at slå min rediger.php op:
Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/web/web1780/EKSAMENSOPGAVE/rediger.php on line 117
Der må være noget galt med min rediger.php: (nu henter jeg ud på author i stedet for title)
<?
include('setup.php');
mysql_connect(x, x, x) or die ("Der kunne ikke oprettes forbindelse til databasen"); mysql_select_db(x); $query = mysql_query("SELECT * FROM books ORDER BY author") or die (mysql_error()); while($row = mysql_fetch_array($query)) {
Øhm </a></td></tr> er vel til at afslutte link, column, row :-) Din $row["author"] stod inde i dit <img> tag - den kan du vel bare slette. Jeg er før rendt ind i problemer med at udskrive array-værdier direkte i et echo, ved sgu ik lige hvorfor, men prøv det her istedet:
Altså, jeg mener, at felterne står tomme, og at der ingen fejlmelding kommer. Hvis det er fordi, at jeg skal bruge denne $_POST["title"] istedet. Hvorledes skulle jeg sætte den op, så de udskrives i felterne?
Uhm, $_POST["værdi"]; er til at "modtage" variabler fra en formular. Feks. Side1.php <form action='side2.php' method='POST'> <input type='text' name='titel'> <input type='submit'> </form>
Side2.php <?php $titel = $_POST["titel"]; echo $titel; ?> // udskriver værdien af feltet på side1.php
Jeg forstår ikke helt relationen mellem dine sider.
Rettelser.php hentede data ud af en database ikke?
Prøv at sætte det ind i en while sætning istedet for extract. <? db conn etc while($row = mysql_fetch_array($query)) { ?> din form her <? } //tuborg afslutter while ?>
Flot, nu henter den ind i felterne! Den var smart. De ændringer jeg så gerne vil foretage mig, slår bare ikke igennem? Jeg har taste Refresh.
Min gem_rettelser.php ser sådan ud:
<?php mysql_connect(x, x, x'); mysql_select_db(x); mysql_query("UPDATE books SET author='$author' WHERE id='$id'"); mysql_query("UPDATE books SET title='$title' WHERE id='$id'"); mysql_query("UPDATE books SET publisher='$publisher' WHERE id='$id'"); mysql_query("UPDATE books SET year='$year' WHERE id='$id'"); mysql_query("UPDATE books SET price='$price' WHERE id='$id'"); mysql_query("UPDATE books SET picture='$picture' WHERE id='$id'"); header("Location: rediger.php"); ?>
Desværre. Nu har jeg gjort nøjagtigt, det du har skrevet. Men ændringerne er ikke slået igennem på rediger.php. Kan jeg skrive en hemmelig URL til dig?
mysql_connect() or die ("Der kunne ikke oprettes forbindelse til databasen"); mysql_select_db(); mysql_query("UPDATE books SET author='$author' WHERE id='$id'"); mysql_query("UPDATE books SET title='$title' WHERE id='$id'"); mysql_query("UPDATE books SET publisher='$publisher' WHERE id='$id'"); mysql_query("UPDATE books SET year='$year' WHERE id='$id'"); mysql_query("UPDATE books SET price='$price' WHERE id='$id'"); mysql_query("UPDATE books SET picture='$picture' WHERE id='$id'"); header("Location: rediger.php"); ?>
Er du på ved 11-tiden i aften? Jeg er på arbejde, så jeg er ikke super koncentreret. Stik mig din mail (eller icq), så skriver jeg til dig når jeg kommer hjem, ok?
Jeg er ikke helt med, så prøv at skrive på denne : til(snabel-a)mariannebrahe(dot)dk Så kan jeg lige sende dig linket, så er det måske nemmere at gennemskue. Førhen satte jeg bare URL'en her, men har hørt, det ikke er så smart.
Nu har jeg prøvet med denne på gem_rettelser.php men med fejl Parse error: parse error, unexpected $ in /home/web/web1780/EKSAMENSOPGAVE/gem_rettelser.php on line 19:
<?php include('setup.php');
if (isset($_POST['send'])) { mysql_connect() or die ("Der kunne ikke oprettes forbindelse til databasen"); mysql_select_db();
Jeg tror du mangler et komma her ---> '$price' (,) '$picture' - mon ik det ku gøre det? SQL er ik lige min stærke side, men mon ikke du skal fjerne id begge steder, så den ikke overskriver id'et med et blankt felt? Altså:
Hej igen, Nu har jeg afsluttet den med } <?php include('setup.php');
if (isset($_POST['send'])) { mysql_connect() or die ("Der kunne ikke oprettes forbindelse til databasen"); mysql_select_db();
Jeg fik ikke din mail, der er noget galt med min mail, ved ikke, hvad der er sket. Men du kan bruge marianne.brahe(at)mail(dot)dk. Nu kommer der ingen fejlmelding. Så langt så godt! Men sciptet retter i id'en lige under - altå retter ikke i den jeg vælger. Prøv at send mig en mail, så giver jeg dig linket.
Sorry :( Men jeg lærer det forhåbentligt :) Nu har jeg indsat ovenstående, men med følgende fehler....?
You have an error in your SQL syntax near 'WHERE id=$id' at line 2INSERT INTO books (author, title, publisher, year, price, picture) VALUES ('Alligator Descartes, Tim Bunce', 'Programming the Perl DBI', 'O\'Reilly & Associates', '2000', '25200', '') WHERE id=$id
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.