Mise à jour d'une table

Ludo36230 Messages postés 8 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 19 mars 2004 - 19 mars 2004 à 01:13
Ludo36230 Messages postés 8 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 19 mars 2004 - 19 mars 2004 à 22:52
Bonjour, j'ai crée un formaulaire d'envoi avec plusieurs champ pour mettre à jour une table, il y aura des fois ou des champs seront vide (tout à fait normal) mais le problème est que lors de la mise à jour, les champs vide efface les données de ce même champs dans la base GRRRR vous comprenez j'espère ?!? Moi j'aimerai savoir s'il est possible de verifier tout le formulair puis ensuite de ne mettre à jour dans la base que les données du formulaire sans effacer le reste ?

Pour mieux comprendre :
Voiçi le formulaire :


Document sans-titre



Résultat d'une
séance




Choix du Grand Prix
Melbourne
Sépang
A1Ring
Imola
Barcelone
Monaco
Nurburgring
Montréal
Indianapolis
Silverstone
Magny-Cours
Hockenheim
Hungaroring
Spa Francorchamps
Monza
Suzuka
Interlagos

,

Choisir le nom
Glad
Jumpes
,

----

Attention,
entrez une valeur de type 0:00:000 ou bien 0h00:00:000 Merci

,
Essai Libre :

Qualification :

Warm-Up :

Course :

,

----

Position qualification,
,

----

Position course,
,

----

Points gagnés,














et voici le fichier d'ajout :

17 réponses

cs_OriOn Messages postés 822 Date d'inscription vendredi 25 mai 2001 Statut Modérateur Dernière intervention 1 août 2014
19 mars 2004 à 05:52
Tu peux essayer de reprendre ta question car je n'ai pas réussi à tout saisir.

orion
http://orion.fulinux.com
0
perig Messages postés 358 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 5 septembre 2006
19 mars 2004 à 08:59
Moi je pense avoir compris lol

Tu fais
$sql='select * from temps where pseudo='$pseudo' AND circuit='$circuit' ";
$res=mysql_query($sql);
$sql = "UPDATE temps SET tps_libre='";
if (isset($tps_qualif))
{
 $sql.=$tps_libre; 
} 
else
{
 $sql.=$res['tps_libre'];
}
$sql.="', tps_qualif='";
if(isset($tps_qualif))
{
$sql.=$tps_qualif; 
}
else
{
$sql=$res['tps_qualif'];
}
$sql.="',...'";
...
 tu fais ça pour tous les champs
et ensuite tu lance la requête
...
$sql.="WHERE pseudo='$pseudo' AND circuit='$circuit' ";
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());


Pour info on vérifie à chaque fois que le champ du formulaire était pas vide et si c'est pas le cas alors on met à jours la base sinon on remet la valeur déjà présente

Ps: il doit y avoir moyen de faire plus court mais c'est plus compliqué à cause des "," (il faut faire gaffe de pas en mettre à la dernière insertion)

---Perig---
Pour vous servir 8-)
Et parfois en galère :blush)
Souvent même :)
0
Ludo36230 Messages postés 8 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 19 mars 2004
19 mars 2004 à 09:05
Bon en me relisant moi aussi, c'est vrai que ce ne peut être clair que pour celui qui l'a écris donc moi DSL
En plus clair, j'ai une table avec plusieurs champs ex : nom, tps_qualif, tps_warmup, tps_course, point.
Il s'agit bien sur de temps pour un championnat.
J'ai un formulaire avec touts ces champs.
Lorsque le visiteur a fini qualifs, il rentre son temps, jusque là ok.
Lorsqu'il a fini son warmu, il revient sur le même formulaire puis il rentre son warmup, or vu qu'il la case en essai libre est alimenter par rien, dans la base ce qu'il avait rentrà 3 jours plus tôt s'efface ?
En espèrant que celà sera plus clair?

Merci à vous
0
cs_OriOn Messages postés 822 Date d'inscription vendredi 25 mai 2001 Statut Modérateur Dernière intervention 1 août 2014
19 mars 2004 à 09:06
J'ai jamais eu de problème avec la clause UPDATE. Peut-être pour ça que je n'arrive pas à comprendre la question.

orion
http://orion.fulinux.com
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DaBoyz Messages postés 2 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 19 mars 2004
19 mars 2004 à 09:39
Affiche tes valeurs avec echo avant l'update ... je pense que la solution va te sauter aux yeux.

Il se passe quoi, si j'ai déjà saisie mes temps au qualifs et que je reviens mettre ceux de mon warmup ... je ne réentre pas ceux des qualifs mais comme tu les affiches pas et que tu mets à jour dans tous les cas ... ça écrase les données avec NULL ...

Enfin, c'est ce qu'il me semble ...
Faudrait récupérer les valeurs déjà saisies et les insérer dans le formulaire lors d'une mise à jour ...
0
perig Messages postés 358 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 5 septembre 2006
19 mars 2004 à 11:15
DaBoyz à dit :
Enfin, c'est ce qu'il me semble ...
Faudrait récupérer les valeurs déjà saisies et les insérer dans le formulaire lors d'une mise à jour ...

Pour ca voir mon poste plus haut
mais remplacer les isset($tps_qualif) par des isset($_POST['tps_qualif'])

---Perig---
Pour vous servir 8-)
Et parfois en galère :blush)
Souvent même :)
0
Ludo36230 Messages postés 8 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 19 mars 2004
19 mars 2004 à 12:28
Je vais essayer de modifier le script à la façon Perig :-)
Car récupérer les données de la table pour les insérer dans le formulaire lors de la saisie, moi pas trop savoir comment m'y prendre ,-)

Je vous tiens au courant ;-)

Merci
0
cs_DaBoyz Messages postés 2 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 19 mars 2004
19 mars 2004 à 12:51
Pour ca voir mon poste plus haut
mais remplacer les isset($tps_qualif) par des isset($_POST['tps_qualif'])


J'avais pas regardé en détail ... :approve)
0
Ludo36230 Messages postés 8 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 19 mars 2004
19 mars 2004 à 14:28
J'ai donc refait mon script avec l'aide du bout de code de Perig, et celà marche exactement de la même manière que le mien :dissapprove)
Je rentre un temps en essai libre dans mon formulaire, la table se met à jour. Je reviens sur le formulaire, je rentre un temps en qualif en laissant donc la case essai libre de vide, ça me mets à jour le tps_qualif mais celà m'efface tps_libre.

Comment faire ?
J'ai essayer de mofier avec isset($_POST['tps_qualif']) mais là j'ai carrement une erreur de syntaxe ??

voiçi le code fonctionnel mais effacant quand même les données :

<?
$circuit = $_POST['grandprix'];
$pseudo = $_POST['nom'];
$tps_libre = $_POST['tps_libre'];
$tps_qualif = $_POST['tps_qualif'];
$position_qualif = $_POST['pqualif'];
$tps_warmup = $_POST['tps_warmup'];
$tps_course = $_POST['tps_course'];
$position_course = $_POST['pcourse'];
$point = $_POST['ptscourse'];
// connexion à la base
$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
// sélection de la base
mysql_select_db('speedlineracer',$db)  or die('Erreur de selection '.mysql_error());
// on ecris la requete sql
$sql="SELECT * from temps where pseudo='$pseudo' AND circuit='$circuit'";
$res=mysql_query($sql);
$sql = "UPDATE temps SET tps_libre='";
if (isset($tps_libre))
{
$sql.=$tps_libre; 
} 
else
{
$sql.=$res['tps_libre'];
}
$sql.="', tps_qualif='";
if(isset($tps_qualif))
{
$sql.=$tps_qualif; 
}
else
{
$sql=$res['tps_qualif'];
}
$sql.="', position_qualif='";
if(isset($position_qualif))
{
$sql.=$position_qualif; 
}
else
{
$sql=$res['position_qualif'];
}
$sql.="', tps_warmup='";
if(isset($tps_warmup))
{
$sql.=$tps_warmup; 
}
else
{
$sql=$res['tps_warmup'];
}
$sql.="', tps_course='";
if(isset($tps_course))
{
$sql.=$tps_course; 
}
else
{
$sql=$res['tps_course'];
}
$sql.="', position_course='";
if(isset($position_course))
{
$sql.=$position_course; 
}
else
{
$sql=$res['position_course'];
}
$sql.="', point='";
if(isset($point))
{
$sql.=$point; 
}
else
{
$sql=$res['point'];
}
$sql.="'WHERE pseudo='$pseudo' AND circuit='$circuit'";
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
// on ferme la connexion      
echo 'Vos infos on été ajoutées.';     
mysql_close();  
?> 

0
perig Messages postés 358 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 5 septembre 2006
19 mars 2004 à 14:33
remplave les
if(isset($var))
par des
if($var!="")

---Perig---
Pour vous servir 8-)
Et parfois en galère :blush)
Souvent même :)
0
perig Messages postés 358 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 5 septembre 2006
19 mars 2004 à 14:40
et j'ai oublié il faut pas faire
$sql="SELECT * from temps where pseudo='$pseudo' AND circuit='$circuit'";
$res=mysql_query($sql);

mais
$sql="SELECT * from temps where pseudo='$pseudo' AND circuit='$circuit'";
$ressql=mysql_query($sql);
$res=MYSQL_FETCH_ARRAY($ressql,MYSQL_ASSOC)


désolé, j'avais pas encore mangé j’étai pas très clair lol

ps: y'a pt'étre d'autre bug mais dans ce cas donne nous les messages d'erreurs

---Perig---
Pour vous servir 8-)
Et parfois en galère :blush)
Souvent même :)
0
Ludo36230 Messages postés 8 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 19 mars 2004
19 mars 2004 à 14:49
Je viens de remplacer les isset comme tu me l'a dit mais je ne peux pas voir si ça fonctionne car depuis j'ai cette erreur :
Erreur SQL !'WHERE pseudo='glad' AND circuit='Melbourne'
Erreur de syntaxe près de ''WHERE pseudo='glad' AND circuit='Melbourne'' à la ligne 1

Une idée de pourquoi ceci est apparue ?
0
perig Messages postés 358 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 5 septembre 2006
19 mars 2004 à 15:10
t'as rajouté le ; deriére
$res=MYSQL_FETCH_ARRAY($ressql,MYSQL_ASSOC)
:big)

---Perig---
Pour vous servir 8-)
Et parfois en galère :blush)
Souvent même :)
0
Ludo36230 Messages postés 8 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 19 mars 2004
19 mars 2004 à 15:51
Grrr, y'a des fois je me demande si je ferai pas mieux de faire un formulaire pour chaque champ de la table :(

Bon maintenant je n'ai plus aucunes erreure et j'ai bien mon message : Vos infos ont été ajoutées.

Jusque là on pourrait être content mais le problème et que lorsque je regarde dans la table et bien rien n'a changé ????

J'en a marre
Merci quand même de toute ton aide Perig ;-)
0
Ludo36230 Messages postés 8 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 19 mars 2004
19 mars 2004 à 17:18
Si quelqu'un a une idée sur pourquoi ma table ne se mets pas à jour, je suis preneur car depuis 2 heures de recherche, j'y arrive pas.
Tout à l'air de fonctionner sauf la mise à jour dans la table ???

Merci
0
perig Messages postés 358 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 5 septembre 2006
19 mars 2004 à 21:09
juste avant
mysql_query($sql)
fait un
print $sql;
pour voir a koi ressemble la requette

---Perig---
Pour vous servir 8-)
Et parfois en galère :blush)
Souvent même :)
0
Ludo36230 Messages postés 8 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 19 mars 2004
19 mars 2004 à 22:52
Voiçi le message que j'ai en faisant le print :

SELECT * from temps where pseudo='glad' AND circuit='Melbourne'Vos infos on été ajoutées.

J'ai essayé de décomposé le tout en 2 formulaire et ça fonctionne correctement donc je crois que je vais rester comme çà même si c'est moins beau.

Je te remercie énormément pour ton aide vraiment précieuse. Heureusement que des gens comme toi sont là pour faire progrsser les autres 8-) ;)

Encore merci et @ bientôt
0
Rejoignez-nous