Autor Zpráva
Milan Zítka
Profil *
Dobrý den,
chtěl bych na svém webu uspořádat soutěž pro registrované uživatele. Soutěž by spočívala v zodpovězení 5 otázek s možnostmi a až e (input type="radio"). Pak by soutěžící vyplnil své jméno a email, přičemž zadaný email by se porovnal s údaji v databázi, aby se zjistilo zda soutěží registrovaný uživatel. Nakonec se celý formulář odešle na email a soutěžícímu se zobrazí text s potvrzením o přijetí jeho odpovědí.

Mohl by mi s tím někdo pomoci? Moc se v php ještě nevyznám a potřebuji to celkem brzy. Nejlepší by bylo, kdyby se dal celý formulář lehce pozměnit (zůstala by část se jménem a emailem). Pokud někdo nabídne funkční řešení, rád umístím jeho jméno s libovolným odkazem či textem (či kombinací) k finální podobě soutěže i soutěží budoucích.

Děkuji.
Milan
RockFire
Profil
Hodím ti to sem kolem jedné hodiny. Už jsem to rozdělal, ale nestíhám to...
Budulinek
Profil
Zajimalo by mě, proč by uživatel měl vyplňovat znovu svoje údaje, když už je registrovany? Není lepši tu soutěž zpřístupnit jen pro přihlášené uživatele (tedy registrované)? Bude to pak jednodušší jak pro ně, tak pro zpracovatele soutěže.
Milan Zítka
Profil *
Jelikož web jede na CMS, tak by asi chvilku trvalo zorientovat se v něm... Třeba do budoucna, ale teď to potřebuji co nejdřív a myslím, že jedna řádka navíc nikoho nezabije (porovnává se jen email, při registraci je jméno nepovinné takže to bysme neměli u všech).
RockFire
Profil
Tak, za prvé se omlouvám se zpoždění, měl jsem nějakou práci... Script funguje, ale musíte nastavit údaje pro připojení do db, nastavit mail, kam se to má odeslat, nastavit správně tabulky a sloupce a ještě value u <input type="radio">. Prostě si s tím stačí trochu vyhrát, na to stačí základní znalosti. Mimochodem ještě nevím, jestli funguje to s tím mailem. Mělo by, ale nemohl jsem to vyzkoušet.

<?php

if(IsSet($_POST["odesli"]))
{
$mysql_server = 'localhost';
$mysql_jmeno = 'jmeno';
$mysql_heslo = 'heslo';
$mysql_databaze = 'databaze';

mysql_connect ( $mysql_server, $mysql_jmeno, $mysql_heslo );
mysql_select_db ( $mysql_databaze );
mysql_query ("SET NAMES 'utf8';");

$email = htmlspecialchars($_POST["email"]);
$dotaz = mysql_query("SELECT * FROM XXX WHERE email = '".$email."'");
   if(mysql_num_rows($dotaz) == 0)
   {
   echo '<p><strong>Pro soutěžení se musíte <a href="#">registrovat</a>.</strong></p>';
   }
   else
   {
   $jmeno = htmlspecialchars($_POST["jmeno"]);
   $otazka1 = $_POST["otazka1"];
   $otazka2 = $_POST["otazka2"];
   $otazka3 = $_POST["otazka3"];
   $otazka4 = $_POST["otazka4"];
   $otazka5 = $_POST["otazka5"];

      if(!empty($jmeno) and !empty($email) and $email != "@")
      {
      $dotaz2 = mysql_query("INSERT INTO XXX(jmeno, otazka1, otazka2, otazka3, otazka4, otazka5) VALUES('".mysql_escape_string($jmeno)."','".$otazka1."','".$otazka2."','".$otazka3."','".$otazka4."','".$otazka5."')");
         if($dotaz2)
         {
         mail ("MAIL@MAIL.MAIL","Soutěž z SERVERU XXX","První odpověď:\n".$otazka1."\nDruhá odpověď".$otazka2."\nTřetí odpověď".$otazka3."\nČtvrtá odpověď".$otazka4."\nPátá odpověď:".$otazka5, "Content-Type: text/plain; charset=UTF-8");
         echo '<p><strong>Váš hlas byl úspěšně odeslán.</strong></p>';
         }
       }
       else
       {
       echo '<p><strong>Nevyplnili jste některou položku</strong></p>'; 
       }
   }
}    
   echo '
   <form action="index.php" method="post">
   <fieldset>
   <legend>Hlasuj</legend>
   Jméno: <input type="text" name="jmeno"><br>
   E-mail: <input type="text" name="email" value="@"><br>
   <h3>První otázka</h3>
   První odpověď <input type="radio" name="otazka1" value="a" checked><br>
   Druhá odpověď <input type="radio" name="otazka1" value="b"><br>
   Třetí odpověď <input type="radio" name="otazka1" value="c"><br>
   Čtvrtá odpověď <input type="radio" name="otazka1" value="d"><br>
   Pátá odpověď <input type="radio" name="otazka1" value="e">
   
   <h3>Druhá otázka</h3>
   První odpověď <input type="radio" name="otazka2" value="a" checked><br>
   Druhá odpověď <input type="radio" name="otazka2" value="b"><br>
   Třetí odpověď <input type="radio" name="otazka2" value="c"><br>
   Čtvrtá odpověď <input type="radio" name="otazka2" value="d"><br>
   Pátá odpověď <input type="radio" name="otazka2" value="e">
   
   <h3>Třetí otázka</h3>
   První odpověď <input type="radio" name="otazka3" value="a" checked><br>
   Druhá odpověď <input type="radio" name="otazka3" value="b"><br>
   Třetí odpověď <input type="radio" name="otazka3" value="c"><br>
   Čtvrtá odpověď <input type="radio" name="otazka3" value="d"><br>
   Pátá odpověď <input type="radio" name="otazka3" value="e">
   
   <h3>Čtvrtá otázka</h3>
   První odpověď <input type="radio" name="otazka4" value="a" checked><br>
   Druhá odpověď <input type="radio" name="otazka4" value="b"><br>
   Třetí odpověď <input type="radio" name="otazka4" value="c"><br>
   Čtvrtá odpověď <input type="radio" name="otazka4" value="d"><br>
   Pátá odpověď <input type="radio" name="otazka4" value="e">
   
   <h3>Pátá otázka</h3>
   První odpověď <input type="radio" name="otazka5" value="a" checked><br>
   Druhá odpověď <input type="radio" name="otazka5" value="b"><br>
   Třetí odpověď <input type="radio" name="otazka5" value="c"><br>
   Čtvrtá odpověď <input type="radio" name="otazka5" value="d"><br>
   Pátá odpověď <input type="radio" name="otazka5" value="e"><br>
   <input type="submit" name="odesli" value="Odeslat">
   </fieldset>
   </form>
   ';
?>
Milan Zítka
Profil *
Děkuji mockrát!! Funguje to dobře, jen pozměním vzhled, aby to sedělo do designu.

Měl bych jen malou prosbu. Snažil jsem se pozměnit kód, aby email přišel jakoby od emailu soutěžícího:

$headers = 'MIME-Version: 1.0' . '\r\n';
$headers .= 'Content-Type: text/plain; charset=UTF-8' . '\r\n';
$headers .= 'From: ' . $email . '\r\n';

.
.
.

mail ("info@jazzblog.cz","Soutez JazzBlog.cz","Prvni odpoved:\n".$otazka1."\nDruha odpoved\n".$otazka2."\nTreti odpoved\n".$otazka3."\nCtvrta odpoved\n".$otazka4."\nPata odpoved:\n".$otazka5, $headers);

ale nějak mi to nefunguje. Zřejmě bude chyba někde v tý části "From:" . ... v tom spojení obyč. textu a kódu.

Jinak pokud chcete pod soutěžním formulářem zveřejnit nějaký banner nebo jiný odkaz, napište mi na email milanzitka@gmail.com , to je to nejmenší, rozhodně jste mi ušetřil spoustu práce a nervů!
RockFire
Profil
Ten problém, aby e-mail přišel od soutěžícího vyřešit bohužel neumím... Ale zksute to dát jako jednotlivý krátký dotaz do sekce PHP, tam vám určitě někdo poradí.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: