Donner la valeur d'un autre champ à un champ vide
Bonjour,
j'ai une table MySQL répertoriant les membres avec plusieurs champs (pseudo, mail...etc)
Je viens de rajouter un champ. Celui ci est modifiable via un forumlaire.
J'aimerais le nouveau champ de tous ceux qui ne l'on pas encore modifié prenne la valeur de leur pseudo...
Par exemple, si le mebre "maxou" n'a pas modifié le nouveau champ que je viens de créer, celui-ci aura pour valeur "maxou" jusqu'à ce qu'il le modifie, il prendra alors la valeur que le membre "maxou" aura choisit...
Comment faire ?
Merci d'avance
http://raphlight.free.fr/trad.php
Lu,
tu peux ajouter un champ avecl'identifiant qui a le pseudo d'origine. Et lorsque il y a modification sur la ligne de cette identifiant, alors tu envoies une demande au membre qui voulait ce pseudo, s'il choisit de changer ou pas ...
Problème ce que tu peux avoir plusieurs demande pour "maxou" dans ce cas, la demande se fera sur le membre le plus ancien.. Et ainsi de suite..
Shématiquement ça donnerait un truc genre
Identifiant Pseudo IdentifiantMembreAyantMonPseudoSouhaité
1 maxou 0
2 maxou2009 1
Si 1 change, j'envoie à 2 la proposition grâce au champ "IdentifiantMembreAyantMonPseudoSouhaité". (Ne le fait pas automatiquement, demande une confirmation).
Bon courage ^^.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Oulà, c'est chaud comme truc mais merci ca m'aide un peu ^^
Pour l'instant j'ai préféré laisser le nouveau champ vide... Ca va poser quelques problèmes au début pour tous les membres qui n'auront pas modifiés leurs champs mais après ca sera bon vu que j'ai interdit de laisser le champ vide après une première modification :)
++
http://raphlight.free.fr/trad.php
Bonjour Raphlight,
Si j'ai bien compris, ce ne doit pas être aussi compliqué.
Tu veux simplement que les champs vides prennent la valeur du pseudo ?
Alors tu récupères le pseudo de chaque membre et tu le places dans le champ vide avec un script du genre :
<?php
/*connexion à ta base*/
//Récup des pseudos où le noueau champ est vide
$query = "SELECT pseudo FROM ma_table WHERE nouveau_champ=''";
$res = mysql_query($query, $connexion) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error());
//on update la table
while($data=mysql_fetch_assoc($res))
{
$update = sprintf("UPDATE ma_table SET nouveau_champ='%s' WHERE pseudo='%s' ",$data['pseudo'],data['pseudo']);
mysql_query($update, $connexion) or die("Erreur SQL !".$update."<br />".mysql_error());
}
mysql_free_result($res);
mysql_close();
?>
Je te conseille vivement de faire une sauvegarde de ta table avant de lancer le script.
3SI - Sea, Sex, Sun and Internet
Salut, je comprends à peu près ton code, il a l'air d'être correct ;)
Je te conseille vivement de faire une sauvegarde de ta table avant de lancer le script.
Euh... il y a des chances pour que ca fiche le bordel ?
http://raphlight.free.fr/trad.php
Bonsoir raphlight,
Si tu fais une erreur dans ton update, oui.
Et c'est un principe qui évite quelques galères...
3SI - Sea, Sex, Sun and Internet
Bonjour,
excuse-moi de ce poste très tardif mais je n'ai pas eu le temps d'acéder véritablement à l'ordi pendant quelques temps..
J'ai sauvegardé ma table et je viens de tester ton bout de code en le modifiant pour qu'il convienne à mon cas.
Voici ce que j'obtiens :
Parse error: syntax error, unexpected '[' in /mnt/...../raphlight/test.php on line 12
Voici la ligne 12 :
$update = sprintf("UPDATE membre SET lienm='%s' WHERE login='%s' ",$data['login'],data['login']);
Je n'arrive pas à résoudre le problème étant donné que je ne sais pas ce qu'est ceci : %s
Saurrais-tu comment faire ?
http://raphlight.free.fr/trad.php
Si tu ne sais pas ce que c'est, pourquoi tu utilises sprintf pour construire tes requetes ?
PS : attention à l'injection SQL, utilise mysql_escape_string pour protéger tes valeurs.
Si tu ne sais pas ce que c'est, pourquoi tu utilises sprintf pour construire tes requetes ?
tout simplement car je ne sais pas comment faire autrement...
http://raphlight.free.fr/trad.php
le 07/02/2008 à 00:48
Keika
Salut,
la je ne suis pas tres sur mais deja:
<?php
$update = sprintf("UPDATE membre SET lienm='%s' WHERE login='%s' ",$data['login'],data['login']); //<<y'a pas de $ au seconde data['login'], peut etre la ton erreur
?>
Ensuite, quand tu mets sprintf dans google, le premier resultat est le bon ;)
Le PHP --> C'est dur !