Bonjour à tous,
J'ai suivi le tutoriel développez un site en PHP et j'ai un petit problème à chaque fois que je veux créer une page ou un article l'id est à 1 dans le champ hidden et il load le post 1. Si je l’envoie, il crée un nouveau post.
Merci pour vos solutions
PS Je cherche toujours une solution à mysql_real_escape_String si vous avez des idées.
J'ai trouvé le problème, il manquait un s à conditions dans la class model. Maintenant ça fonctionne merci quand même.
Je dirais que le problème viens plus tôt du code puisque l'id dans le champ hidden n'est pas bon, mais le celui qui est dans l’action du formulaire est bon, alors il affiche toujours le premier élément dans ma base de données.
Voici ce que je crois être le problème.
Request->data:
stdClass Object
(
[id] => 2
etc..
}
À chaque fois que je clique sur ajouter une page, il récupère le premier dans la base de données. Alors, je n’ai aucun moyen d'ajouter une page.
J'ai vérifié les sources avec ceux du tutoriel et je ne vois pas ou mon erreur peut être.
Je vais mettre les sources de request et form l'endroit où je crois qu’il pourrait y avoir l’erreur:
Request:
<?php
/**
*
*/
class Request
{
//==================================
//Variable d'instance
//==================================
public $url; //URL appelle par l'utilisateur
public $page = 1; //Pour la pagination
public $prefix = false; //Prefix des urls
public $data = false; //Donnee envoyer dans les formulaire
function __construct()
{
$this->url = isset($_SERVER'PATH_INFO'])?$_SERVER'PATH_INFO']:'/';
if(isset($_GET'page'])){
if(is_numeric($_GET'page'])){
if($_GET'page'] > 0){
$this->page = round($_GET'page']);
}
}
}
//Si des donnees ont ete postees on les entre dans data
if(!empty($_POST)){
$this->data = new stdClass();
foreach ($_POST as $k=>$v) {
$this->data->$k=$v;
}
}
}
}
?>
Form:
<?php
/**
* Genere les formulaires
*/
class Form
{
public $controller;
public $errors;
public function __construct($controller){
$this->controller = $controller;
}
public function input($name,$label,$options = array()){
$error = false;
$classError = '';
$msg = '';
if(isset($this->errors$name])){
$error = $this->errors$name];
$classError = 'error';
}
if(!isset($this->controller->request->data->$name)){
$value = '';
}else{
debug($this->controller->request->data);
$value = $this->controller->request->data->$name;
}
if($label == 'hidden'){
return '<input type="hidden" name="'.$name.'" value="'.$value.'"/>';
}
$html = '<label class="'.$classError.'" for="input'.$name.'">'.$label;
$attr = ' ';
foreach ($options as $k=>$v) {
if($k != 'type' && $k != 'selectOptions' && $k != 'default')
$attr .= " $k=\"$v\"";
}
if(!isset($options'type'])){
$html .= '<input type="text" id="input'.$name.'" name="'.$name.'" value="'.$value.'"'.$attr.' />';
}else if($options'type'] == 'textarea'){
$html .= '<textarea name="'.$name.'" id="input'.$name.'" '.$attr.'>'.$value.'</textarea>';
}else if($options'type'] == 'checkbox'){
$html = '<input type="hidden" name="'.$name.'" value="0"/><input type="checkbox" name="'.$name.'" value="1" '.(empty($value) ? '':'checked').'/><label class="'.$classError.'" for="input'.$name.'">'.$label;
}else if($options'type'] == 'file'){
$html .= '<input type="file" name="'.$name.'" id="input'.$name.'"/>';
}else if($options'type'] == 'password'){
$html .= '<input type="password" name="'.$name.'" id="input'.$name.'" value="'.$value.'"/>';
}else if($options'type'] == 'select'){
$html .= '<select name="'.$name.'" id="input'.$name.'">';
if(isset($options'default'])){
$html .= '<option value="'.$options'default']'value'].'">'.$options'default']'name'].'</option>';
}
foreach ($options'selectOptions'] as $k=> $v) {
$html .= '<option value="'.$v->id.'" '.(!empty($value) && $value == $v->id ? 'checked':'' ).' >'.$v->title.'</option>';
}
$html .= '</select>';
}
$html .= '</label>';
if($error){
$html .= '<small class="error">'.$error.'</small>';
}
return $html;
}
}