22. januar 2006 - 12:58Der er
17 kommentarer og 1 løsning
flere INCLUDE filer virker ikke??
Jeg har lige prøvet at få include til at sætte indehold på min index.php, men der er noget galt... insert_main og close virker fint, close og open er lavet ens, men open virker ikke, har også prøvet med include_once og require, samme resultat, open virker, hvis jeg sletter insert_main og close! kode: index.php .... <tr> <td><?php include ("insert_main.php"); ?><hr SIZE="4" /> <?php include ("open.php"); ?><hr SIZE="4" /> <?php include ("close.php"); ?></td> </tr>
open.php: <strong>åbn en post</strong> <form action="<?php print $_server[PHP_SELF] ?>" method="post"> post ID nummer:<br /> <input enctype="text/plain" name="id" size="5"><br /> <input type="submit" value="åbn"> </form> <?php $sql = "UPDATE main SET status = 'open' WHERE id = " . mysql_real_escape_string($_POST['id']); if (mysql_query($sql, $conn)) {echo "post åbnet OK<br /><br />";} else {echo "Fejl ved åbning,<br /> kontroller at id nummeret er korrekt<br /><br />";} ?> resultat at submit er "post åbnet OK" hvad er der galt her?
Jeg har ændret min form efter dit forslag Johan, det hjalp desværre ikke, så nu har jeg har prøvet at fjerne insert_main.php, ingen ændring koden til close.php: <strong>Luk en post</strong> <form action="<?php print $_SERVER['PHP_SELF'] ?>" method="post"> post ID nummer:<br /> <input type="text" name="id" size="5"><br /> <input type="submit" value="luk"> </form> <?php $sql = "UPDATE main SET status = 'close' WHERE id = " . mysql_real_escape_string($_POST['id']); if (mysql_query($sql, $conn)) {echo "post lukket OK<br /><br />";} else {echo "Fejl ved lukning,<br /> kontroller at id nummeret er korrekt<br /><br />";} ?> Min index.php includer også en connect der indeholder: <?php $conn = mysql_connect("localhost","zzz","yyy"); mysql_select_db("testdb01",$conn); ?>
Hvis jeg har forstået det korrekt, så vil du gerne vise både en 'afdeling' til at åbne og en afdeling til at lukke. Du har så 2 forskellige forms til at håndterer disse funktioner. Problemet er, tror jeg, at du bruger samme navn til dine input felter, altså <input name='id'> det skaber lidt problemer. Jeg har lavet det her istedet, det ligner meget det du havde i forvejen, men name attributerne er ændret. Ligeledes er det lavet et lille check af om der er modtaget noget fra formerne. Er det sådan noget du gerne vil have ?
connect.php --> den kender du !
index.php -->
<?php
include("connect.php");
?><html> <body>
<table> <tr> <td> <?php include ("open.php"); ?> <hr SIZE="4" /> <?php include ("close.php"); ?> </td> </tr> </table>
</body> </html>
open.php -->
<strong>Åbn en post</strong> <form action="<?php print $_SERVER['PHP_SELF'] ?>" method="post"> post ID nummer:<br /> <input type="text" name="open_id" size="5"><br /> <input type="submit" value="Åbn"> </form> <?php
if(isset($_POST['open_id']) && $_POST['open_id']!="") { $sql = "UPDATE main SET status = 'open' WHERE id = " . mysql_real_escape_string($_POST['id']);
if (mysql_query($sql, $conn)) { echo "post åbnet OK<br /><br />"; } else { echo "Fejl ved åbning,<br /> kontroller at id nummeret er korrekt<br /><br />"; } }
?>
close.php -->
<strong>Luk en post</strong> <form action="<?php print $_SERVER['PHP_SELF'] ?>" method="post"> post ID nummer:<br /> <input type="text" name="close_id" size="5"><br /> <input type="submit" value="Luk"> </form> <?php
if(isset($_POST['close_id']) && $_POST['close_id']!="") { $sql = "UPDATE main SET status = 'close' WHERE id = " . mysql_real_escape_string($_POST['id']);
if (mysql_query($sql, $conn)) { echo "post lukket OK<br /><br />"; } else { echo "Fejl ved lukning,<br /> kontroller at id nummeret er korrekt<br /><br />"; } }
Når du så sender en af formularene generer det jo en variabel i PHP der hedder $_POST['id'] men du ved ikke hvor indholdet af variablen stammer fra det kan både være fra 'Åbn' og fra 'Luk'. Så først ændrede jeg dine <input>'s navne således at de er unikke og du kan være sikker på hvor informationerne stammer fra.
Af andre små ændringer til dine forms var :
$_SERVER['PHP_SELF'] du havde skrevet $_server[PHP_SELF], denne returnere ingenting. En pudsig ting i den forbindelse er jo så at action="" rent faktisk sendte formen til index.php Jeg har prøvet at læse mig frem til hvorfor og kan kun komme frem til at det må skyldes at man kan skrive en relativ path, altså en path der tager udgangspunkt i det dokument der sender formen, og når action er tom, opfattes det som index.php. Men jeg gætter her :)
I et <input> objekt havde du skrevet enctype="text/plain". Men enctype hører ikke hjemme i et input felt, den attribut eksisterer ganske enkelt ikke, derimod findes attributten type, som jeg så lavede istedet.
Dine sql sætninger var faktisk iorden, jeg har blot puttet id=$_POST['open_id'] ind i enkelt sistationstegn (').
Jeg sidder lige og kigger på en lidt mere enkel opbygning af ovenstående, men spørg endelig hvis der er noget jeg har glemt eller noget du vil have forklaret yderligere, så vil jeg prøve så godt jeg kan :)
Denne linje checker først om variablen $_POST['open_id'] er sat (modtaget via POST data), dernæst checker den om samme variabel har noget indhold eller om den er tom. Variablen kan jo godt være tom hvis en bruger blot har trykket på knappen uden at skrive noget i feltet.
Ja sådan en tur kan ikke anbefales nok, selv om det er 3½ år siden vi kom hjem, går der nærmest ikke en dag uden at vi tænker på det/ bliver mindet om det...skønt ikke? hvad angår eventur.dk, er det min første, så alt er HARDKODET!, hold da op den tid /plads jeg kunne have sparet med PHP/MySQL! /Preben
Ja, PHP/mySQL kan gøre nogle ting meget lettere :)
Med hensyn til din kode så var jeg lige inde og kigge. Er det med vilje at du ikke har en DOCTYPE deklaration i starten ? Du kan evt. læse om det her :
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.