Autor Zpráva
pepan
Profil
Chtěl jsem se zeptat, zda-li se dá jedna funkce použít 2x
mám takovouto funkci :
<?php

// Tato funkce vytvorí tri rozevírací nabídky pro mesíce, dny a roky.

function vytvor_kalendar($tento_mesic = NULL, $dnes = NULL, $rok = 

NULL, $hodin = NULL, $minut = NULL) {

// rozevírací nabídka dnů

	  echo '<select name="den">';
  for ($den = 1; $den <= 31; $den++) {
    if (strlen($den)==1) {
    $den="0" . $den;
    }
	echo "<option value=\"$den\"";
    if ($den == $dnes) {
      echo ' selected="selected"';
    }
    echo ">$den</option>\n";
	  }
  echo '</select>';
echo '.';  

//rozevírací nabídka měsíců

  // Vytvori pole mesícu.
  
  $mesice = array (1 => 'leden', 'únor', 'březen', 'duben', 'květen', 

'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 

'prosinec');
  
  echo '<select name="mesic">';
  foreach ($mesice as $klic => $hodnota) {
		    if (strlen($klic)==1) {
    $klic="0" . $klic;
    }
    echo "<option value=\"$klic\"";
    if ($klic == $tento_mesic) {
      echo ' selected="selected"';
    }
    echo ">$hodnota</option>\n";
  }
  echo '</select>';	
echo ' ';  

//rozevírací nabídka roků
  
  echo '<select name="rok">';

  if (!isset($rok)) {
    $rok = date('Y');
  }
  $konec = $rok + 5;
  while ($rok <= $konec) {
    echo "<option value=\"$rok\">$rok</option>\n";
    $rok++;
  }
  echo '</select>';
echo ' ';  
  
  //rozevírací nabídka hodin
  
  echo '<select name="hodin">';
  for ($hodiny = 0; $hodiny <= 23; $hodiny++) {
      if (strlen($hodiny)==1) {
    $hodiny="0" . $hodiny;
    }
    echo "<option value=\"$hodiny\"";
    if ($hodiny == $hodin) {
      echo ' selected="selected"';
    }
    echo ">$hodiny</option>\n";
	  }
  echo '</select>';
echo ':';  
  
    //rozevírací nabídka minut
  
  echo '<select name="minut">';
  for ($minuty = 0; $minuty <= 59; $minuty++) {
      if (strlen($minuty)==1) {
    $minuty="0" . $minuty;
    }
    echo "<option value=\"$minuty\"";
    if ($minuty == $minut) {
      echo ' selected="selected"';
    }
    echo ">$minuty</option>\n";
	  }
  echo '</select>';
} 

// Konec funkce vytvor_kalendar().

$datum = getdate();
vytvor_kalendar($datum['mon'], $datum['mday'], $datum['year'], 

$datum['hours'], $datum['minutes']); 

// Tvorba kalendáre.

?>
Která vytvoří formulář na zadávání data akce (začátku) a tuto samou funkci bych chtěl použít i na zadávání data konce akce. Dá se to nějak řešit nebo znáte nějaké lepší řešení jak vyřešit tento problém? Děkuji
Měsíček
Profil
Když ji trochu upravíš tak se samozřejmě 2x použít dá ;-)
pepan
Profil
Měsíček
já právě vůbec nevím, jak bych ji měl upravit, PHP moc nehovím
Tomasds
Profil
pepan
Prostě ty druhé selecty musíš přejmenovat. Třeba <select name="den2"> atp.
pepan
Profil
Tomasds
já si to vůbec neuvědomil, děkuji
pepan
Profil
Tomasds
Zkoušel jsem to vše přejmenovat a pořád mi to vypisuje stejnou chybu - Fatal error: Cannot redeclare vytvor_kalendar() (previously declared in C:\Program Files\xampp\htdocs\xampp\web\zadavani_akci\includes\form_date_z.inc:5) in C:\Program Files\xampp\htdocs\xampp\web\zadavani_akci\includes\form_date_k.inc on line 88
Měsíček
Profil
Tu funkci můžeš volat 2x ovšem ne ji dvakrát vytvářet ;-)
pepan
Profil
Měsíček
aha, ale jak bych potom ten script upravil, aby mi vypsal ty formuláře 2x ?
Měsíček
Profil
Nakopl jsem Tě dostatečně? :)
function anything ($select = 0) {
  if ($select == 0) {
    echo 0; // Nebo něco udělej 
  }
  if ($select != 0) {
    echo 1; // Udělej něco jiného (podobného)
  }
}

anything( 0 );
anything( 4 );
pepan
Profil
Měsíček
Děkuji "nakopnutí" bylo dostatečné. Teď ale nastal problém, že všechny ty selecty (dnů, měsíců, hodin, minut a roků) mají stejný parametr name. Dá se to nějak ošetřit?
pepan
Profil
Ona právě celá ta funkce obsahuje ty selecty i s name.
Holyday
Profil
function anything ($select = 0) {
  if ($select == 0) {
     echo "<input type=\"text\" name=\"textovy1\">";
  }
  if ($select != 0) {
     echo "<input type=\"text\" name=\"textovy2\">";
  }
}

anything( 0 );
anything( 4 );


anebo kratší varianta

function anything ($select = 0) {
  if ($select == 0) {
    $cislo = 1;
    }
  if ($select != 0) {
   $cislo = 2;
   }
 echo "<input type=\"text\" name=\"textovy".$cislo."\">";
}

anything( 0 );
anything( 4 );
pepan
Profil
Holyday
PHP mi moc nejde, pořád nevím, jak to změnit. Ty funkce volám takto
  <p>Název akce:</p>
  <p>    
    <input id="povine" name="nazev" title="Název akce" />
  </p>
  <p>Datum od:</p>
  <p><?php include("includes/form_date.inc"); 
  vytvor_kalendar($datum['mon'], $datum['mday'], $datum['year'], $datum['hours'], $datum['minutes']);
  // Tvorba kalendáre.
  echo "</p>
  <p>Datum do:</p>
  <p>";
  vytvor_kalendar($datum['mon'], $datum['mday'], $datum['year'], $datum['hours'], $datum['minutes']);
  // Tvorba kalendáre.
   ?></p>

Kde form_date.inc je mnou nahoře uváděný kód bez sedmi posledních řádků.
Holyday
Profil
Vypiš spíš, jak teď vypadá tělo funkce, upravil jsem pouze Měsíčkovo principielní řešení...
pepan
Profil
Holyday
function vytvor_kalendar($tento_mesic = NULL, $dnes = NULL, $rok = NULL, $hodin = NULL, $minut = NULL) {

// rozevírací nabídka dnů

	  echo '<select name="den">';
  for ($den = 1; $den <= 31; $den++) {
    if (strlen($den)==1) {
    $den="0" . $den;
    }
	echo "<option value=\"$den\"";
    if ($den == $dnes) {
      echo ' selected="selected"';
    }
    echo ">$den</option>\n";
	  }
  echo '</select>';
echo '.';  

//rozevírací nabídka měsíců

  // Vytvori pole mesícu.
  
  $mesice = array (1 => 'leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec');
  
  echo '<select name="mesic">';
  foreach ($mesice as $klic => $hodnota) {
		    if (strlen($klic)==1) {
    $klic="0" . $klic;
    }
    echo "<option value=\"$klic\"";
    if ($klic == $tento_mesic) {
      echo ' selected="selected"';
    }
    echo ">$hodnota</option>\n";
  }
  echo '</select>';	
echo ' ';  

//rozevírací nabídka roků
  
  echo '<select name="rok">';

  if (!isset($rok)) {
    $rok = date('Y');
  }
  $konec = $rok + 5;
  while ($rok <= $konec) {
    echo "<option value=\"$rok\">$rok</option>\n";
    $rok++;
  }
  echo '</select>';
echo ' ';  
  
  //rozevírací nabídka hodin
  
  echo '<select name="hodin">';
  for ($hodiny = 0; $hodiny <= 23; $hodiny++) {
      if (strlen($hodiny)==1) {
    $hodiny="0" . $hodiny;
    }
    echo "<option value=\"$hodiny\"";
    if ($hodiny == $hodin) {
      echo ' selected="selected"';
    }
    echo ">$hodiny</option>\n";
	  }
  echo '</select>';
echo ':';  
  
    //rozevírací nabídka minut
  
  echo '<select name="minut">';
  for ($minuty = 0; $minuty <= 59; $minuty++) {
      if (strlen($minuty)==1) {
    $minuty="0" . $minuty;
    }
    echo "<option value=\"$minuty\"";
    if ($minuty == $minut) {
      echo ' selected="selected"';
    }
    echo ">$minuty</option>\n";
	  }
  echo '</select>';
} 

// Konec funkce vytvor_kalendar().

to je ta funkce
king26
Profil
<?php

// Tato funkce vytvorí tri rozevírací nabídky pro mesíce, dny a roky.

function vytvor_kalendar($tento_mesic = NULL, $dnes = NULL, $rok = 

NULL, $hodin = NULL, $minut = NULL,$cislo) {

// rozevírací nabídka dnů

	  echo "<select name=\"den".$cislo."\">";
  for ($den = 1; $den <= 31; $den++) {
    if (strlen($den)==1) {
    $den="0" . $den;
    }
	echo "<option value=\"$den\"";
    if ($den == $dnes) {
      echo ' selected="selected"';
    }
    echo ">$den</option>\n";
	  }
  echo '</select>';
echo '.';  

//rozevírací nabídka měsíců

  // Vytvori pole mesícu.
  
  $mesice = array (1 => 'leden', 'únor', 'březen', 'duben', 'květen', 

'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 

'prosinec');
  
  echo "<select name=\"mesic".$cislo."\">";
  foreach ($mesice as $klic => $hodnota) {
		    if (strlen($klic)==1) {
    $klic="0" . $klic;
    }
    echo "<option value=\"$klic\"";
    if ($klic == $tento_mesic) {
      echo ' selected="selected"';
    }
    echo ">$hodnota</option>\n";
  }
  echo '</select>';	
echo ' ';  

//rozevírací nabídka roků
  
  echo "<select name=\"rok".$cislo."\">";

  if (!isset($rok)) {
    $rok = date('Y');
  }
  $konec = $rok + 5;
  while ($rok <= $konec) {
    echo "<option value=\"$rok\">$rok</option>\n";
    $rok++;
  }
  echo '</select>';
echo ' ';  
  
  //rozevírací nabídka hodin
  
  echo "<select name=\"hodin".$cislo."\">";
  for ($hodiny = 0; $hodiny <= 23; $hodiny++) {
      if (strlen($hodiny)==1) {
    $hodiny="0" . $hodiny;
    }
    echo "<option value=\"$hodiny\"";
    if ($hodiny == $hodin) {
      echo ' selected="selected"';
    }
    echo ">$hodiny</option>\n";
	  }
  echo '</select>';
echo ':';  
  
    //rozevírací nabídka minut
  
  echo "<select name=\"minut".$cislo."\">";
  for ($minuty = 0; $minuty <= 59; $minuty++) {
      if (strlen($minuty)==1) {
    $minuty="0" . $minuty;
    }
    echo "<option value=\"$minuty\"";
    if ($minuty == $minut) {
      echo ' selected="selected"';
    }
    echo ">$minuty</option>\n";
	  }
  echo '</select>';
} 

// Konec funkce vytvor_kalendar().

$datum = getdate();
vytvor_kalendar($datum['mon'], $datum['mday'], $datum['year'], 

$datum['hours'], $datum['minutes'],0); 
vytvor_kalendar($datum['mon'], $datum['mday'], $datum['year'], 

$datum['hours'], $datum['minutes'],1); 

// Tvorba kalendáre.

?>


pro zacatek je to den0,mesic0,rok0,...
pro konec je to den1,mesic1,rok1,...
pepan
Profil
king26
Super, funguje to přesně jak má.
Všem moc děkuji za pomoc :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0