Autor Zpráva
kozusnik.jan
Profil *
Mám tento zdrojový kód:
<form action="uprava_tvorba_souboru.php" method="post">

<input type="text" name="nazev" />Název souboru<br />
<input type="text" name="adresa" />Adresa . <select>
                                            <option value="html" name="html">
                                            <option value="php" name="php"><br />
<input type="text" name="popis" />popis

<textarea name="text" cols="100">Text stránky</textarea>  <br />
<input type="submit" name="ok" value="Vytvorit" />
<?php
$spojeni = mysql_connect("localhost", "root");
mysql_select_db("pokus");
if(isset($_POST['ok'])) {
   if(isset($_POST['nazev']) && isset($_POST['adresa']) && isset($_POST['text']) && isset($_POST['popis'])) {
      if(file_exists($_POST['nazev'])) echo"Soubor s tímto názvem už existuje!!"; 
	  else {
	  switch($_POST['html']; $_POST['php']) {
	  case $_POST['html'] : $_POST['adresa'] .=".html" ; 
	    break;
	  case $_POST['php'] : $_POST['adresa'] .=".php" ;   
	  break;
	  }
	   $_POST['adresa'] .=".php" ; 
	   $fp = fopen($_POST['adresa'], "a+");
	   fwrite($fp, $_POST['text']);
	   fclose($fp);
	      };
		$nazev=mysql_real_escape_string($_POST['nazev']);
        $adresa=mysql_real_escape_string($_POST['adresa']);
        $popis=mysql_real_escape_string($_POST['popis']);
        $sql = "insert into soubory (jmeno, odkaz, popis) values ('$nazev', '$adresa', '$popis')";
        $res = mysql_query($sql);
        
       
        };
		};

Který vytvoří soubor se jménem, textem, popisem,.. podle formuláře. Mám problém s SWITCH.Pomocí této podmínky by se měla měnit přípona souboru, ale nevím, jak to udělat. Měnit by se to mělo podle toho, co si uživatel vybere z rolovacího seznamu. Prosím poraďte. Moc dík
Str4wberry
Profil
Atribut name dej <select>u, ne <option>ům. Budeš mít potom v proměnné $_POST["jméno tvého selectu"] obsah atributu value vybraného <option>u. Možná by se ještě hodilo udělat nějakou kontrolu.
kozusnik.jan
Profil *
Mohl bysto prosím vysvětlit trochu podrobněji? Popř. napsat ukázku toho kódu?
Str4wberry
Profil
Čemu na tom nerozumíš?
AM_
Profil
if(isset($_POST['ok']) && isset($_POST['nazev']) && isset($_POST['adresa']) && isset($_POST['text']) && isset($_POST['popis']) && file_exists($_POST['nazev'])) {

to vypadá o něco líp, ne?
jinak jak píše Str4wberry, atribut "name" musí být uveden u <select>u, u option žádný (zvláštní) význam nemá.
kozusnik.jan
Profil *
Str4wberry:
No, nevím, co mám u čeho napsat:-(
kozusnik.jan
Profil *
AM:
Dik
kozusnik.jan
Profil *
Tak už to mám
kozusnik.jan
Profil *
Tak nemam, trochu jsem tu podminku upravil.
 if(isset($_POST['ok'])) {
   if( isset($_POST['nazev']) && isset($_POST['adresa']) && isset($_POST['text']) && isset($_POST['popis']) && !file_exists($_POST['nazev'])) {
      
	  switch($_POST['pripona']) {
	  case html : $_POST['adresa'] .=".html" ; 
	    break;
	  case php : $_POST['adresa'] .=".php" ;   
	  break;
	  }
	   
	   $fp = fopen($_POST['adresa'], "a+");
	   fwrite($fp, $_POST['text']);
	   fclose($fp);
	   
		$nazev=mysql_real_escape_string($_POST['nazev']);
        $adresa=mysql_real_escape_string($_POST['adresa']);
        $popis=mysql_real_escape_string($_POST['popis']);
        $sql = "insert into soubory (jmeno, odkaz, popis) values ('$nazev', '$adresa', '$popis')";
        $res = mysql_query($sql);
        
	  };
 };
elseif( isset($_POST['ok']) && isset($_POST['nazev']) && isset($_POST['adresa']) && isset($_POST['text']) && isset($_POST['popis']) && file_exists($_POST['nazev']))
      echo "Soubor s tímto názvem už existuje!" ;
 elseif(( isset($_POST['ok']) &&  !file_exists($_POST['nazev']))  echo"Nevyplnili jste některé údaje!!";    


A ono mi to háže : Parse error: parse error in D:\wamp\www\weby\2010Jun14-18_50\POKUSY\uprava_tvorba_souboru.php on line 51 Vím, co to znamená, ale nevím, kde je problém. Nejspíš v podmínce elseif, protože jsem ji smazal a nic mi to nepsalo. Chybu jsem v ní ale nenašel:-(
sarojan
Profil
Toto }; je ootina, proto ti to hádže chybu. tu bodkočiarku vymaž.
kozusnik.jan
Profil *
moc dik
AM_
Profil
kozusnik.jan:
switch($_POST['pripona']) {case 'html' : $_POST['adresa'] .=".html" ;break;case 'php' : $_POST['adresa'] .=".php" ;break;}

Stringy patří do uvozovek nebo apostrofů. Zřejmě máš vypnuté zobrazování E_NOTICE - při vývoji určitě zapni! toto je docela závažný prohřešek.
Str4wberry
Profil
Upřímně moc nerozumím tomu, proč tam cpeš ten switch. Zkrátka:
$fp = fopen($_POST['adresa'].".".$_POST['pripona'], "a+");
Pokud s formulářem nebude pracovat někdo, kdo by chtěl podstrčit jako příponu neplatná data.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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