Page 1 sur 1

màj de formulaire <100% réussite ?

Posté : 06 nov. 2006, 09:54
par Berti88
Bonjour, je travaille sur une machine Linux ( Dapper ) avec php5, mysql... et j'ai réalisé un site dynamique pour mes élèves à partir de Dreamweaver via Crossover.
Mon site consiste en autre de saisir en ligne des td pour les élèves, il y a donc création et mise à jour dans une base mysql.
Ce site fonctionne toutefois, il m'arrive 1 fois sur 3 environ de ne pas réussir à 100 % la mise à jour.
Mon bouton de validation de formulaire est une image qui appelle une fonction javascript.
Ce dysfonctionnement est-il normal ?
Que faire pour améliorer la chose ?

Merci à toutes et tous. 8)

Posté : 06 nov. 2006, 10:21
par zeus
Est-ce que tout tes tests ont été réalisés sur la même machine, avec le même navigateur, la même configuration ?

Dans tous les cas, si tu ne nous montres pas un chouia de code, je ne suis pas sûr de pouvoir t'aider :?

Posté : 06 nov. 2006, 11:14
par zigz4g
Salut.
Il n'est peut etre pas utile de faire une validation de formulaire par du javascript. Si tu as des petits plaisantins qui désactivent ton javascript dans le navigateur il est possible que ton code PHP recoivent de mauvaises informations.

PS: Sous Linux, il existe de très bons éditeurs Web (http://www.framasoft.net/). Je t'encourage a regarder d'autres outils qui t'éviteront de faire de l'émulation d'outils. Enfin après tu fais comme tu veux.

Posté : 06 nov. 2006, 11:19
par zeus
Je pense que, dans ce cas, seul la validation du formulaire est en JS, pas la validation des données ... :S

Mais, pour rebondir sur ce que tu dit, j'aime proposer une 1ere validation des données en JS pour le confort de l'utilisateur, puis une validation PHP pour la sécurité de mon applicatif. Dans ce cas là, les petits plaisantins (ou tout simplement ces gens qui restent persuadés que le JS est un outils néfaste qui n'est qu'une grosse faille, merci IE ;) ) ne se privent que ud confort de ne pas recharger la page.

Et depuis que je met au web 2.0, j'utilise très avantageusement les 2 ;)

Posté : 06 nov. 2006, 13:09
par zigz4g
Je suis entierement d'accord avec toi.
Je disais juste que dans le probleme cite ci dessus, ca pouvait venir du javascript. Mais on n'a pas de code source pour le verifier.

Posté : 06 nov. 2006, 14:42
par Invité
yes merci à tous.
De retour à mon domicile ce soir, je vous envoie le code pour un bouton de validation JS.
Pour l'instant, le tout reste sur ma machine, ce n'est pas encore mis sur un serveur de mon lycée.
Je vais essayer d'être le plus clair possible,
code JS pour la validation du formulaire,
code php pour une mise à jour par exemple,
Dreamweaver m'a permis de réaliser ce site dynamique alors que je ne suis qu'un amateur, je suis prof d'électricité pas d'informatique.
Je me suis donc appuyé sur les méthodes serveur de Dreamweaver.
Suite à partir de 19h.

Posté : 06 nov. 2006, 20:07
par Invité
voici le code relatif au bouton qui valide le formulaire pour faire une mise à jour de la table td-corrige de ma base mysql:
Une condition est lue avant l'affichage du bouton qui teste la valeur du champ nbQ ( nombre de questions )
Je passe aussi par l'URL la clef ID de cet enregistrement ( pour les pages suivantes lors d'un clic sur un onglet me conduisant vers une autre page et confirme que la page est bien validée ( Validation=ok )

Code : Tout sélectionner

<?php if ( $row_rsListeTDcorrige['nbQ'] >= 10 ) { ?> <a href="questions_tp10?corrigeTDID=<?php echo $row_rsListeTDcorrige['ID']; ?>&Validation=ok" onMouseOver="Permut(1,'IMG1');"onmouseout="Permut(0,'IMG1');"><img src="../images/Bouton_valider_off.png" name="IMG1" width="92" height="23" border="0" align="middle" id="IMG1" onClick="SuiteForm();" onload="preloadPermut(this,'../images/Bouton_valider_on.png');" /></a> <?php } ?>
je fais appel à deux fonctions javascript:
- Permut() : qui me fait une permutation de deux images au passage de la souris pour donner une impression de bouton enfoncé, images crées sous GIMP en script fu
- SuiteForm() : qui réalise la validation du formulaire

Code : Tout sélectionner

<!-- Permuter une image function Permut (flag,img) { if (document.images) { if (document.images[img].permloaded) { if (flag==1) document.images[img].src = document.images[img].perm.src else document.images[img].src = document.images[img].perm.oldsrc } } } function preloadPermut (img,adresse) { if (document.images) { img.onload = null; img.perm = new Image (); img.perm.oldsrc = img.src; img.perm.src = adresse; img.permloaded = true; } } function SuiteForm() { document.formQTP.submit(); }
Mon formulaire se nomme : formQTP

Le code php de mise à jour est :

Code : Tout sélectionner

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue; switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; } $editFormAction = $HTTP_SERVER_VARS['PHP_SELF']; if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) { $editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING']; } if ((isset($HTTP_POST_VARS["MM_update"])) && ($HTTP_POST_VARS["MM_update"] == "formQTP")) { $updateSQL = sprintf("UPDATE td_corrige SET textQ10=%s, textR10=%s, Q10=%s WHERE ID=%s", GetSQLValueString($HTTP_POST_VARS['textQ10'], "text"), GetSQLValueString($HTTP_POST_VARS['textR10'], "text"), GetSQLValueString($HTTP_POST_VARS['Q10'], "text"), GetSQLValueString($HTTP_POST_VARS['tdcorrigeID'], "int")); mysql_select_db($database_ConnexionsGET, $ConnexionsGET); $Result1 = mysql_query($updateSQL, $ConnexionsGET) or die(mysql_error()); }
Voilà, je vais tout de même faire l'essai avec les vilains boutons proposés par défaut dans Dreamweaver MX 6 ( le seul qui fonctionne avec wine sous linux ) pour voir si çà cafouille encore.

Bonne lecture 8)

Posté : 06 nov. 2006, 21:33
par Invité
Bon, j'ai un bien meilleur résultat en plaçant les paramètres que je passe dans l'URL ainsi :

Code : Tout sélectionner

if ((isset($HTTP_POST_VARS["MM_update"])) && ($HTTP_POST_VARS["MM_update"] == "formQTP")) { $updateSQL = sprintf("UPDATE td_corrige SET Q3=%s, textQ3=%s, textR3=%s WHERE ID=%s", GetSQLValueString($HTTP_POST_VARS['Q3'], "text"), GetSQLValueString($HTTP_POST_VARS['textQ3'], "text"), GetSQLValueString($HTTP_POST_VARS['textR3'], "text"), GetSQLValueString($HTTP_POST_VARS['tdcorrigeID'], "int")); mysql_select_db($database_ConnexionsGET, $ConnexionsGET); $Result1 = mysql_query($updateSQL, $ConnexionsGET) or die(mysql_error()); $updateGoTo = "questions_tp3.php?Validation=ok&corrigeTDID=" . $row_rsListeTDcorrige['ID'] . ""; if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) { $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?"; $updateGoTo .= $HTTP_SERVER_VARS['QUERY_STRING']; } header(sprintf("Location: %s", $updateGoTo)); }
Du coup plus de passage dans la balise <a> </a> associée à l'image bouton de validation.