Donner la valeur d'un autre champ à un champ vide

Répondre
raphlight
le 18/01/2008 à 23:01
raphlight
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
zebden
le 19/01/2008 à 17:05
zebden
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
raphlight
le 20/01/2008 à 10:57
raphlight
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
Rolland
le 20/01/2008 à 14:39
Rolland
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
raphlight
le 20/01/2008 à 17:33
raphlight
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
Rolland
le 21/01/2008 à 22:49
Rolland
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
raphlight
le 05/02/2008 à 22:12
raphlight
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
LA GLOBULE
le 05/02/2008 à 22:24
LA GLOBULE
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.
raphlight
le 06/02/2008 à 18:36
raphlight
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
Keika
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 ;) smiley
Le PHP --> C'est dur !
Répondre
LoadingChargement en cours