25 vues
besoin d'aide en php je m’arrache les cheveux la !
majiid

31 sujets, 281 réponses

Contributeurs Donateurs
Message non lu
bonjour :D
je vais vous expliqué si vous trouvez ma boulette :D je fais un module pour les stats de chaque jeux CSGO/RUST ect.. & donc dans la base de donnée de je vais sauvegardé l'id steam/gamertag ect...

donc j'ai fait la page edit pour qui remplissent leur champs (htpp://site.com/gamesstats/edit.html)
j'ai charger un un formulaire avec ce code

controller/index.php

public function edit()
{
$this->load->library('form')
->add_rules('edit')
->add_submit('Enregister');
if ($this->form->is_valid($post))
{
$this->model()->save($post['steam'], $post['xbox']);
add_alert('Succes', 'La configuration a été mise a jour');
  redirect_back('./usersstats.html');
}
else
{
add_alert('Succes', 'erreur');
}

return new Panel(array(
'title' => 'configuration',
'icon' => 'fa-cogs',
'content' => $this->form->display(),
));
}


forms/edit.php

$rules = array(
'steam' => array(
'label' => 'Profil Steam',
'type' => 'text',
'rules' => 'required'
),
'xbox' => array(
'label' => 'GamerTag',
'type' => 'text',
'rules' => 'required'
)
);


model/edit.php

class m_usersstats_m_usersstats extends Model
{
public function save($steam, $xbox)
{
if ($this->db->select('1')->from('nf_usersstats')->where('user', $user_id)->row())
{
$this->db->where('user', $user_id)
->update('nf_usersstats', array('steam' => $steam, 'xbox' => $xbox));
}
else
{
$this->db->insert('nf_usersstats', array_merge(array('steam' => $steam, 'xbox' => $xbox), array(
'user' => $user_id
)));
}
}
}


L' erreur Apache

[Wed Mar 16 06:27:20 2016] [error] [client x.x.x.x] PHP Fatal error: Call to a member function save() on a non-object in /var/www-dev/modules/usersstats/controllers/index.php on line 53, referer: http://domaine.com/usersstats/edit.html

Line 53:

$this->model()->save($post['steam'], $post['xbox']);

J’espère que vous avez asser de détails :D
2 participants
2 réponses
eResnova

17 sujets, 875 réponses

Contributeurs Staff
Message non lu
Re-salut

Alors, dans un premier temps :

Dans ton contrôleur index, tu peux changer :

redirect_back('./usersstats.html');
par :
redirect('usersstats.html');

Inutile de préciser le ./ car la fonction redirect prend en compte le chemin de ton site ;)

Ensuite, je crois que le problème se pose à 2 endroits dans ton model

if ($this->db->select('1')->from('nf_usersstats')->where('user', $user_id)->row())

Ce code ne peux pas fonctionner car ta variable $user_id n'est pas renseignée. Vu que tu mets à jour les infos par rapport au membre connecté, tu peux la remplacer par :$this->user('user_id')

Et le problème majeur vient de là :

$this->db->insert('nf_usersstats', array_merge(array('steam' => $steam, 'xbox' => $xbox), array(
'user' => $user_id
)));


Essayes plutôt comme cela :

$this->db->insert('nf_usersstats', array(
'steam' => $steam,
'xbox' => $xbox,
'user' => $this->user('user_id')
));

Et autre problème :
Ton code ligne 53 du contrôleur ne peut pas marcher : $this->model()->save($post['steam'], $post['xbox']);

Ton model porte le nom 'edit' et non le nom de ton module, donc tu ne peux pas juste marquer ->model() ... tu dois préciser son nom : ->model('edit') ...

C'est la tout l’intérêt de donner le même nom de model que son module :)

Tiens moi au courant.
majiid

31 sujets, 281 réponses

Contributeurs Donateurs
Message non lu
re-salut
parfait ! :D
merci beaucoup