Bonjour j'essaie de faire un update/insert de donnée à l'intérieur d'un foreach mais après le premier update le script s'arrete, je n'ai pas ce problème si je ne fait que des inserts, il semblerait que le script bloque après le premier update.
[b][/b]
[b]L'objectif du script:[/b]
Récupérer la liste des utilisateurs dans une autre base de donnée.(Geronimo/ressource)
Mettre à jour la base de donnée utilisée par l'application sous cakePHP.(Fournitures/users)
Si l'utilisateur n'existe pas on le crée
S'il existe on update l'ensemble des champs
Merci pour votre aide
[b]Code[/b]
<?php
class GeronimosController extends AppController {
public $uses = array('Geronimo','User');
function index(){
/*Récupération de la liste des ressources de Geronimo*/
$d['ressources'] = $this->Geronimo->find('all',array(
'fields'=>array(
'rce_id',
'rce_trigramme',
'rce_email',
'rce_prenom',
'rce_nom',
'rce_ressource_authkey',
'rce_isadmin_fourniture',
'rce_code_alliance'),
'limit' => 6
));
/*Pour chaque utilisateur de la base Geronimo on verifie si celui-ci existe dans la table users de l'application fourniture
-si l'utilisateur existe on l'update
-si l'utilisateur n existe pas on le crée
*/
foreach($d['ressources'] as $k => $v){
$v = current($v);
/*On récupère l utilisateur avec le même RCE_ID*/
$user = false;
$user = $this->User->find('first',array(
'conditions'=>array('geronimo_rce_id'=>$v['rce_id']),
'recursive' =>-1
));
$this->User->create(false);
if($v['rce_isadmin_fourniture'] == 1){$group = '10';}else{ $group = '9';}
/*L utilisateur existe nous faisons un update*/
if($user){
echo "update";
$this->User->read(null,$user['User']['id']);
$data_update = array();
$data_update['id'] = $user['User']['id'];
$data_update['password'] = '';
$data_update['username'] = $v['rce_id'];
$data_update['code_alliance'] = $v['rce_code_alliance'];
$data_update['authkey'] = $v['rce_ressource_authkey'];
$data_update['email'] = $v['rce_email'];
$data_update['trigramme'] = $v['rce_trigramme'];
$data_update['prenom'] = $v['rce_prenom'];
$data_update['group_id'] = $group;
$data_update['nom'] = $v['rce_nom'];
$this->User->save($data_update,array('validate'=>false));
}else{
$data = array();
$data['User']['geronimo_rce_id'] = $v['rce_id'];
$data['User']['username'] = $v['rce_id'];
$data['User']['password'] = '';
$data['User']['code_alliance'] = $v['rce_code_alliance'];
$data['User']['authkey'] = $v['rce_ressource_authkey'];
$data['User']['email'] = $v['rce_email'];
$data['User']['trigramme'] = $v['rce_trigramme'];
$data['User']['prenom'] = $v['rce_prenom'];
$data['User']['group_id'] = $group;
$data['User']['nom'] = $v['rce_nom'];
$this->User->save($data);
}//Fin du else
}//Fin du foreach
}
}
?>
[b]Table users (CakePHP)[/b]
CREATE TABLE IF NOT EXISTS users
(
id
int(11) NOT NULL AUTO_INCREMENT,
username
varchar(255) DEFAULT NULL,
password
char(40) DEFAULT NULL,
group_id
int(11) DEFAULT NULL,
created
datetime DEFAULT NULL,
modified
datetime DEFAULT NULL,
email
varchar(255) DEFAULT NULL,
authkey
varchar(255) DEFAULT NULL,
code_alliance
varchar(255) DEFAULT NULL,
prenom
varchar(255) DEFAULT NULL,
nom
varchar(255) DEFAULT NULL,
geronimo_rce_id
varchar(255) DEFAULT NULL,
trigramme
varchar(255) DEFAULT NULL,
PRIMARY KEY (id
),
UNIQUE KEY username
(username
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=109 ;
[b]Table ressource[/b]
CREATE TABLE IF NOT EXISTS ressource
(
RCE_ID
int(11) NOT NULL AUTO_INCREMENT,
RCE_TRIGRAMME
varchar(3) NOT NULL,
RCE_NOM
varchar(40) NOT NULL,
RCE_PRENOM
varchar(40) NOT NULL,
RCE_EMAIL
varchar(100) NOT NULL,
RCE_TELEPHONE
varchar(14) DEFAULT NULL,
RCE_DATE_DEBUT
datetime NOT NULL,
RCE_DATE_FIN
datetime NOT NULL,
RCE_CODE_ALLIANCE
varchar(8) NOT NULL,
RCE_RESSOURCE_AUTHKEY
varchar(100) NOT NULL,
RCE_ISADMIN_CRHEBDO
int(1) NOT NULL,
RCE_ISADMIN_IMPUTATION
int(1) NOT NULL,
RCE_ISADMIN_FOURNITURE
int(1) NOT NULL,
RCE_ISADMIN_RESERVATION
int(1) NOT NULL,
PRIMARY KEY (RCE_ID
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=323 ;