Page 1 sur 1

select 3 champs et update dans un champs

Posté : 29 mai 2024, 07:55
par surfys
Bonjour,
j'ai 3 champs date "jour" "mois" "annee" je voudrais faire un update dans un champs date 0000-00-00,
transformer 1 07 2023 en 2023-07-01.
j'ai fait un code avec "concat" il m'affiche bien dans le résultat ce que je veux après le SELECT, mais dans le update il n'insère que la première date toujours le même.
Le code
$req="SELECT * FROM banque";
$res = $bdd->query($req);//PHP 7 AJOUTER LA CONNEXION BDD DANS LA VARIABLE
// on envoie la requete 
//$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
  while ($data = mysqli_fetch_array($res)) {
   $jour = $data["jour"];
   $mois = $data["mois"];
   $annee = $data["annee"];
       
  $jm_d="0";
  $jm_m="0";
   
   if($jour<10) $jour="$jm_d$jour";
   if($mois<10) $mois="$jm_m$mois";   
    
    $date_concat_modif ="$annee-$mois-$jour";  
      
   echo"ID : $id_banque ... DATE CONCAT : $date_concat_modif..... debit:$debit.....Crédit:$credit <br>";

LE UPDATE
$sql ="UPDATE banque SET 
 date_concat='$date_concat_modif'";

 if ($bdd->query($sql) === TRUE) {
    //echo header("Location: affiche_banque.php?mois=$mois");
    echo "modif effectuée";
} else {
    echo "Error: " . $sql . "<br>" . $bdd->error;
}  
 } 
merci pour votre réponse

Re: select 3 champs et update dans un champs

Posté : 29 mai 2024, 08:30
par Spols
Hello,

Tu devrais utiliser des champs de date plutot que des champs sépara ou un champs de texte,

mais sinon ton problème vient de ta requète d'UPDATE, il n'y a pas de WHERE du coup tu update toutes les lignes à chaque fois.

Re: select 3 champs et update dans un champs

Posté : 29 mai 2024, 13:40
par surfys
Bonjour merci pour la réponse
je veux updater toute la table, c'est pour ça que je n'ai pas de WHERE
J'arrive à transformer ex : 15 dans le champs "jour" 05 dans le champs "mois" et 2024 dans le champs annee
en 2023-05-01 avec CONCAT je met tous dans une variable
$jm_d="0";
$jm_m="0";

if($jour<10) $jour="$jm_d$jour";
if($mois<10) $mois="$jm_m$mois";

" $date_concat_modif ="$annee-$mois-$jour"; " la variable

C'est le update de toute la table que je n'arrive pas à faire il me met le même resultat partout

ID : ... DATE CONCAT : 2024-05-16..... debit:.....Crédit:
modif effectuéeID : ... DATE CONCAT : 2024-05-15..... debit:.....Crédit:
modif effectuéeID : ... DATE CONCAT : 2024-05-14..... debit:.....Crédit:
modif effectuéeID : ... DATE CONCAT : 2024-05-13..... debit:.....Crédit:
modif effectuéeID : ... DATE CONCAT : 2024-05-11..... debit:.....Crédit:
modif effectuéeID : ... DATE CONCAT : 2024-05-11..... debit:.....Crédit:
modif effectuéeID : ... DATE CONCAT : 2024-05-10..... debit:.....Crédit:
modif effectuéeID : ... DATE CONCAT : 2024-05-07..... debit:.....Crédit:
modif effectuéeID : ... DATE CONCAT : 2024-05-07..... debit:.....Crédit:
modif effectuéeID : ... DATE CONCAT : 2024-05-06..... debit:.....Crédit:
modif effectuéeID : ... DATE CONCAT : 2024-05-06..... debit:.....Crédit:
modif effectuéeID : ... DATE CONCAT : 2024-05-06..... debit:.....Crédit:
modif effectuéeID : ... DATE CONCAT : 0-00-04..... debit:.....Crédit:

Re: select 3 champs et update dans un champs

Posté : 29 mai 2024, 14:37
par two3d
Je comprends que tu veuille faire un UPDATE de chaque entrée mais tu UPDATE toute la table à chaque itération, il te faut UPDATE seulement l'ID itéré, pas toute la table.
req table
while(req table){
//update entrée avec id itéré
}

Re: select 3 champs et update dans un champs

Posté : 29 mai 2024, 17:38
par surfys
Merci je regarde et j'essaye

Re: select 3 champs et update dans un champs

Posté : 29 mai 2024, 18:07
par surfys
Bon j'arrive pas, un petit exemple serait le bienvenu

$sql ="UPDATE banque SET
$date_concat_modif";
while (SELECT * FROM banque) {

}

Re: select 3 champs et update dans un champs

Posté : 29 mai 2024, 18:43
par or 1
UPDATE banque SET
date_concat='$date_concat_modif' where idquelquechose = $id

à noter que mysql a les fonctions nécessaires (lpad, concat ...) pour faire la mise à jour de la table en une seule requête.
https://dev.mysql.com/doc/refman/8.0/en ... tions.html

Re: select 3 champs et update dans un champs

Posté : 29 mai 2024, 19:22
par surfys
merci,
mais je veux faire un update de toute la table, copier les champs "jour" "mois" "annee" et faire un update dans un champs date 0000-00-00,

Re: select 3 champs et update dans un champs

Posté : 29 mai 2024, 19:26
par or 1
et ?
car les 2 moyens, un update dans le parcours du résultat d'un select, ou une seule requête update, permettent cela.

Re: select 3 champs et update dans un champs

Posté : 29 mai 2024, 20:18
par surfys
j'ai mis le code que j'ai fait plus haut, ça n'update qu'un resultat partour dans la base la même date

Re: select 3 champs et update dans un champs

Posté : 29 mai 2024, 20:25
par or 1
alors relire l'intégralité de mon premier message.