Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

codeigniter
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Subiectul anterior :: Subiectul următor  
Autor Mesaj
z.m



Data înscrierii: 25/Feb/2005
Mesaje: 326

Trimis: Sâm Noi 03, 2007 1:24 am    Titlul subiectului: codeigniter  

Incerc sa fac un form,3 campuri de tip text si unul file.Il fac cu
$this->load->library('validation');
Merge pana la partea de upload.Din ce vad nu imi trimite deloc campul file.Si nici nu vad cum as putea valida campul file.Am pus o functie cu callback dar nici asa nu merge.Ideea e cum as putea face pentru campul file sa verifice ce extensii sa lase sa se uploadeze.
Daca de exemplu fac o functie pentru upload,si afisez in ea erorile,si o pun la callback,tot nu merge.Exista alta cale de a valida un type file decat cu callback?
Sus  
bruzli



Data înscrierii: 17/Oct/2005
Mesaje: 75
Locație: Oradea

Trimis: Sâm Noi 03, 2007 8:21 am    Titlul subiectului:  

Foloseste libraria upload.

Ai acolo:
Cod:
$config['upload_path'] = './uploads/';
$con fig['allowed_types'] = 'gif|jpg|png';
$config['max_size']   = '100';
$config['max_width']  = '1024';
$config['max_height']  = '768';
Sus  
z.m



Data înscrierii: 25/Feb/2005
Mesaje: 326

Trimis: Sâm Noi 03, 2007 1:17 pm    Titlul subiectului:  

Stiu.aia am folosit.Dar nu merge.Cred ca nu am inteles eu bine modul de functionare a librariei validator.
Daca are cineva chef sa se uite peste cod,e mai jos:

Cod:
<?php
//upload photos
function upload_photos()
{
            
$view_data["action"] = "add_sponsors";
$this->load->helper(array('form', 'url'));      

$config['upload_path'] = "./upload/";
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size']   = '100';
$config['max_width']  = '1024';
$config['max_height']  = '768';
      
$this->load->library('upload', $config);

if ( ! $this->upload->do_upload("userfile"))
{
$error = $this->upload->display_errors();
 $this->validation->set_message('upload_photos', $error);
return false;
}
else
{           
          
$image_lib_config['image_library'] = 'gd2';
$image_lib_config['maintain_ratio'] = TRUE;
$image_lib_config['quality'] = '70';
      
$upload_file = $this->upload->data();
$file_name = $upload_file["file_name"];
$image_width = $upload_file['image_width'];      
$image_height = $upload_file['image_height'];
      
      
$image_lib_config['master_dim'] = 'auto';
$image_lib_config['width'] = '300';
$image_lib_config['height'] = '200';
$image_lib_config['source_image'] = './upload/'.$file_name;
$image_lib_config['create_thumb'] = FALSE;
            
$this->image_lib->initialize($image_lib_config);
        
if(!$this->image_lib->resize())
 {
$error = $this->image_lib->display_errors();
$this->validation->set_message('upload_photos',$error);
return false;
}
else
{
return   $post_image = $file_name;
 }   
}
   

}


//add sponsors

public function add_sponsors()
 {
$view_data["action"] = "add_sponsors";
$this->load->helper(array('form', 'url'));
$this->load->model('Admin_model','admin');    
         
$view_data['internal_error']="";

$this->load->library('validation');
            
$rules["name"] = "trim|required";
$rules["description"] = "trim|required";
rules["website"] = "trim";
$rules["userfile"] = "callback_upload_photos";

$this->validation->set_rules($rules);
            
$fields["name"] = "Nume";
$fields["description"] = "Descriere";
$fields["website"] = "Website(without http://)";   
$fields["userfile"] = "Logo";     
$this->validation->set_fields($fields);
        
$this->validation->set_message("required","Nu ati completat campul %s"); $this->validation->set_error_delimiters('<br>', '');
if($this->validation->run() == FALSE)
{
$this->load->view('admin/front/admin_front_view', $view_data);
}
         
else
{
$result_sponsors = $this->admin->check_sponsors("sponsors",$this->input->post('name','TRUE'));
if($result_sponsors == TRUE)
{
         
$name =  $this->input->post('name','TRUE');   
$description = $this->input->post('description','TRUE');   
$website = $this->input->post('website','TRUE');
                     
$this->load->library('upload');
$this->load->library('image_lib');
$post_image = $this->upload_photos();

$result_create_sponsors = $this->admin->create_sponsors("sponsors",$name,$description,$website,$post_image);
if($result_create_sponsors == TRUE)
 {
header("Location: ".
$this->config>item'base_url')."index.php/admin/view_sponsors");
 }
else
{
$view_data['internal_error'] = 'Inregistrarea nu a putut fi facuta';
$this->load->view('admin/front/admin_front_view', $view_data);
}
}
      
else
{
$view_data['internal_error']='Acest sponsor deja exista';
$this->load->view('admin/front/admin_front_view', $view_data);
                  
}
}

//form
<?=form_open_multipart('admin/add_sponsors'); ?>
<table width='80%'>
<tr>
<td colspan=2><?=$internal_error?></td>
</tr>
<tr>
<td>Nume: </td>
<td><input type='text' name='name' value="<?=$this->validation->name;?>"><?=$this->validation->name_error; ?></td>
</tr>
<tr>
<td>Descriere: </td>
<td><textarea name='description' rows='10' cols='50'><?=$this->validation->description; ?></textarea><?=$this->validation->description_error; ?></td>
</tr>
<tr>
<td>Website(without http://): </td><td><input type='text' name='website' value="<?=$this->validation->website; ?>"></td>
</tr>
<tr>
 <td>Logo: </td><td><input type='file' name='userfile' value="<?=$this->validation->userfile; ?>">
<br><?=$this->validation->userfile_error; ?></td>
</tr>
</table>
<table width='40%' border='0'>
<tr>
<td><div align='center'><input type='submit' name='submit' value='Submit'></td>
</tr></form>
</table>
?>
Sus  
z.m



Data înscrierii: 25/Feb/2005
Mesaje: 326

Trimis: Mar Noi 06, 2007 9:53 am    Titlul subiectului:  

Pana la urma am renuntat la validarea campului photo pentru ca nu am reusit.In schimb nu merge nici upload-ul.Daca folosesc functia separat(fac un controller,doar pentru functia asta),merge,cand o apelez din alta functie nu mai merge.Imi da eroarea:
An Error Was Encountered
Error Number: 1048

Column 'path' cannot be null

INSERT INTO gl_sponsors (id, name, description, website, path) VALUES ('', 'dfgdfhbdfhbfd', 'ghdfhgdsfhb', '', NULL)
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1598
Locație: Sibiu

Trimis: Mar Noi 06, 2007 12:04 pm    Titlul subiectului:  

Cum o apelezi de iti da eroarea asta?

Apropo, sper ca nu te injur, dar stii ca daca vrei sa faci un upload form-ul trebuie declarat cu enctype='multipart/form-data' , nu?
// LE: disregard that, acum am vazut ca declari formul cu form_open_multipart(). Sorry.

Eroarea asta e clar de unde vine: campul path din tabela gl_sponsors e declarat ca 'not null', iar tu cand apelezi
Cod:
$this->db->insert('gl_sponsors', $data);

sau ceva de genu asta, $data['path'] e declarat undeva explicit ca = null. Da codul metodei unde apelezi asta din controller sau din model.
Sus  
z.m



Data înscrierii: 25/Feb/2005
Mesaje: 326

Trimis: Mar Noi 06, 2007 3:20 pm    Titlul subiectului:  

Am rezolvat pana la urma,incarcasem de 2 ori libraria upload.A mai ramas faza ca nu imi merge sa folosesc callback pentru validare la camp de tip file.Aia chiar nu stiu de ce.Sau de exemplu pentru codul de mai sus de la functia add sponsors,daca la functia upload_photos fac:

if ( ! $this->upload->do_upload())
{
$view_data["action"] = "add_sponsors";
$view_data["error"] = $this->upload->display_errors();
$this->load->view('admin/front/admin_front_view', $view_data);
$this->validation->set_message('upload_photos',"%s trebuie sa fie jpg,gif sau png");
}

Nu ar trebui sa mearga?La mine nu merge.
Sus  
z.m



Data înscrierii: 25/Feb/2005
Mesaje: 326

Trimis: Mar Noi 06, 2007 3:31 pm    Titlul subiectului:  

z.m a scris: Am rezolvat pana la urma,incarcasem de 2 ori libraria upload.A mai ramas faza ca nu imi merge sa folosesc callback pentru validare la camp de tip file.Aia chiar nu stiu de ce.Sau de exemplu pentru codul de mai sus de la functia add sponsors,daca la functia upload_photos fac:

if ( ! $this->upload->do_upload())
{
$view_data["action"] = "add_sponsors";
$view_data["error"] = $this->upload->display_errors();
$this->load->view('admin/front/admin_front_view', $view_data);
}

Nu ar trebui sa mearga?La mine nu merge.
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 593
Locație: Drobeta Turnu Severin

Trimis: Mar Noi 06, 2007 7:32 pm    Titlul subiectului:  

Vezi aici o validare pe partea de client
http://www.phpromania.net/forum/viewtopic.php?t=13589&highlight=
Sus  
z.m



Data înscrierii: 25/Feb/2005
Mesaje: 326

Trimis: Mar Noi 06, 2007 8:10 pm    Titlul subiectului:  

Nu asta ma intereseaza.Asta stiu si eu.Ma intereseaza cum se face in codeigniter.
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community