select 3 champs et update dans un champs

Eléphanteau du PHP | 24 Messages

29 mai 2024, 07:55

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

Mammouth du PHP | 1967 Messages

29 mai 2024, 08:30

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.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 24 Messages

29 mai 2024, 13:40

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:

Avatar du membre
Mammouth du PHP | 1564 Messages

29 mai 2024, 14:37

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é
}

Eléphanteau du PHP | 24 Messages

29 mai 2024, 17:38

Merci je regarde et j'essaye

Eléphanteau du PHP | 24 Messages

29 mai 2024, 18:07

Bon j'arrive pas, un petit exemple serait le bienvenu

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

}

Mammouth du PHP | 2703 Messages

29 mai 2024, 18:43

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

Eléphanteau du PHP | 24 Messages

29 mai 2024, 19:22

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,

Mammouth du PHP | 2703 Messages

29 mai 2024, 19:26

et ?
car les 2 moyens, un update dans le parcours du résultat d'un select, ou une seule requête update, permettent cela.

Eléphanteau du PHP | 24 Messages

29 mai 2024, 20:18

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

Mammouth du PHP | 2703 Messages

29 mai 2024, 20:25

alors relire l'intégralité de mon premier message.