Ajouter ou modifier une date

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ajouter ou modifier une date

Re: Ajouter ou modifier une date

par wagscd » 18 avr. 2021, 09:22

Ca fonctionne

'date_creation_nom_bot'=> date("Y-m-d", strtotime($date_creation_nom_bot)),

Re: Ajouter ou modifier une date

par wagscd » 18 avr. 2021, 07:23

J'ai essayé ceci qui fonctionne.

$date_test_convert = 'date_creation_nom_bot';

		if($userCount[0]['total']<2000){
			$data	=	array(
							'nom_bot'=>$nom_bot,
                            $date_test_convert=>$date_creation_nom_bot,
                            
							);
			$insert	=	$db->insert('tbl_nom_bot',$data);
Dans l'idée de faire quelque chose du genre ...
$date_test_convert = date('d-m-Y',strtotime(['date_creation_nom_bot']));

		if($userCount[0]['total']<2000){
			$data	=	array(
							'nom_bot'=>$nom_bot,
                            $date_test_convert=>$date_creation_nom_bot,
                            
							);
			$insert	=	$db->insert('tbl_nom_bot',$data);
Et erreur mysql.

Fatal error: Uncaught RuntimeException: [42000] : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax

Merci.

Bon dimanche

Re: Ajouter ou modifier une date

par wagscd » 17 avr. 2021, 14:21

Bonjour à toutes et à tous,

Je ne sais plus quoi faire là. Je n'arrive à rien.

Le code
$var = [
    date('d-m-Y',strtotime(['date_creation_nom_bot'])) => $date_creation_nom_bot,
];
me donne une erreur Parse error: syntax error, unexpected ';', expecting ')'

J'ai fait des recherches sur STRTOTIME dans array et ça ne m'avance pas plus. J'arrive pas à comprendre le souci et encore moins le fonctionnement.

Je tombe souvent sur ce genre de chose
STR_TO_DATE('date', '%d/%m/%Y')
Ce qui me fait essayer
STRTOTIME('date_creation_nom_bot', 'd-m-Y'))=>$date_creation_nom_bot,
et du coup j'ai cette erreur : Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW)

Et quand je recherche une solution pour cette erreur, ca ne correspond pas à ce que j'ai.

Comment puis je faire SVP ?

Merci d'avance.

Re: Ajouter ou modifier une date

par wagscd » 16 avr. 2021, 13:39

Merci beaucoup pour ces éclaircissements.

Oh clairement il me manque beaucoup de bases.

En fait, je me suis basé sur quelque chose d'existant mais certains modifications ne coulent pas de source dans ma petite tête donc je bloque par manque de connaissance malgré les nombreuses recherches.

Allez direction lecture ;)

Merci. Je reviendrai ;)

Re: Ajouter ou modifier une date

par Saian » 16 avr. 2021, 13:19

La première ligne 'nom'=>$nom fonctionne parfaitement
Oui ça fonctionne à cet endroit étant donné que tu déclares un tableau associatif :
$data = array(
    'nom_bot' => $nom_bot,// index => valeur
    date('D-M-Y',strtotime('DATE_CREATION_NOM_BOT')) => $DATE_CREATION_NOM_BOT,// index => valeur
);
echo $data['nom_bot'] == $nom_bot;// true
Par contre ça ça correspond à rien :
strtotime('DATE_CREATION_NOM_BOT')
strtotime peut pas convertir la chaine DATE_CREATION_NOM_BOT en timestamp...

Et ça comme ça sans ce qui est avant et ce qui est après ça correspond à rien.
date('d-m-Y',strtotime(['date_creation_nom_bot']))=>$date_creation_nom_bot,

En revanche comme ça déjà on comprend mieux :
$var = [
    date('d-m-Y',strtotime(['date_creation_nom_bot'])) => $date_creation_nom_bot,
];
Mais c'est pas bien concluant non plus. Tu crées un index du type 16-04-2021 avec en valeur la valeur de $date_creation_nom_bot. Sauf que strtotime(['date_creation_nom_bot']) ça ne marche pas. Tu passes un tableau avec une chaine dedans alors qu'il faut passer une chaine qui représente une date (par exemple '2021-04-16 13:36').

Je pense qu'il te manque déjà quelques bases de compréhension du langage. Il faudrait réviser les variables, les tableaux, les chaines, etc.

Re: Ajouter ou modifier une date

par wagscd » 16 avr. 2021, 13:08

Bonjour Saian,

Merci pour ta réponse mais ça ne fonctionne pas.

En fait, je me suis basé sur le code existant que j'ai essayé d'appliquer.
$data	=	array(
                    'nom_bot'=>$nom_bot,
                    DATE('D-M-Y',STRTOTIME('DATE_CREATION_NOM_BOT'))=>$DATE_CREATION_NOM_BOT,
                    );
$update	=	$db->update('tbl_nom_bot',$data,array('id_nom_bot'=>$editId));

La première ligne 'nom'=>$nom fonctionne parfaitement

Le update renvoie à un code sur une autre page.
**
     * Update Method
     *
     * @param  string $tableName
     * @param  array  $set       (associative where key is field name)
     * @param  array  $where     (associative where key is field name)
     * @return int    number of affected rows
     */
    public function update($tableName, array $set, array $where)
    {
        $arrSet = array_map(
           function($value) {
                return $value . '=:' . $value;
           },
           array_keys($set)
         );
             
        $stmt = $this->pdo->prepare(
            "UPDATE $tableName SET ". implode(',', $arrSet).' WHERE '. key($where). '=:'. key($where) . 'Field'
         );
 
        foreach ($set as $field => $value) {
            $stmt->bindValue(':'.$field, $value);
        }
        $stmt->bindValue(':'.key($where) . 'Field', current($where));
        try {
            $stmt->execute();
 
            return $stmt->rowCount();
        } catch (\PDOException $e) {
            throw new \RuntimeException("[".$e->getCode()."] : ". $e->getMessage());
        }
    }
J'avoue que ce deuxième code m'est totalement incompréhensible.

Merci d'avance

Re: Ajouter ou modifier une date

par Saian » 16 avr. 2021, 11:49

Salut je suis étonné qu'il n'y ai pas une erreur de syntaxe.
date('d-m-Y',strtotime(['date_creation_nom_bot']))=>$date_creation_nom_bot,
Pas de ; à la fin de la ligne un => qui vient se coller derrière l'appel du date suivi d'une variable $date_creation_nom_bot et un paramètre ['date_creation_nom_bot'] sur le strtotime qui est un tableau avec une chaine 'date_creation_nom_bot'...

Déjà comme ça, ça ressemble un peu plus à du php.
date('d-m-Y',strtotime($date_creation_nom_bot));

Re: Ajouter ou modifier une date

par wagscd » 16 avr. 2021, 08:19

Ok viens de me rendre compte qu'il y avait aussi strtotime (que j'utilise d'ailleurs dans une autre partie du code)

J'ai donc fait ceci
date('d-m-Y',strtotime(['date_creation_nom_bot']))=>$date_creation_nom_bot,
Mais ça ne fonctionne pas non plus

Warning: strtotime() expects parameter 1 to be string, array given

Merci d'avance.

Re: Ajouter ou modifier une date

par wagscd » 16 avr. 2021, 08:07

Re bonjour,

Je lâche pas le dossier mais malheureusement sans succès.

J'ai ceci dans le code de ma page
$data	=	array(
                    'nom_bot'=>$nom_bot,
                    'date_creation_nom_bot'=>$date_creation_nom_bot,

                    );
    $update	=	$db->update('tbl_nom_bot',$data,array('id_nom_bot'=>$editId));

J'ai modifié comme ceci et également sans les parenthèses mais sans succès j'ai une erreur php (Call to undefined function STR_TO_DATE())
(STR_TO_DATE("date_creation_nom_bot","%d-%m-%Y"))=>$date_creation_nom_bot,
Merci d'avance pour votre aide.

Bonne journée

Ajouter ou modifier une date

par wagscd » 15 avr. 2021, 09:22

Bonjour à toutes et à tous,

Je sais que le sujet est récurrent mais je m'y perds avec le code que j'utilise.

J'ai une page où je peux modifier une date. Si elle est déjà présente dans la base, elle s'affiche bien en d-m-Y avec ce code.
echo date('d-m-Y',strtotime($row[0]['date_creation_nom_bot']));
Mais si je veux la modifier, il faut que j'indique yyyy-mm-dd

J'ai trouvé ce code
$stmt = $conn->prepare("INSERT INTO test (date1) VALUES (STR_TO_DATE(?,'%d-%m-%y'));");
Mais je n'arrive pas à l'intégrer dans mes pages.

Le code pour modification
<div class="form-group">
                            <label>Date Création <span class="text-danger">*</span></label>
                            <input type="text" name="date_creation_nom_bot" id="date_creation_nom_bot"
                                class="form-control" value="<?php
                            $date_creation_nom_bot = $row[0]['date_creation_nom_bot'];
                            $date_limite = ('2019-01-01');
                            if ($date_creation_nom_bot > $date_limite) {
                                echo date('d-m-Y',strtotime($row[0]['date_creation_nom_bot']));
                                }
                            ?>" placeholder="Enter DATE" required>
                        </div>

Sur cette même page, j'ai ceci
$update	=	$db->update('tbl_nom_bot',$data,array('id_nom_bot'=>$editId));
Et j'imagine que ça renvoie à ça sur une autre page
public function update($tableName, array $set, array $where)
    {
        $arrSet = array_map(
           function($value) {
                return $value . '=:' . $value;
           },
           array_keys($set)
         );
             
        $stmt = $this->pdo->prepare(
            "UPDATE $tableName SET ". implode(',', $arrSet).' WHERE '. key($where). '=:'. key($where) . 'Field'
         );
 
        foreach ($set as $field => $value) {
            $stmt->bindValue(':'.$field, $value);
        }
        $stmt->bindValue(':'.key($where) . 'Field', current($where));
        try {
            $stmt->execute();
 
            return $stmt->rowCount();
        } catch (\PDOException $e) {
            throw new \RuntimeException("[".$e->getCode()."] : ". $e->getMessage());
        }
    }
Comment puis-je intégrer cela pour que je puisse indiquer des dates d-m-Y

Merci d'avance pour votre aide.

Je vous souhaite une bonne journée