Autor Zpráva
michal454454
Profil
Zdravím potřeboval bych prosím poradit s problémem a to s takovým jak nacis přes input file obrázky hracu do slozky ./images
nasel jsem na internetu nejaky zdrojovy kod který fungoval, ale když jsem ho pak pouzil primo u te me věci tak ne... :/
to je ten zdroják:
<?
# toto je soubor index.php v adresari web/test/


 
if ($_POST["save"] == "Nahrat soubor") {
#cesta na serveru
   $uploadpath = $_SERVER['DOCUMENT_ROOT'];

 
# adresare musi mit prava pro zapis tj.777
   $uploaddir='test/tmp/';
   $uploaddir2='test/soubory/';
 
   $uploadfile = $uploadpath.$uploaddir.$_FILES['userfile']['name'];
 
  if (move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile)) {
      echo "Soubor byl presunut z ".$_FILES['userfile']['tmp_name']." do $uploadfile<br />";
 
# soubor lze nyni zkopirovat i na vice mist a pote smazat
      Copy($uploadpath.$uploaddir.$_FILES['userfile']['name'],
           $uploadpath.$uploaddir2.$_FILES['userfile']['name']);
      echo "Soubor byl zkopirovan do adresare $uploaddir2<br />";
      @unlink($uploadpath.$uploaddir.$_FILES['userfile']['name']);
      echo "Docasny soubor odstranen z $uploaddir<br />";
 
# info o nahranem souboru
      echo "<pre>
      Informace o souboru:
      ";
      print_r($_FILES);
      echo "</pre>";
   }
}
 
?>
<form name="image_edit" method="post" enctype="multipart/form-data">
<input name="userfile" type="file" />
<input name="save" type="submit" value="Nahrat soubor" />
</form>

soubor admin.php
$u=new user($db);
if(isset($_GET['module'])){
        switch($_GET['module']){
case 'pridejHrac':
            echo '<hr id="admrhr" style="width:75%;margin:auto;"/>';
            
            echo $u->pridejHracForm();

                
            break;
}
  }
soubor user.php

public function pridejHracForm(){
    return " <div class='admr'><form action='index.php?action=admin' method='POST'>
  <p>Číslo: <input type='text' name='ncislo'/></p>\n
   <p>Jméno: <input type='text' name='njmeno'/></p>\n
   <p>Věk: <input type='text' name='nvek'/></p>\n
  <p>Foto:  <input type='file' name='nfoto'/></p>\n
   <p>Zápasy: <input type='text' name='nzapasy'/></p>\n
    <p>Góly: <input type='text' name='ngoly'/></p>\n
    <p>Post:
    <select name='npost'><option value='Brankář'>Brankář</option><option value='Obránce'>Obránce</option><option value='Útočník'>Útočník</option>
 </select></p>\n
  <input type='submit' name='odeslat' value='Přidat' />
  </form></div>";
    }
mimochodec
Profil
Co znamená, že nefunguje? Nějaká hláška z toho vypadne? Ověř si, kudy kód probíhá, co se ještě provede a co už ne.
juriad
Profil
michal454454:

Formuláři přidej atribut: enctype="multipart/form-data"
A změň název a hodnotu odesílacího tlačítka, aby se shodovala s 6. řádkem prvního kódu.
mimochodec
Profil
juriad:
Řekl bych, že k nahrání obrázku slouží ten formulář v prvním bloku kódu na ř. 37.
juriad
Profil
mimochodec:
Aha. Je však možné, že to je ten, který fungoval.
michal454454
Profil
Prave ze to zadnou chybu nepise... a do ty složky to nepřidá upravil jsem to takto
soubor admin.php
$u=new user($db);
case 'pridejHrac':
            echo '<hr id="admrhr" style="width:75%;margin:auto;"/>';
            
# toto je soubor index.php v adresari web/test/


 
if ($_POST["odeslat"]) {
#cesta na serveru
   $uploadpath = $_SERVER['DOCUMENT_ROOT'];

 
# adresare musi mit prava pro zapis tj.777
   $uploaddir='web/images/';
  
 
   $uploadfile = $uploadpath.$uploaddir.$_FILES['userfile']['name'];
 
  if (move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile)) {
      echo "Soubor byl presunut z ".$_FILES['userfile']['tmp_name']." do $uploadfile<br />";
 
# soubor lze nyni zkopirovat i na vice mist a pote smazat
      Copy($uploadpath.$uploaddir.$_FILES['userfile']['name']);
      echo "Soubor byl zkopirovan do adresare $uploaddir<br />";
      @unlink($uploadpath.$uploaddir.$_FILES['userfile']['name']);
      echo "Docasny soubor odstranen z $uploaddir<br />";
 
# info o nahranem souboru
      echo "<pre>
      Informace o souboru:
      ";
      print_r($_FILES);
      
   }
}
 

            echo $u->pridejHracForm();

                
            break;
a soubor user.php
public function pridejHracForm(){
    return " <div class='admr'><form action='index.php?action=admin' method='POST'>
  <p>Číslo: <input type='text' name='ncislo'/></p>\n
   <p>Jméno: <input type='text' name='njmeno'/></p>\n
   <p>Věk: <input type='text' name='nvek'/></p>\n
  <p>Foto:  <input type='file' name='nfoto'/></p>\n
   <p>Zápasy: <input type='text' name='nzapasy'/></p>\n
    <p>Góly: <input type='text' name='ngoly'/></p>\n
    <p>Post:
    <select name='npost'><option value='Brankář'>Brankář</option><option value='Obránce'>Obránce</option><option value='Útočník'>Útočník</option>
 </select></p>\n
  <input type='submit' name='odeslat' value='Přidat' />
  </form></div>";
    }
mimochodec
Profil
michal454454:
Musíš lokalizovat chybu. Ta podmínka if ($_GET["odeslat"]) { je splněna? Dej si za ni echo "1"; Jestli se ti jednička vypíše, postupuj dál a hledej až nějaký řádek, který neproběhne. Naopak jestli se nevypíše, hledej stejným způsobem směrem nahoru, to místo, které ještě proběhne.
michal454454
Profil
tak nahore uz nemá co probihat jinak všechno probiha v pohode normalne formular to vypise akorát to do ty slozky nefunguje...
mimochodec
Profil
Ten if kolem move_uploaded_file je splněn? To za ním se provede?
michal454454
Profil
tak ted to mám takto a vypsalo mi to chybu chyba databaze kterou mam v podmínce hned v ty funkci pridejHrac()
user.php - funkce pridejHrac()
public function pridejHrac($cislo,$jmeno,$vek,$foto,$zapasy,$goly,$post) {


if($this->db->get('hraci','cislo',['cislo' => $cislo]) == $cislo){

    
exit();
} else {

if($this->db->insert('hraci',['cislo' => $cislo, 'jmeno' => $jmeno,'vek' => $vek,'foto' => $foto,'zapasy' => $zapasy,'goly' => $goly,'post'=> $post])){
return "<p>Hráč $jmeno byl úspěšně přidán !</p>";

} else {
return "<p>Chyba databáze</p>";
}

}

$id = $this->db->count('hraci','*');
return "<p>Successfully registered $id users! Continue <a href='./'> here </a></p> ";

exit();
}
soubor user.php - pridejHracForm()
public function pridejHracForm(){
    return " <div class='admr'><form action='index.php?action=admin' method='POST'  enctype='multipart/form-data'>
  <p>Číslo: <input type='text' name='ncislo'/></p>\n
   <p>Jméno: <input type='text' name='njmeno'/></p>\n
   <p>Věk: <input type='text' name='nvek'/></p>\n
  <p>Foto:  <input type='file' name='nfoto'/></p>\n
   <p>Zápasy: <input type='text' name='nzapasy'/></p>\n
    <p>Góly: <input type='text' name='ngoly'/></p>\n
    <p>Post:
    <select name='npost'><option value='Brankář'>Brankář</option><option value='Obránce'>Obránce</option><option value='Útočník'>Útočník</option>
 </select></p>\n
  <input type='submit' name='odeslat' value='Přidat' />
  </form></div>";
    }
a admin.php case pridejHrac
case 'pridejHrac':
            echo '<hr id="admrhr" style="width:75%;margin:auto;"/>';
            
# toto je soubor index.php v adresari web/test/


 
if ($_POST["odeslat"]== "Přidat") {
#cesta na serveru
   $uploadpath = $_SERVER['DOCUMENT_ROOT'];

 
# adresare musi mit prava pro zapis tj.777
   $uploaddir='web/images/';
  
 
   $uploadfile = $uploadpath.$uploaddir.$_FILES['nfoto']['name'];
 
  if (move_uploaded_file($_FILES['nfoto']['tmp_name'],$uploadfile)) {
      echo "Soubor byl presunut z ".$_FILES['nfoto']['tmp_name']." do $uploadfile<br />";
 
# soubor lze nyni zkopirovat i na vice mist a pote smazat
      Copy($uploadpath.$uploaddir.$_FILES['nfoto']['name']);
      echo "Soubor byl zkopirovan do adresare $uploaddir<br />";
      @unlink($uploadpath.$uploaddir.$_FILES['nfoto']['name']);
      echo "Docasny soubor odstranen z $uploaddir<br />";
 
# info o nahranem souboru
      echo "<pre>
      Informace o souboru:
      ";
      print_r($_FILES);
      
   }
}
 

            echo $u->pridejHracForm();

                
            break;

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:

0