 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| 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 |
|
| |
|