bonjour à tous,
voici ce qui maméne,

voilà je suis sur un formulaire qui contient 10champs, mais voilà, pour 10 champs fournis ma commande PDO va devoir inséré 80 info pour une ligne dans une table SQL.

Et comme je suis un peu flemmard sur les bords, faire une préparation avec une requetes de 80 variable, me donne pas envie,

donc mes variable sont stocké dans un tableau

$user_reg = array(
'user_id' => '',
'user_type' => 1,
'group_id' => 2,
'user_permissions' => '',
'user_perm_from' => 0,
'user_ip' => $_SERVER'REMOTE_ADDR'],
'user_regdate' => $_SERVER'REQUEST_TIME'],
'username' => $_POST'pseudo'],
'username_clean' => $username_clean = utf8_clean_string($_POST'pseudo']),
'user_password' => phpbb_hash($_POST'password']),
'user_passchg' => $_POST'REQUEST_TIME'],
'user_pass_convert' => 0,
'user_email' => strtolower($_POST'email']),
'user_email_hash' => phpbb_email_hash($_POST'email']),
'user_birthday' => '',
'user_lastvisit' => 0,
'user_lastmark' => $_SERVER'REQUEST_TIME'],
'user_lastpost_time' => 0,
'user_lastpage' => '',
'user_last_confirm_key' => '',
'user_last_search' => 0,
'user_warnings' => 0,
...........
);

mais comment coupler mon tableau à une requête préparer.

auriez vous une piste de recherche.

merci d'avance Flo.

5 réponses


MrGuillou
Réponse acceptée

Bonsoir,
A tester

$fields = array();
$var = array();
foreach ($user_reg as $key => $value)
{
    $fields] = $key;
    $var] = ':'.$key;
}
$req = 'INSERT INTO phpbb_users ('.implode(',',$fields).') VALUES ('.implode(',',$var).')';
flo3376
Auteur

voilà ou j'en suis

$user_reg = array(
'user_id' => '',
'user_type' => 1,
'group_id' => 2,
'user_permissions' => '',
'user_perm_from' => 0,
'user_ip' => $_SERVER'REMOTE_ADDR'],
...........
);.
foreach ($user_reg as $key => $value) {
    if ($first==0) {
        $first++;
        $posreq=$key;
    }
    $posreq=$posreq.", ".$key;
}
$first=0;
foreach ($user_reg as $key => $value) {
    if ($first==0) {
        $first++;
        $valuereq=":".$key;
    }
    $valuereq=$valuereq.", :".$key;
}
$basreq="INSERT INTO phpbb_users (";
$suitereq=") VALUES (";
$finreq=")";
echo $req=$basreq."".$posreq."".$suitereq."".$valuereq."".$finreq;
$query =$DBPDO->prepare($req);

try
    {
        $DBPDO = new PDO($dbdns1,$dbuser1 , $dbpass1,
        array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
        $DBPDO-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
            try{

                    $query->execute($user_reg);
                }
            catch (PDOException $e){erreur_req ($e);}

    }
catch (PDOException $e){erreur_req ($e);}

mais ça ne marche pas, j'ai une erreur que je n'ai pas encore pris le temps de décrypter, mais à priorie, c'est un soucis de valeur je vous tiens au courrant

@+

Flo

flo3376
Auteur

je ne dirai qu'une chose, TaDaaa. c'était bien une erreur de mon tableau à envoyer.

a votre avis c'est possible d'optimiser?

[mod humour /on] je crois que ce coup ci Valyan ce va pas pouvoir me faire un court de culture, et je vais pouvoir retourner à la partie <u>JS</u> de mon formulaire [mod humour /off]

flo3376
Auteur

mince,
je connaissais explode, mais je n'avais pas pensez à sa petite soeur implode, merci.