Correction colonne dans une base de donnée MySQL

beta.a Messages postés 28 Date d'inscription mercredi 13 février 2019 Statut Membre Dernière intervention 14 mars 2019 - Modifié le 6 mars 2019 à 16:39
beta.a Messages postés 28 Date d'inscription mercredi 13 février 2019 Statut Membre Dernière intervention 14 mars 2019 - 7 mars 2019 à 11:31
Salut,aider moi svp
ce code elle m'a donnée une liste de nom et prénom mais c pas suffisant car je vais découpée le champ nom en majiscules et miniscules, par exemple si on a un nom : "ALAN DEPO-Maria",c code là elle m'a donnée dans la colonne nom "ALAN" et dans la colonne prénom "DEPO-Maria" par contre je vais mettre touts les champs majuscules dans le nom et le minuscules dans le prénom, en outre le résultat doit être comme ça colonne nom : ALAN DEPO- et colonne prénom doit avoir Maria.
et merci d'avance


<?php

define('SQL_HOST',      'localhost');
define('SQL_DBNAME',      'etudiant');
define('SQL_USERNAME', 'root');
define('SQL_PASSWORD', '');
define('MYSQL_PORT', '3306');

$pdo =  new PDO('mysql:host='.SQL_HOST.';port='.MYSQL_PORT.';dbname='.SQL_DBNAME, SQL_USERNAME, SQL_PASSWORD);

$stmt = $pdo->query("SELECT * from ca_etudiant");
$stmt->execute();
$etudiants = $stmt->fetchAll(PDO::FETCH_OBJ);

$listeTraites = "<ul>";
$listeNonTraites="<ul>";

$i = 0;
foreach($etudiants as $c){
 $matches = array();
 preg_match("/([A-Z][A-Z]+\s)+/", $c->nom, $matches, PREG_OFFSET_CAPTURE);
 
 if(isset($matches[0][0])){
  $nom = trim($matches[0][0]);
  
  $prenom = trim(str_replace($nom,"",$c->nom));
  
  
  $query = "UPDATE ca_etudiant SET nom = ?, prenom=? WHERE id_etudiant=?";
  $stmt = $pdo->prepare($query);
  $stmt->bindValue(1,$nom);
  $stmt->bindValue(2,$prenom);
  $stmt->bindValue(3,$c->id_etudiant);
  $stmt->execute();
  
  $listeTraites.='<li>ID: '.$c->id_etudiant.' - '.$c->nom. ' *** Nom: '.$nom.', Prénom: '.$prenom."</li>";

 }
 else{
  $listeNonTraites.='<li>ID: '.$c->id_etudiant.' - '.$c->nom."</li>";
  
 }
 
 
}

$listeTraites.="</ul>";
$listeNonTraites.="</ul>";

?>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <style>
   body{
    font-family:Arial;
   }
  </style>
 </head>
 
 <body>
 
  <h3>Liste des étudiant traités</h3>
  <hr />
  <?php echo $listeTraites; ?>
  
  <br /><br />
  
  <h3>Liste des étudiant non traités</h3>
  <hr />
  <?php echo $listeNonTraites; ?>
 </body>


</html>




1 réponse

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
6 mars 2019 à 21:40
Re bonjour,
Pourquoi poster une nouvelle question ici.... alors que tu avais déjà celle la : https://www.commentcamarche.net/forum/affich-35905106-script-qui-decoupe-le-nom-et-prenom-en-php

??
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
6 mars 2019 à 21:47
Et au cas où....
Regarde ce que fait cette expression régulière :

(^[A-Z\s]*)
0
beta.a Messages postés 28 Date d'inscription mercredi 13 février 2019 Statut Membre Dernière intervention 14 mars 2019
7 mars 2019 à 09:44
Bonjour, ça marche mais avec autre problème :
elle me donne une résultat comme ça : Exemple/ nom : DIDA H et prénom : elen
par contre elle doit etre comme ça le résultat / nom : DIDA et prénom Helen
autres exemple nom : ANDRIA-LAPROV Luca
elle m'a donnée le résultat suivante : nom : ANDRIA et prénom : -LAPROV Luca,par contre le résultat doit etre comme ça , nom : ANDRIA-LAPROV et prénom : Luca
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344 > beta.a Messages postés 28 Date d'inscription mercredi 13 février 2019 Statut Membre Dernière intervention 14 mars 2019
7 mars 2019 à 10:17
faut chercher la bonne regex.
Tu peux les tester en ligne sur , par exemple : https://regex101.com/
0
beta.a Messages postés 28 Date d'inscription mercredi 13 février 2019 Statut Membre Dernière intervention 14 mars 2019
7 mars 2019 à 10:24
j'essaye d'appliquer ça : preg_match("/([A-Z]*+\s)+/", $c->nom, $matches, PREG_OFFSET_CAPTURE);
le seul problème si il y'a un nom avec tiret comme ça :ANDRIA-MICHEL Laprov
elle m'a donnée le résultat suivante : nom -> MICHEL et prénom ANDRIA-Laprov
0
beta.a Messages postés 28 Date d'inscription mercredi 13 février 2019 Statut Membre Dernière intervention 14 mars 2019
Modifié le 7 mars 2019 à 11:31
si y'a t'il une autre solution sans regex aider moi SVP , je suis bloqué
0
Rejoignez-nous