Avatar billede krusnof Nybegynder
24. maj 2010 - 20:54 Der er 46 kommentarer og
1 løsning

PHP form self, ved ikke hvordan?!

Hej alle,

Jeg prøver at lave en form hvor man tilmelde sig til en mailing liste, og det virker når jeg submitter til "ekstern" php fil, altså når formen har action="submit.php".
Problemet ligger dog i at, jeg gerne ville have at valideretingen forblev på samme side som formen - så min menu stadig er i venstre side etc. Jeg har ikke noget link, da det ligger offline!
Hvad gør jeg forkert? Og kunne en løsning være at ligge den i et CSS "popup" layer?

Mange tak

<?php
if(isset($_POST['submit']))
{
$host="localhost";
$username="XXX";
$password="XXX"; 
$db_name="hlr"; 
$tbl_name="mailinglist";

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$user_name=$_POST['user_name'];
$user_mail=$_POST['user_mail'];
$user_mobile=$_POST['user_mobile'];

$sql="INSERT INTO $tbl_name(user_name, user_mail, user_mobile)VALUES('$user_name', '$user_mail', '$user_mobile')";
$result=mysql_query($sql);

if($result){
echo "<h3>You're now a part of our mailing list! Thanks!</h3>";
}

else {
echo "Error";
}

mysql_close();
}
?>
<h2>Mailing list</h2>
<div id="carbonForm">
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
      <label for="name" class="label">Name:</label>
    <div class="field">
      <input type="text" name="user_name" id="user_name" />
    </div>
<br />
      <label for="email" class="label">Email:</label>
    <div class="field">
      <input type="text" name="user_mail" id="user_mail" />
    </div>
<br />
      <label for="mobile" class="label">Mobile:</label>
    <div class="field">
      <input type="text" name="user_mobile" id="user_mobile" />
    </div>
<br />
      <input type="submit" name="submit" id="submit" value="Signup" />
  </form>
</div>
24. maj 2010 - 21:07 #1
Forklar hvilke vanskeligheder det er du oplever?  Hvad gaar der galt som faar dig til at spoerge hvad du goer forkert?
Avatar billede RexReptiles Nybegynder
24. maj 2010 - 21:46 #2
hvorfor ikke bare lave en form action="?mail=ok"

og så smide dit sql og andet ind under if($_POST['mail'] == "ok") {}

istedet for det php self noget. og lede efter en submit

alternativt skal du ha en
<input type="hidden" name="submit" value="ok" />

mener nemlig ikke type="submit" - tæller som en POST
Avatar billede krusnof Nybegynder
24. maj 2010 - 22:42 #3
Den gør nemlig ingenting - det er problemet ;-)
Det skal dog siges at det er baseret i indexhibit og derfor laver den måske problemer? Det er jo en php fil, som bliver kaldt frem i et andet php dokument?

Jeg er ikke særlig skarp inden for php og mysql - så det mail=ok, forstår jeg desværre ikke så meget af ;-)

Håber I kan hjælpe yderligere

Tak
Avatar billede cronaldo Nybegynder
25. maj 2010 - 00:54 #4
Hvorfor ikke bare lave if( isset( $_POST ) ) ??
Det er vel ligegyldigt, om der er tale om knappen eller felterne - bare formen er posted!? Ellers skal du som foreslået ovenfor lave noget ala dette:
-------------------------------------

<?php
if(isset($_POST['action']))
{
$host="localhost";
$username="XXX";
$password="XXX"; 
$db_name="hlr"; 
$tbl_name="mailinglist";

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$user_name=$_POST['user_name'];
$user_mail=$_POST['user_mail'];
$user_mobile=$_POST['user_mobile'];

$sql="INSERT INTO $tbl_name(user_name, user_mail, user_mobile)VALUES('$user_name', '$user_mail', '$user_mobile')";
$result=mysql_query($sql);

if($result){
echo "<h3>You're now a part of our mailing list! Thanks!</h3>";
}

else {
echo "Error";
}

mysql_close();
}
?>
<h2>Mailing list</h2>
<div id="carbonForm">
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <input type="hidden" name="action" value="submit" />
      <label for="name" class="label">Name:</label>
    <div class="field">
      <input type="text" name="user_name" id="user_name" />
    </div>
<br />
      <label for="email" class="label">Email:</label>
    <div class="field">
      <input type="text" name="user_mail" id="user_mail" />
    </div>
<br />
      <label for="mobile" class="label">Mobile:</label>
    <div class="field">
      <input type="text" name="user_mobile" id="user_mobile" />
    </div>
<br />
      <input type="submit" name="submit" id="submit" value="Signup" />
  </form>
</div>

Og jeg tror ærligt talt heller ikke du behøver sætte noget i action i denne situation! Altså kan du lave flg. tag hvilket også vil få det til at virke:
<form action="" method="post">
Avatar billede krusnof Nybegynder
25. maj 2010 - 11:52 #5
Har prøvet det og det virker ikke! Den fjerner bare de indskrevet værdier i felterne og viser samme side - og der kommer intet ind i min db.

What then?
25. maj 2010 - 12:19 #6
Det var maaske fremskridt - for foerste gang i traaden loefter du sloeret for hvad konkret problemet er.  Siger du at det brugeren skriver i felterne ikke bliver gemt i databasen?  Siger du saa (i dit oprindelige spoergsmaal) at naar du "submitter til 'ekstern' php fil, altså når formen har action="submit.php" saa bliver vaerdierne gemt i databasen som de skal?  I saafald giv os lige den kode der virker.  Siger du yderligere at du gerne vil have vaerdierne i formularens felter til at forblive der efter at formen er submittet?  (Hvis du har brug for hjaelp er du nok noed til at goere en indsats i at specificere hvad det er du oensker, hvad du faar med 'ekstern' php fil, og hvad du faar med php form selv.)
Avatar billede krusnof Nybegynder
25. maj 2010 - 12:34 #7
Jeg kan få det til at virke sådan her:
En side med følgende kode (indtastet i Indexhibit modulet):

<h2>Mailing list</h2>
<div id="carbonForm">
  <form action="submit.php" method="post">
      <label for="name" class="label">Name:</label>
    <div class="field">
      <input type="text" name="user_name" id="user_name" />
    </div>
      <label for="email" class="label">Email:</label>
    <div class="field">
      <input type="text" name="user_mail" id="user_mail" />
    </div>
      <label for="mobile" class="label">Mobile:</label>
    <div class="field">
      <input type="text" name="user_mobile" id="user_mobile" />
    </div>
      <input type="submit" name="submit" id="submit" value="Signup" />
  </form>
</div>

Submit.php har så følgende:
<?php
$host="xxx";
$username="xxx";
$password="xxx"; 
$db_name="xxx"; 
$tbl_name="mailinglist";

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$user_name=$_POST['user_name'];
$user_mail=$_POST['user_mail'];
$user_mobile=$_POST['user_mobile'];

$sql="INSERT INTO $tbl_name(user_name, user_mail, user_mobile)VALUES('$user_name', '$user_mail', '$user_mobile')";
$result=mysql_query($sql);

if($result){
echo "<h3>You're now a part of our mailing list! Thanks!</h3>";
}

else {
echo "Error";
}

mysql_close();
?>
<head>
<link rel='stylesheet' href='http://localhost:8888/ndxz-studio/site/hlr/style.css' type='text/css' />
</head>


Det virker altså! Men det jeg faktisk gerne ville have, var at når jeg submitter, så popper den op på den ene eller andet måde på samme side, så min menu etc. stadig er der. Derfor efterspurgte jeg også at løsningen måske lå et CSS layer popup? Håber I forstår!

Tak
Avatar billede RexReptiles Nybegynder
25. maj 2010 - 13:06 #8
det kan sagtens køre på den samme side, både som ledene efter $_POST eller ved at lave en variabel.

jeg ved ik hvordan du får det fucket op.

prøv igen:

<?php
// bruger vi lige en post som rent faktisk blir sendt (user_mail)
if(isset($_POST['user_mail']))
{
$host="localhost";
$username="XXX";
$password="XXX"; 
$db_name="hlr"; 
$tbl_name="mailinglist";

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$user_name=$_POST['user_name'];
$user_mail=$_POST['user_mail'];
$user_mobile=$_POST['user_mobile'];

$sql="INSERT INTO $tbl_name(user_name, user_mail, user_mobile)VALUES('$user_name', '$user_mail', '$user_mobile')";
$result=mysql_query($sql);

if($result){
echo "<h3>You're now a part of our mailing list! Thanks!</h3>";
}

else {
echo "Error";
}

mysql_close();
}
?>
<h2>Mailing list</h2>
<div id="carbonForm">
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
      <label for="name" class="label">Name:</label>
    <div class="field">
      <input type="text" name="user_name" id="user_name" />
    </div>
<br />
      <label for="email" class="label">Email:</label>
    <div class="field">
      <input type="text" name="user_mail" id="user_mail" />
    </div>
<br />
      <label for="mobile" class="label">Mobile:</label>
    <div class="field">
      <input type="text" name="user_mobile" id="user_mobile" />
    </div>
<br />
      <input type="submit" name="submit" id="submit" value="Signup" />
  </form>
</div>
Avatar billede RexReptiles Nybegynder
25. maj 2010 - 13:11 #9
så længe du ik redirecter eller andet så POST blir smidt væk før scriptet kører så burde det virke
Avatar billede krusnof Nybegynder
25. maj 2010 - 13:18 #10
Det samme sker, eller rettere intet sker! Felterne bliver tømt og intet er kommet ind i min mysql db.
Kan det have noget at gøre med at det ligger i indexhibit (kender I det?) - det bliver jo tastet ind i et admin modul...
Avatar billede RexReptiles Nybegynder
25. maj 2010 - 13:24 #11
nej det ved jeg ik lige hvad er.

men kan du ik bare lave en include("mailingliste.php"); istedet - lyder som om det setup du bruger der knepper dig i røven.
Avatar billede krusnof Nybegynder
25. maj 2010 - 13:28 #12
Som sagt, så er jeg temmelig ny i det her, så ved ikke lige hvordan jeg skal lave en include og hvad det medfører. Hvordan skal koden så være?
Tak
Avatar billede RexReptiles Nybegynder
25. maj 2010 - 13:35 #13
har du adgang til en ftp server?

så uploader du en fil med den kode jeg skrev i.

i din index fjerner du koden og tilføjer include("uploadedfil.php");

så burde det virke.

og hold op med at brug det setup du har gang i og få dig en text editor såsom notepad++ eller sådan, fordi det lyder ik som en holdbar løsning det du bruger.

har du et link til jeg kan se hva det er for noget?
Avatar billede krusnof Nybegynder
25. maj 2010 - 13:39 #14
Jeg bruger textmate til Mac og gennemgår alle filerne, men det er CMS system som jeg har downloaded (som er ret anerkendt inden for den grafiske branche).
Min index.php skal indeholde include, men hvor og hvordan?

Tak igen.
Avatar billede krusnof Nybegynder
25. maj 2010 - 13:40 #15
Du kan jo lige tjekke det ud: http://www.indexhibit.org/
Avatar billede RexReptiles Nybegynder
25. maj 2010 - 13:55 #16
okay det gir ikke noget mening i min verden, jeg bygger mine egne cms'er, direkte ind i hjemmesiden.

du skal tilføje det hvor du har din mailingliste nu og så skal den jo hente den fil du har uploadet.

husk at fjern mail liste fra din sourcecode fordi includen har den i sig.
Avatar billede krusnof Nybegynder
25. maj 2010 - 14:48 #17
Jamen jeg skriver jo jeg ikke ved hvordan include skal integreres i koden. Aner ikke hvor og hvordan?!

Og mht at bygge egne CMS'er, så er det fint at du gør det, men det er ikke mit tilfælde og derfor har jeg brug for hjælp til det jeg spørger om.

Tak
Avatar billede cronaldo Nybegynder
25. maj 2010 - 14:48 #18
Jamen er du sikker på der ikke er en mysql fejl? det kunne jeg godt mistænke det for.. Og i øvrigt hader jeg at lave den med at have SQL'en til at stå i en variabel.. Så det ændrer jeg lige ;)
-------------

<?php
if(isset($_POST['action']))
{
$host="localhost";
$username="XXX";
$password="XXX"; 
$db_name="hlr"; 
$tbl_name="mailinglist";

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$user_name=$_POST['user_name'];
$user_mail=$_POST['user_mail'];
$user_mobile=$_POST['user_mobile'];

$sql="INSERT INTO $tbl_name(user_name, user_mail, user_mobile)VALUES('$user_name', '$user_mail', '$user_mobile')";
$result=mysql_query( "INSERT INTO ".$tbl_name." (user_name, user_mail, user_mobile) VALUES('".mysql_real_escape_string($user_name)."', '".mysql_real_escape_string($user_mail)."', '".mysql_real_escape_string($user_mobile)."') ) or die( mysql_error() );

if($result){
echo "<h3>You're now a part of our mailing list! Thanks!</h3>";
}

else {
echo "Error";
}

mysql_close();
}
?>
<h2>Mailing list</h2>
<div id="carbonForm">
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <input type="hidden" name="action" value="submit" />
      <label for="name" class="label">Name:</label>
    <div class="field">
      <input type="text" name="user_name" id="user_name" />
    </div>
<br />
      <label for="email" class="label">Email:</label>
    <div class="field">
      <input type="text" name="user_mail" id="user_mail" />
    </div>
<br />
      <label for="mobile" class="label">Mobile:</label>
    <div class="field">
      <input type="text" name="user_mobile" id="user_mobile" />
    </div>
<br />
      <input type="submit" name="submit" id="submit" value="Signup" />
  </form>
</div>
Avatar billede krusnof Nybegynder
25. maj 2010 - 14:58 #19
Jeg skulle ikke mene at SQL'en fejler, da den virker som jeg skrev tidligere, når det er en seperat fil som den "post'er" til - men igen, så er jeg temmelig  ny i det her ;-)

Hvad var du ændrede, så SQL'en ikke er i variablen?
Tak
Avatar billede cronaldo Nybegynder
25. maj 2010 - 15:09 #20
Jamen først blev $sql sat og så ind i en ny variabel for til sidst at blive ført ud i livet.. Jeg tror måske vi skal ændre det igen:
---------------------------------

<?php
if(isset($_POST['action']))
{
$host="localhost";
$username="XXX";
$password="XXX"; 
$db_name="hlr"; 
$tbl_name="mailinglist";

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$user_name=$_POST['user_name'];
$user_mail=$_POST['user_mail'];
$user_mobile=$_POST['user_mobile'];

$sql="INSERT INTO $tbl_name(user_name, user_mail, user_mobile)VALUES('$user_name', '$user_mail', '$user_mobile')";

if(  mysql_query( "INSERT INTO ".$tbl_name." (user_name, user_mail, user_mobile) VALUES('".mysql_real_escape_string($user_name)."', '".mysql_real_escape_string($user_mail)."', '".mysql_real_escape_string($user_mobile)."') )  )
{
  echo "<h3>You're now a part of our mailing list! Thanks!</h3>";
}
else
{
  echo "Error";
}

mysql_close();
}
?>
<h2>Mailing list</h2>
<div id="carbonForm">
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <input type="hidden" name="action" value="submit" />
      <label for="name" class="label">Name:</label>
    <div class="field">
      <input type="text" name="user_name" value="<? echo $_POST['user_name']; ?>" id="user_name" />
    </div>
<br />
      <label for="email" class="label">Email:</label>
    <div class="field">
      <input type="text" name="user_mail" value="<? echo $_POST['user_mail']; ?>" id="user_mail" />
    </div>
<br />
      <label for="mobile" class="label">Mobile:</label>
    <div class="field">
      <input type="text" name="user_mobile" value="<? echo $_POST['user_mobile']; ?>" id="user_mobile" />
    </div>
<br />
      <input type="submit" name="submit" id="submit" value="Signup" />
  </form>
</div>


Prøv lige en sidste gang det her eksempel..
Avatar billede krusnof Nybegynder
25. maj 2010 - 15:16 #21
Ingenting, men igen har det noget at gøre med at man sætter det ind i et admin module text field, som så sætter det automatisk ind? Jeg kan jo ikke sætte hele ovenstående kode ind i mit index.php, for så fremover formen på alle mine sider jo.

Tak ,-)
Avatar billede cronaldo Nybegynder
25. maj 2010 - 15:29 #22
Okay det virker meget mærkeligt så!
Avatar billede krusnof Nybegynder
25. maj 2010 - 15:31 #23
http://www.designforlife.dk/upload/screen.png

Et lille screen af hvordan det ser ud pt, og der er netop der, jeg vil have den til at skrive en bekræftigelse at man er tilmeldt ;-)
Avatar billede RexReptiles Nybegynder
25. maj 2010 - 15:45 #24
dit problem er 100% at du bruger en latterlig editor gennem noget cms frem for at arbejde direkte i kilden - og jeg kan ik hjælpe dig før du stopper med det.
Avatar billede RexReptiles Nybegynder
25. maj 2010 - 15:53 #25
og dog, hvad står der i adresse feltet når du trykker på mailingliste?

for så er dit problem med garanti at den loader koden efter en bestemt GET variabel. og den glemmer du at tilføje i din form action.

form action="url_når_du_er_på_mailinglisten"
Avatar billede krusnof Nybegynder
25. maj 2010 - 15:53 #26
Cool, men så kan du ikke hjælpe RexReptiles. Du bliver jo nødt til at forholde dig til den problemstilling jeg har, ellers nytter det jo ikke noget. Tak for hjælpen so far.

Jeg kan jo heller ikke ændre direkte i filen som jeg siger, da fil-outputtet bliver genereret at en index.php - og hvis jeg indsætter koden der, så forekommer det på alle sider der bliver genereraet. Hvis du ved hvordan man kommer udenom det, så er du velkommen til at byde ind.

Mange tak
Avatar billede krusnof Nybegynder
25. maj 2010 - 16:01 #27
Prøvede nedenstående uden held -samme tomning af felter:

<?php
if(isset($_POST['action']))
{
$host="localhost";
$username="xxx";
$password="xxx"; 
$db_name="hlr"; 
$tbl_name="mailinglist";

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$user_name=$_POST['user_name'];
$user_mail=$_POST['user_mail'];
$user_mobile=$_POST['user_mobile'];

$sql="INSERT INTO $tbl_name(user_name, user_mail, user_mobile)VALUES('$user_name', '$user_mail', '$user_mobile')";

if(  mysql_query( "INSERT INTO ".$tbl_name." (user_name, user_mail, user_mobile) VALUES('".mysql_real_escape_string($user_name)."', '".mysql_real_escape_string($user_mail)."', '".mysql_real_escape_string($user_mobile)."') )  )
{
  echo "<h3>You're now a part of our mailing list! Thanks!</h3>";
}
else
{
  echo "Error";
}

mysql_close();
}
?>
<h2>Mailing list</h2>
  <form action="http://localhost:8888/index.php?/mailinglist/join-the-fun/" method="post">
    <input type="hidden" name="action" value="submit" />
      <label for="name" class="label">Name:</label>
    <div class="field">
      <input type="text" name="user_name" value="<? echo $_POST['user_name']; ?>" id="user_name" />
    </div>
<br />
      <label for="email" class="label">Email:</label>
    <div class="field">
      <input type="text" name="user_mail" value="<? echo $_POST['user_mail']; ?>" id="user_mail" />
    </div>
<br />
      <label for="mobile" class="label">Mobile:</label>
    <div class="field">
      <input type="text" name="user_mobile" value="<? echo $_POST['user_mobile']; ?>" id="user_mobile" />
    </div>
<br />
      <input type="submit" name="submit" id="submit" value="Signup" />
  </form>
Avatar billede RexReptiles Nybegynder
25. maj 2010 - 16:11 #28
tjaa...

jeg gir dit CMS skylden, det stinker af pis.

ville ha været 217 gange nemmere uden det.
Avatar billede krusnof Nybegynder
25. maj 2010 - 16:14 #29
Fint, tak for hjælpen, men du behøver ikke at svare mere - gider egentlig ikke at høre den tone Selvom du prøver at hjælpe!
Avatar billede cronaldo Nybegynder
25. maj 2010 - 16:45 #30
[code]
<?php
if( $_POST['action'] == "submit")
{
$host = "localhost";
$username = "xxx";
$password = "xxx"; 
$db_name = "hlr"; 
$tbl_name = "mailinglist";

mysql_connect($host, $username, $password) or die("cannot connect"); // EDITED THIS LINE
mysql_select_db($db_name) or die("cannot select DB");

$user_name = $_POST['user_name'];
$user_mail = $_POST['user_mail'];
$user_mobile = $_POST['user_mobile'];


if(  !empty($user_name) && !empty($user_mail) && !empty($user_mobile)  ) // EVERY FIELD HAS TO BE FILLED WITH SOMETHING
{
mysql_query(    "INSERT INTO
                    ".$tbl_name."
                    (user_name, user_mail, user_mobile)
                VALUES( '".mysql_real_escape_string($user_name)."',
                        '".mysql_real_escape_string($user_mail)."',
                        '".mysql_real_escape_string($user_mobile)."'
                )
            ") or die( mysql_error() );
  echo "<h3>You're now a part of our mailing list! Thanks!</h3>";
}
else
{
  echo "Error - one or more fields is empty";
}

mysql_close();
}
?>
<h2>Mailing list</h2>
  <form action="http://localhost:8888/index.php?/mailinglist/join-the-fun/" method="post">
    <input type="hidden" name="action" value="submit" />
      <label for="name" class="label">Name:</label>
    <div class="field">
      <input type="text" name="user_name" value="<? echo $_POST['user_name']; ?>" id="user_name" />
    </div>
<br />
      <label for="email" class="label">Email:</label>
    <div class="field">
      <input type="text" name="user_mail" value="<? echo $_POST['user_mail']; ?>" id="user_mail" />
    </div>
<br />
      <label for="mobile" class="label">Mobile:</label>
    <div class="field">
      <input type="text" name="user_mobile" value="<? echo $_POST['user_mobile']; ?>" id="user_mobile" />
    </div>
<br />
      <input type="submit" name="submit" id="submit" value="Signup" />
  </form>
[/code]

----------------------

Kopierede lige det hele over i min editor og prøvede.. Kunne se jeg manglede et " i den mysql_query jeg fik lavet.. nu tror jeg rent faktisk det virker.. der er i hvert fald ingen fejl i koden - prøv lige :)
Avatar billede cronaldo Nybegynder
25. maj 2010 - 16:45 #31
min code tags fik lige smadret det hele, her er koden i ordentlig udgave:


<?php
if( $_POST['action'] == "submit")
{
$host = "localhost";
$username = "xxx";
$password = "xxx"; 
$db_name = "hlr"; 
$tbl_name = "mailinglist";

mysql_connect($host, $username, $password) or die("cannot connect"); // EDITED THIS LINE
mysql_select_db($db_name) or die("cannot select DB");

$user_name = $_POST['user_name'];
$user_mail = $_POST['user_mail'];
$user_mobile = $_POST['user_mobile'];


if(  !empty($user_name) && !empty($user_mail) && !empty($user_mobile)  ) // EVERY FIELD HAS TO BE FILLED WITH SOMETHING
{
mysql_query(    "INSERT INTO
                    ".$tbl_name."
                    (user_name, user_mail, user_mobile)
                VALUES( '".mysql_real_escape_string($user_name)."',
                        '".mysql_real_escape_string($user_mail)."',
                        '".mysql_real_escape_string($user_mobile)."'
                )
            ") or die( mysql_error() );
  echo "<h3>You're now a part of our mailing list! Thanks!</h3>";
}
else
{
  echo "Error - one or more fields is empty";
}

mysql_close();
}
?>
<h2>Mailing list</h2>
  <form action="http://localhost:8888/index.php?/mailinglist/join-the-fun/" method="post">
    <input type="hidden" name="action" value="submit" />
      <label for="name" class="label">Name:</label>
    <div class="field">
      <input type="text" name="user_name" value="<? echo $_POST['user_name']; ?>" id="user_name" />
    </div>
<br />
      <label for="email" class="label">Email:</label>
    <div class="field">
      <input type="text" name="user_mail" value="<? echo $_POST['user_mail']; ?>" id="user_mail" />
    </div>
<br />
      <label for="mobile" class="label">Mobile:</label>
    <div class="field">
      <input type="text" name="user_mobile" value="<? echo $_POST['user_mobile']; ?>" id="user_mobile" />
    </div>
<br />
      <input type="submit" name="submit" id="submit" value="Signup" />
  </form>
Avatar billede krusnof Nybegynder
25. maj 2010 - 16:55 #32
Nope sorry... Samme som før...
Avatar billede krusnof Nybegynder
25. maj 2010 - 16:55 #33
Den kommer heller ikke med en fejl, hvis jeg lader et af felterne være tomme!
Avatar billede RexReptiles Nybegynder
25. maj 2010 - 18:02 #34
ALTSÅ!

det kode som blir lavet her virker krusnof.

der er noget med dit cms eller din server.

det er ikke koden her som er problemet.



jeg ville gå online og teste det.

så ville jeg google efter "known trouble with pasting php code in indexhibit"

alt efter om det din server eller cms'et som har problemer - ville jeg fixe min server eller kassere cms'et fordi det ik lever op til det jeg skulle bruge det til.
Avatar billede cronaldo Nybegynder
25. maj 2010 - 18:25 #35
Krusnof:

Gider du prøve dette:

<form action="" method="post" enctype="multipart/form-data">

i stedet for:

<form action="http://localhost:8888/index.php?/mailinglist/join-the-fun/" method="post">
Avatar billede cronaldo Nybegynder
25. maj 2010 - 18:33 #36
Og denne linje:

if(  !empty($user_name) && !empty($user_mail) && !empty($user_mobile)  ) // EVERY FIELD HAS TO BE FILLED WITH SOMETHING
{

med dette:

if(  !empty($user_name) && !empty($user_mail) && !empty($user_mobile)  )
{
Avatar billede RexReptiles Nybegynder
25. maj 2010 - 18:52 #37
cronaldo

jeg har kørt dem både med php self - en sti - NULL

søgen efter POST action og user_mail

jeg gjorde det bare sådan her:

if (isset($_POST['action']))
og
if (isset($_POST['user_mail']))

alle med resultat.

- det er et eller andet mystisk ved krusnofs setup.
Avatar billede cronaldo Nybegynder
25. maj 2010 - 19:29 #38
Jamen kan det ikke tænkes han har downloadet en gammel version af PHP ?

Umiddelbart vil jeg vove den påstand, at han bør få det lagt online, for jeg synes da ikke min kode burde give fejl!
Avatar billede krusnof Nybegynder
26. maj 2010 - 10:41 #39
Nu har jeg taget det online og brugt følgende, men det virker stadig ikke...
<?php
if( $_POST['action'] == "submit")
{
$host = "localhost";
$username = "xxx";
$password = "xxx"; 
$db_name = "hlr"; 
$tbl_name = "mailinglist";

mysql_connect($host, $username, $password) or die("cannot connect"); // EDITED THIS LINE
mysql_select_db($db_name) or die("cannot select DB");

$user_name = $_POST['user_name'];
$user_mail = $_POST['user_mail'];
$user_mobile = $_POST['user_mobile'];


if(  !empty($user_name) && !empty($user_mail) && !empty($user_mobile)  )
{

mysql_query(    "INSERT INTO
                    ".$tbl_name."
                    (user_name, user_mail, user_mobile)
                VALUES( '".mysql_real_escape_string($user_name)."',
                        '".mysql_real_escape_string($user_mail)."',
                        '".mysql_real_escape_string($user_mobile)."'
                )
            ") or die( mysql_error() );
  echo "<h3>You're now a part of our mailing list! Thanks!</h3>";
}
else
{
  echo "Error - one or more fields is empty";
}

mysql_close();
}
?>
<h2>Mailing list</h2>
<form action="" method="post" enctype="multipart/form-data">
    <input type="hidden" name="action" value="submit" />
      <label for="name" class="label">Name:</label>
    <div class="field">
      <input type="text" name="user_name" value="<? echo $_POST['user_name']; ?>" id="user_name" />
    </div>
<br />
      <label for="email" class="label">Email:</label>
    <div class="field">
      <input type="text" name="user_mail" value="<? echo $_POST['user_mail']; ?>" id="user_mail" />
    </div>
<br />
      <label for="mobile" class="label">Mobile:</label>
    <div class="field">
      <input type="text" name="user_mobile" value="<? echo $_POST['user_mobile']; ?>" id="user_mobile" />
    </div>
<br />
      <input type="submit" name="submit" id="submit" value="Signup" />
  </form>

Det må være systemet, da det virker når man linker til ekstern fil. Men har I så et forslag til hvordan man kan gøre det? Med det mener jeg, at brugerne skal have mulighed for at ryge tilbage på forsiden igen.

Tak
Avatar billede krusnof Nybegynder
26. maj 2010 - 10:46 #40
Avatar billede krusnof Nybegynder
26. maj 2010 - 23:32 #41
Ingen der kan få det til at virke på en eller anden måske?!
Avatar billede RexReptiles Nybegynder
27. maj 2010 - 02:05 #42
hvis du bruger en extern fil kan du lave det sådan her:

<?
function redirect($url){
    echo '<meta http-equiv="refresh" content="0;url='.$url.'">'; 
}
if( $_POST['action'] == "submit")
{
$host = "localhost";
$username = "xxx";
$password = "xxx"; 
$db_name = "hlr"; 
$tbl_name = "mailinglist";

mysql_connect($host, $username, $password) or die("cannot connect"); // EDITED THIS LINE
mysql_select_db($db_name) or die("cannot select DB");

$user_name = $_POST['user_name'];
$user_mail = $_POST['user_mail'];
$user_mobile = $_POST['user_mobile'];


if(  !empty($user_name) && !empty($user_mail) && !empty($user_mobile)  )
{

mysql_query(    "INSERT INTO
                    ".$tbl_name."
                    (user_name, user_mail, user_mobile)
                VALUES( '".mysql_real_escape_string($user_name)."',
                        '".mysql_real_escape_string($user_mail)."',
                        '".mysql_real_escape_string($user_mobile)."'
                )
            ") or die( mysql_error() );
  echo "<h3>You're now a part of our mailing list! Thanks!</h3>";

// erstat url med sted de skal sendes hen.

redirect("url");
}
else
{

// erstat url med sted de skal hen når de trykker eller brug redirect som foroven.

  echo "Error - one or more fields is empty<br /> <a href='url'>Go back</a>";

}

mysql_close();
}



?>

og din form action skal selvfølgelig pege på filen der indeholder dette.
Avatar billede dkfire Nybegynder
27. maj 2010 - 11:00 #43
For at definere hvad "det virker ikke" er, så bliver du nød til at udskrive nogle af dine variabler. ( Det kaldes også fejlsøgning )

Start med at udskrive alle dine POST værdier når du har submittet formen.


<?php

if( isset($_POST['submit']))
{
$host = "localhost";
$username = "xxx";
$password = "xxx";
$db_name = "hlr";
$tbl_name = "mailinglist";

mysql_connect($host, $username, $password) or die("cannot connect"); // EDITED THIS LINE
mysql_select_db($db_name) or die("cannot select DB");

$user_name = $_POST['user_name'];
$user_mail = $_POST['user_mail'];
$user_mobile = $_POST['user_mobile'];


if(  !empty($user_name) && !empty($user_mail) && !empty($user_mobile)  )
{


mysql_query(    "INSERT INTO
                    ".$tbl_name."
                    (user_name, user_mail, user_mobile)
                VALUES( '".mysql_real_escape_string($user_name)."',
                        '".mysql_real_escape_string($user_mail)."',
                        '".mysql_real_escape_string($user_mobile)."'
                )
            ") or die( mysql_error() );
  echo "<h3>You're now a part of our mailing list! Thanks!</h3>";
}
else
{
  echo "Error - one or more fields is empty";
}

mysql_close();
}

vardump($_POST); // skulle meget gerne udskrive alle dine data når du submitter.


?>
<h2>Mailing list</h2>
<form action="" method="post" enctype="">
    <input type="hidden" name="action" value="submit" />
      <label for="name" class="label">Name:</label>
    <div class="field">
      <input type="text" name="user_name" value="<? echo $_POST['user_name']; ?>" id="user_name" />
    </div>
<br />
      <label for="email" class="label">Email:</label>
    <div class="field">
      <input type="text" name="user_mail" value="<? echo $_POST['user_mail']; ?>" id="user_mail" />
    </div>
<br />
      <label for="mobile" class="label">Mobile:</label>
    <div class="field">
      <input type="text" name="user_mobile" value="<? echo $_POST['user_mobile']; ?>" id="user_mobile" />
    </div>
<br />
      <input type="submit" name="submit" id="submit" value="Signup" />
  </form>


Dernæst vil det være en rigtig god ide at kigge på din kildekode for den html side som browseren viser.
Prøv at vise os kildekoden.
Avatar billede krusnof Nybegynder
28. maj 2010 - 16:57 #44
http://designforlife.dk/hlr/mailinglist/join-the-fun/

Nu har sat det ind som du skrev dkfire, men du kan selv prøve at se hvad der sker! Ingenting desværre ;-)
02. juni 2010 - 09:38 #45
krusnof, du maa nok se i oejnene at du ikke faar nogen loesning i denne traad.  Jeg har testet den kode du viser i dit oprindelige spoergsmaal og i mit system virker koden efter hensigten:  databasen bliver updatet med det der fyldes i formularen og jeg faar, paa samme side, beskedden "You're now a part of our mailing list! Thanks!" 

Problemet ligger derfor IKKE i din kode (uanset hvor mange variationer kloge hoveder kan komme op med - jeg trak mig tilbage fordi jeg ikke kunne foelge med i, eller ikke havde energi til at foelge med i disse diversioner, og jeg kan ikke selv se hvad der er galt med "$_SERVER['PHP_SELF']" - det er det jeg selv bruger.)

Saa du skal soege hjaelp et andet sted end i et spoegsmaal med kategorien php.  Jeg kan ikke sige dig hvor.  Du siger at du bruger Indexhibit.  Findes der maaske et Indexhibit forum eller user community eller helpdesk hvor du kan henvende dit?  Du skal saa lukke dette spoergsmaal (og vel nok give dig selv points fordi du ikke fik en loesning - selv om en bruger har oprettet et svar tre gange.)

Hvis du rejser spoergsmaalet igen, paa eksperten i en anden kategori eller paa et Indexhibit forum, vil jeg foreslaa at du arbejder lidt med den maade du forklarer dig paa.  I denne traad i dit oprindelige spoergsmaal sagde du: "Problemet ligger dog i at jeg gerne ville have at valideretingen forblev paa samme side...."  Nej, det er ikke det der er dit problem.  Dit problem er at koden ikke resulterer i update af databasen og i en besked til brugeren (og heller ikke en fejlmelding).  Det tog syv indlaeg foer du forklarede det.  Det at "der sker ingenting" hjaelper ikke nogen med at foreslaa en loesning.  Du var ogsaa sen til at forklare at du bruger et cms system.  Det kommer ikke mig ved, men du vil give dig selv en bedre chance for at faa en loesning hvis du proever at give svarerne bedre oplysninger.
Avatar billede krusnof Nybegynder
02. juni 2010 - 09:45 #46
Tak for kommentar, jeg lukker - men da der ikke var nogle som kunne løsne det, så beholder jeg pointene. Om det er cms systemets skyld eller ej, kan jeg jo ikke gøre for! Ellers havde jeg jo ikke spurgt.

Det skal siges at jeg nævnte Indexhibit i andet indlæg, så hvis det er for sent, sorry, men synes ikke at det er så sent.

Har desuden prøvet deres egne fora, men de svarer ikke.

Har fået en ven til at lave en jquery/ajax box, som kan løse problemet.

God dag.
Avatar billede krusnof Nybegynder
02. juni 2010 - 09:46 #47
svar
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

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