Ma Skrevet 26. september 2005 Rapporter Del Skrevet 26. september 2005 (endret) Ber om litt hjelp Tabell1: Actor (primærnøkkel=id) Tabell2: Reviews (primær=revid, review, id (linker til actor.id) All informasjon om en "Actor" vises i url f.eks view.php?id=26. På denne siden vil jeg ha et skjema som folk kan fylle inn og sende inn "review". Er det på noen måte mulig å lagre noe (insert into?) i reviews-tabellen og sette feltet id til å matche id'en i url så tabellen med reviews vil se slik ut: revid_____review_______id 1__________he is good_____26 2__________blabla________26 Jeg har prøvd litt av hvert, og jeg får lagt inn review i databasen, men id-feltet blir alltid 0 så da blir de jo ikke plassert på websiden. Noen forlag til hvordan jeg kan løse dette mottas med takk! Endret 26. september 2005 av Ma Lenke til kommentar
Ma Skrevet 26. september 2005 Forfatter Rapporter Del Skrevet 26. september 2005 Jeg har nå klart å adde til databasen for den personen det gjelder. Problemet er at det ikke blir lagt inn noe tekst i "review"-kolonnen. Jeg klarer bare ikke å se hva som er feil.... Her er koden jeg bruker for å adde til databasen, addreview.php: <?php includes........ $id = $_GET['id']; $review = $_GET['review']; $result = mysql_query("SELECT * FROM performer WHERE id=$id"); $myrow = mysql_fetch_array($result); echo "Add review of ".$myrow["firstname"]." ".$myrow["lastname"]; $sql = "INSERT INTO reviews (review, id) VALUES ('$review','$id')"; $result = mysql_query($sql); echo "<form action=viewdb.php method='post'>\n"; echo "<input type='hidden' name='id' value='$id'>\n"; echo "Reviews <input type='text' name='review'>\n"; echo "<input type='submit' name='submit' value='Submit'>\n"; echo "</form>\n"; ?> Lenke til kommentar
kakkle Skrevet 27. september 2005 Rapporter Del Skrevet 27. september 2005 Hint: Hva er forskjellen på $_GETog $_POST ? Og dessuten så bør du også sjekke at spørringen mot mysql går greit. F.eks her: $sql = "INSERT INTO reviews (review, id) VALUES ('$review','$id')"; $result = mysql_query($sql) or die(Feil i spørring: $sql <br>".mysql_error()); Dette bør gjøres i alle spørringer. Lenke til kommentar
Ma Skrevet 27. september 2005 Forfatter Rapporter Del Skrevet 27. september 2005 Ok, takk, skal føre på koden for å sjekke feil i spørringene. Jeg har prøvd $review = $_POST['review']; siden infoen skal komme fra en form, men med samme resultat: det blir lagt til noe i databasen, men 'review'-feltet er blankt. $id = $_POST['id']; gikk ikke. da fikk jeg bare feilmelding. Så hintet ditt hjelper meg ikke... Har du flere hint? Lenke til kommentar
kakkle Skrevet 28. september 2005 Rapporter Del Skrevet 28. september 2005 Ta en test på alle spørringene, som jeg viste i forrige post. Hvilken feilmelding får du når du bruker $id=$_POST["id"]; ? Og har du en sjekk som sjekker om man prøver å sende noe fra formen ? Kan du evt poste kodene til addreview og viewdb slik de er nå ? Lenke til kommentar
Ma Skrevet 28. september 2005 Forfatter Rapporter Del Skrevet 28. september 2005 Takker for hjelpen! Jeg tror kanskje jeg hadde feil side i "form action" siden jeg hadde viewdb.php der. Prøvde å gjøre om litt så formen lå direkte på siden og insert koden lå på en annen side, og da funker det fint. Et problem nå er at jeg gjerne skulle ha gått automatisk tilbake til siden der man la inn review'en og at det kanskje stod "review added" over formen eller lignende. Sånn jeg har det nå står det på den nye siden bare "Review added" og link tilbake til hovedlisten, noe som er veldig tungvint. Hvordan kan jeg gjøre dette? ............ echo "Review added"; ?> <p><br><a href=viewdb.php>Return to database</a> </HTML> Lenke til kommentar
kakkle Skrevet 29. september 2005 Rapporter Del Skrevet 29. september 2005 (endret) Sånn f.eks: i-insert-kode filen: <? //Ikke skriv ut noenting til skjerm i denne filen // Ha dette på toppen: session_start(); ..... // Dersom adding av review gikk greit setter du denne: $_SESSION["Form_message"] = "Review Added"; // Dersom du vil ha en feil melding, så kan du sette det slik (Eller skriv hva du vil): $_SESSION["Form_message"] = "Det skjedde en feil"; // Sett dette nederst i sciptet: header("Location:http://www.url.to/viewdb.php"); ?> Og i scriptet som du legger inn reviewn (Viewdb ?): <? // Dette må stå øverst i scriptet session_start() if (isset($_SESSION["form_message"])) { echo $_SESSION["form_message"]; } // OGså skriver du ut resten av formen. ?> ... Hvis det var slik du mente, da... Endret 29. september 2005 av kakkle Lenke til kommentar
Ma Skrevet 29. september 2005 Forfatter Rapporter Del Skrevet 29. september 2005 Jeg prøvde å gjøre som du foreslo, men jeg får feil... Hjelp i startgropa er jeg veldig takknemlig for! // Ha dette på toppen: session_start(); ..... Har det noen betydning om det står før eller etter include (connection)? Jeg har også en del kode før formen kommer, skal det likevel stå øverst? Jeg får feilmelding ang denne linjen: if (isset($_SESSION["form_message"])) { Parse error: syntax error, unexpected T_IF in c:\wamp\www\lmside\view.php on line 8 Lenke til kommentar
???????? Skrevet 29. september 2005 Rapporter Del Skrevet 29. september 2005 Virker som du har glemt ; på linjen ovenfor den if'en Lenke til kommentar
Ma Skrevet 29. september 2005 Forfatter Rapporter Del Skrevet 29. september 2005 (endret) takk, ; rettet feilen. Men hva skal skje med denne koden, for det skjer ingenting... Hva skal jeg sette i if-koden? // Dersom adding av review gikk greit setter du denne: $_SESSION["Form_message"] = "Review Added"; // Dersom du vil ha en feil melding, så kan du sette det slik (Eller skriv hva du vil): $_SESSION["Form_message"] = "Det skjedde en feil"; // Sett dette nederst i sciptet: header("Location:viewdb.php"); ?> Hva er "form_message" - må jeg spesifisere et annet sted hvor den meldingen skal bli plassert? Jeg vil helst, hvis det er mulig, gå automatisk tilbake til den siden der review'en ble sendt fra, ex. view.php?id=23 og gi beskjed der: "review added". Er det mulig, eller må både formen og insert-kode stå på samme side da? Endret 29. september 2005 av Ma Lenke til kommentar
Lurifaksen Skrevet 30. september 2005 Rapporter Del Skrevet 30. september 2005 (endret) Skjemaet kan jo ikke bruke POST hvis php scriptet bruker GET! <?php ... $id = $_GET['id']; $review = $_GET['review']; ... echo "<form action=viewdb.php method='GET'>\n"; ... ?> Men det er mulig jeg misforstod... Edit: Ja, jeg misforstod siden problemet allerede var løst Endret 30. september 2005 av Lurifaksen Lenke til kommentar
Ma Skrevet 4. oktober 2005 Forfatter Rapporter Del Skrevet 4. oktober 2005 Det første probemet var løst ja, men det er mer jeg lurer på (tar det i denne samme tråden) Hva skal skje med denne koden, for det skjer ingenting... Hva skal jeg sette i if-koden? // Dersom adding av review gikk greit setter du denne: $_SESSION["Form_message"] = "Review Added"; // Dersom du vil ha en feil melding, så kan du sette det slik (Eller skriv hva du vil): $_SESSION["Form_message"] = "Det skjedde en feil"; // Sett dette nederst i sciptet: header("Location:viewdb.php"); ?> Hva er "form_message" - må jeg spesifisere et annet sted hvor den meldingen skal bli plassert? Jeg vil helst, hvis det er mulig, gå automatisk tilbake til den siden der review'en ble sendt fra, ex. view.php?id=23 og gi beskjed der: "review added". Er det mulig, eller må både form og insert-kode stå på samme side da? Lenke til kommentar
kakkle Skrevet 4. oktober 2005 Rapporter Del Skrevet 4. oktober 2005 (endret) "form_message" er sesjons vaiabelen. Du kan kalle den hva du vil. For å få tak i verdien som du setter på sesjonen (I dette tilfellet "Review Added", dersom det gikk greit), så skriver du ut $_SESSION["form_message"]. F.Eks: newreview.php <? session_start(); if(isset($_SESSION["form_message"])) { echo "<p>".$_SESSION["form_message"]."</p>"; } ?> <form method="post" action="addreview.php"> Review:<input type="text" name="review"><br> <input type="submit" value="add review"> </form> addreview.php: <? session_start(); $review = $_POST["review"]; mysql_connect($host, $user, $pwd); // Legg inn dine variabler her mysql_select_db($db); // Din database $sql = "INSERT INTO..."; // Her legger du inn din spørring som skal kjøres i mysql. $res = mysql_query($sql); if($res) { $_SESSION["form_message"]="Review Added"; // Her setter du beskjeden som skal komme, dersom alt gikk greit } else { $_SESSION["form_message"]="Det skjedde en feil:<br>$sql<br>".mysql_error(); // Her settes feilmelding } header("location:http://www.domene.com/newreview.php"); ?> Dette er et veldig genrelt eksempel. Du må selv tilpasse det din kode, men dette skal vise hvordan du sjekker at det er lagt til, og setter en melding av resultatet som skrives ut på form siden. Denne koden er slett ikke testet. Men håper du skjønner gangen i det. EDIT: IKKE ta copy paste av koden. Det er sikkert en del småfeil. Les igjennom koden og prøv å forstå hva som skjer. /Kakkle Endret 4. oktober 2005 av kakkle Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå