Menu

Script qui découpe le nom et prénom en php

Messages postés
28
Date d'inscription
mercredi 13 février 2019
Dernière intervention
14 mars 2019
-
Urgent :
Salut,svp aider moi
j'ai une liste qui contient le nom et prénom mais la colonne nom contient un nom complet et la colonne prenom vide dans la base, comment je peut découper le nom complet en nom et prénom
la raquette et le suivante : "select nom,prenom from etudiant";
Afficher la suite 

Votre réponse

2 réponses

Messages postés
25029
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 mars 2019
1906
0
Merci
Bonjour,

Ta question concerne la requête SQL ( avec quel SGBD ? ) ou le code PHP ??

Sachant que dans les deux cas tu peux faire un SPLIT (ou explode) de ta chaine.
Dans la requête tu peux utiliser, par exemple : https://sql.sh/fonctions/substring

Commenter la réponse de jordane45
Messages postés
28
Date d'inscription
mercredi 13 février 2019
Dernière intervention
14 mars 2019
0
Merci
Salut jordane,
j’applique 2 requête sur mon base mais il y'a une problème, j'ai un nom (JEAN MARIA laprov)
Lorsque j'applique : UPDATE ca_etudiants as t1 SET t1.prenom = (SELECT SUBSTRING_INDEX(nom, ' ', -1) from (SELECT * FROM ca_etudiant) as t2 WHERE t1.id_etudiant=t2.id_etudiant)
puis :
UPDATE ca_etudiants as t1 SET t1.nom = (SELECT LEFT(t1.nom,LOCATE(' ',t1.nom) - 1) from (SELECT * FROM ca_etudiants) as t2 WHERE t1.id_etudiant=t2.id_etudiants)

le découpage de nom et prénom cava mais dans le nouvel nom est "JEAN" et le nouvel prénom est laprov, il manque MARIA qui sont disparut.

comment je peut le faire si on veulent découpé selon le majuscule et le minuscule?
jordane45
Messages postés
25029
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 mars 2019
1906 > clé de 12
Messages postés
96
Date d'inscription
samedi 19 juin 2010
Dernière intervention
6 mars 2019
-
Bien sûr que ça fonctionnera pour ce cas là...
Mais pas pour les personnes n'ayant qu'un seul prénom ..et ceux ayant un tiret (pour les prénoms composés)

J'en reste au regex...
https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-substr
beta.a
Messages postés
28
Date d'inscription
mercredi 13 février 2019
Dernière intervention
14 mars 2019
-
Bonjour et merci jordane45 pour votre effort ,je trouve une solution mais reste une problème :
Warning: fopen(C:\xampp\htdocs\cans-noms-traites.txt) [function.fopen]: failed to open stream: No such file or directory in D:\xampp\htdocs\correction-cans.php on line 13

Warning: fopen(C:\xampp\htdocs\cans-noms-non-traites.txt) [function.fopen]: failed to open stream: No such file or directory in D:\xampp\htdocs\correction-cans.php on line 14

Warning: fwrite() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\correction-cans.php on line 46

par contre au niveau base de donnée sera changer
beta.a
Messages postés
28
Date d'inscription
mercredi 13 février 2019
Dernière intervention
14 mars 2019
-
mon code :
<?php

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


define('FICHIER_NOMS_TRAITES','C:\xampp\htdocs\etudiant-noms-traites.txt');
define('FICHIER_NOMS_NON_TRAITES','C:\xampp\htdocs\etudiant-noms-non-traites.txt');

$fichierNomsTraites = fopen(FICHIER_NOMS_TRAITES,'w');
$fichierNomsNonTraites = fopen(FICHIER_NOMS_NON_TRAITES,'w');

$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();
$etudiant = $stmt->fetchAll(PDO::FETCH_OBJ);



$i = 0;
foreach($etudiant 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));


$q = "UPDATE ca_etudiant SET nom = ?, prenom=? WHERE id_etudiant=?";
$stmt = $pdo->prepare($q);
$stmt->bindValue(1,$nom);
$stmt->bindValue(2,$prenom);
$stmt->bindValue(3,$c->id_etudiant);
$stmt->execute();

fwrite($fichierNomsTraites,'ID: '.$c->id_etudiant.' - '.$c->nom. ' *** Nom: '.$nom.', Prénom: '.$prenom."\r\n");

}
else{
fwrite($fichierNomsNonTraites,'ID: '.$c->id_etudiant.' - '.$c->nom."\r\n");

}


}

fclose($fichierNomsTraites);
fclose($fichierNomsNonTraites);
echo "Operation terminee <br />";
jordane45
Messages postés
25029
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 mars 2019
1906 -
1 - NB: Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage afin d'avoir la coloration syntaxique)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.

2 - Cette question n'a rien à voir avec le souci initiale.... il aurait, normalement, fallu créer une nouvelle discussion propre à cette problématique

3 - Ce message d'erreur indique qu'il ne trouve pas le fichier....
Es-tu sûr de son emplacement et de son nom ?
As tu vérifié les droits sur le répertoire en question ?
Où se trouve le script par rapport à ce fichier text ?
beta.a
Messages postés
28
Date d'inscription
mercredi 13 février 2019
Dernière intervention
14 mars 2019
-
d'accord et merci bien pour votre explication
Commenter la réponse de beta.a