Forums d'entraide informatique - Les forums de PCW

Version complète : rapporter une erreur dans une divs
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2 3
Attendez je suis tout meler. Si j 'ai bien compris je devrais passer par du ajax pour que je puisse faire affichier les erreurs de champs vide dans ma div et non sur une nouvelle page.

j'ai pas trop compris se que tu veut que je fasse tutodream
[ tutodream :mdr: :mdr: ]


T'as vu Totof, t'as un nouveau pseudo ! :mrgreen:


@BEDJ : J'ai pas pigé ce dont TotofTeam parlait, mais oui la méthode AJAX te permet d'afficher l'erreur sur la même pas que la page d'envoie.

Seulement il nous faudrait le code de ta page de traitement, pour te dire quoi lui faire renvoyer.
lol :smoke: .

je disai simplement de mettre ton style à la page qui'souvre, mais si tu veu pas qu'elle s'ouvre abandonne mon idée.
Je vais essayer de tout faire sa simple.

Voici le code du forumalire d'inscription (index.php)

 <div id="myInsc" style="display: none">
<span>
<form action="user_create.php" method="post" class="formulaire" id="inscription" name="inscription">
<input type="hidden" name="action" value="add">
<h5>
Inscription
</h5>
<div>
<span><a href="connection.php" rel="modal-myLogin">Déjà membre ? Identifiez-vous</a></span>
</div>
<table cellpadding="5" cellspacing="5">
<tbody>
<tr>
<th><label for="pseudo">Pseudo</label> : </th>
<td> <input type="text" name="pseudo" id="pseudo"></td>
</tr>
<tr>
<th><label for="password">Password</label> : </th>
<td> <input type="password" name="password" id="password"></td>
</tr>
<tr>
<th><label for="password1">Confirmer</label> : </th>
<td> <input type="password" name="password1" id="password1"></td>
</tr>
<tr>
<th><label for="email">E-mail</label> : </th>
<td> <input type="text" name="email" id="email"></td>
</tr>
<tr>
<td colspan="2" class="dotted">
<span class="valider">
<p><input type="image" src="../images/bt_valider.gif" /></p>
</span>
</td>
</tr>
</tbody>
</table>
</form>
</span>
</div>



Cette page a le formulaire d'inscription et il rapporte les erreus (user_create.php) Vous aller me dire pourquoi deux formulaire d'inscription: la reponse est simple ses a cause que si le navigateur de supporte pas l'option que j'ai mit la page user_create.php comme sa ils sont renvoie a cette page. Si le navigateur supporte l'option, alors la c'est la divs cache qui se rouvre.

 <?php 
session_start();

include('user_verif.php');


//-------------------------
// Redirection si connecté
//-------------------------

if( !empty( $id ) )
{
header("Location: $url_login");

exit;
}


$action['get'] = isset( $_GET['action'] ) ? 'new' : '';

$action['post'] = isset( $_POST['action'] ) ? 'post' : '';


//---------------------------------------
// Affichage du formulaire d'inscription
//---------------------------------------

if( $action['get'] == 'new' or ( empty( $action['get'] ) and empty( $action['post'] ) ) )
{
//Affichage du formulaire d'inscription
//Pour les utilisateurs avertis, Vous pouvez modifier les lignes
//ci-dessous (comprises entre les commentaires)
?>

<!-- Début du Formulaire -->

<html>

<head>
</head>

<body>
<br clear="all">
<br clear="all">
<h1>Page d'inscription</h1>
<br clear="all">
<br clear="all">
<p style="text-align: center; font-face: Verdana; font-size: 10pt; color: #FFFFFF">

<font size="2" face="Verdana">

<?php report_disp(); ?>

<center><form action="user_create.php" method="post">

<input type="hidden" name="action" value="add">

<label>Pseudo:<br><input type="text" name="pseudo"></label>
<br><br>
<label>Password:<br><input type="password" name="password"></label>
<br>
<label>Confirmer:<br><input type="password" name="password1"></label>
<br><br>
<label>E-mail:<br><input type="text" name="email"></label>
<br><br>
<input type="reset" name="reset" value="Reset">
<input type="submit" name="send" value="S'inscrire">
<br><br><a href="index.php">Revenir</a>
</form></center>

<center><?php echo ( $conf_crypt == '1' ) ? '<br/><font style="color: '. $avert_crypt_color .'">'. $avert_crypt .'</font>' : ''; ?>
</center>
</font></p>

</body>

</html>

<!-- Fin du Formulaire -->

<?php

exit;
}


//-------------------------------
//Création du membre dans la BDD
//-------------------------------

if( $action['post'] == 'post' )
{

/* ETAPE 1: Formatage des variables */

//Déclaration et Vérification de la conformité des variables

$pseudo = strip_tags ( $_POST['pseudo'] );

$password = strip_tags ( $_POST['password'] );

$password1 = strip_tags ( $_POST['password1'] );

$email = strtolower ( $_POST['email'] );


if( empty ( $pseudo ) or empty ( $password ) or empty ( $email ) )
{
report($erreurs['vide']);

exit( header("Location: $url_create") );
}


if( $password != $password1 )
{
report($erreurs['passconf']);

exit( header("Location: $url_create") );
}


/* ETAPE 2: Traitement sur BDD */

//Connexion à la base de donnée

$sql->open();

//On vérifie que le pseudo n'existe pas déja

$res = $sql->query("SELECT * FROM $sql_table WHERE pseudo='$pseudo'");

if ( mysql_num_rows($res) == 1 )
{
report("Ce pseudo existe déja !");

exit( header("Location: $url_create") );
}


//Création d'un id aléatoire

$char = 'abcdefghijklmnopqrstuvwxyz0123456789';

srand(time()); $id = '';

for( $i=0; $i<20; $i++ )
{
$id .= substr($char,(rand()%(strlen($char))),1);
}


//Cryptage du mot de passe (selon cfg)

$password = ( $conf_crypt == '1' ) ? md5( $password ) : $password;


//Définition de l'activation du compte (selon cfg)

$activ = ( $conf_activ == '1' ) ? 'non' : 'oui';


//Récupération de la date

$register_date = date("d/m/Y H:i");


//Insertion du nouveau membre et de son profil dans la BDD

$sql->query("INSERT INTO $sql_table (pseudo,password,email,rang,id,register_date,activ) VALUES('$pseudo','$password','$email','1','$id','$register_date','$activ')");


//Fermeture de la connexion à la BDD

$sql->close();


/* ETAPE 3: Confirmation */

//Envoi du mail de confirmation si la fonction est activée

$conf_email_msg = "Merci de vous être inscrit sur , voici vos identifiants:\n\n";
$conf_email_msg .= "Pseudo: $pseudo\n";
$conf_email_msg .= "Password: $password1\n";
$conf_email_msg .= "Email: $email\n\n";
$conf_email_msg .= "Cordialement,\n";
$conf_email_msg .= "Le Webmaster.";

$confirm_mail = $mail_confirm['protomail'] . '<br/><br/>';


if ( $conf_mail == '2' )
{
include("config/protomail/lib.protomail.php");

protomail( $email, $conf_email_subject, $conf_email_msg );
}

elseif ( $conf_mail == '1' )
{
mail( $email, $conf_email_subject, $conf_email_msg );

$confirm_mail = $mail_confirm['mail'] . '<br/><br/>';
}


//------------------------------
// Affichage de la confirmation
//------------------------------
?>

<html>

<head>
<META HTTP-EQUIV="refresh" CONTENT="10; URL=<?php echo $url_redir; ?>">
</head>

<body>

<p align="center" style="font-family: Verdana; font-size: 10pt">

<?php echo $create_confirm; ?>
<br/>
Redirection automatique vers la page de connexion dans quelques secondes...
<br/>
<br/>

<?php echo $confirm_mail; ?>

<a href="<?php echo $url_login; ?>">S'identifier</a>

</p>

</html></body>


<?php

session_destroy();

exit;
}

else
{
header("Location: $url_create");

exit;
}
?>



Cette page verifie les champs du formulaire

<?php

include('config/config.php');

include('config/fonctions.php');

include('config/commun.php');


//On vérifie si l'id existe

if( isset( $_SESSION['id'] ) )
{

$id = $_SESSION['id']; //On défini la variable id


$sql->open();

$result = $sql->query("SELECT * FROM $sql_table WHERE id='$id'");


if ( mysql_num_rows($result) == 0 )
{
unset( $_SESSION['id'] );

$id = '';
}

else
{
//On extrait le pseudo, l'email, le rang et l'etat d'activation correspondant à l'id

$row = mysql_fetch_array($result);

$pseudo = nl2br ( $row['pseudo'] );

$email = nl2br ( $row['email'] );

$rang = $row['rang'];

$activ = $row['activ'];

$regdate = $row['register_date'];


//Vérification de l'état du compte

if ( $activ == 'non' )
{
report('Votre compte est désactivé !');

header("Location: $url_login");

exit;
}

if ( $activ == 'black' )
{
report('Votre compte est placé sur la BlackList !');

header("Location: $url_login");

exit;
}
}

$sql->close();
}

else
{

$id = '';

$pseudo = 'Anonyme';

$email = '';

$rang = 0;

$activ = '';

$regdate = '';

}

?>



Merci de votre aide

Wow !
Bon, j'ai pas lu la totalité des deux fichiers, qui sont bien long mais j'ai remarqué :



report($variable);



---> C'est quoi cette fonction report() ?!


Pour ajax il va falloir modifier deux trois trucs :

1°)Remplacer les "report($variable);" par des "echo $variable".

2°)Remplacer ça :



//------------------------------
// Affichage de la confirmation
//------------------------------
?>

<html>

<head>
<META HTTP-EQUIV="refresh" CONTENT="10; URL=<?php echo $url_redir; ?>">
</head>

<body>

<p align="center" style="font-family: Verdana; font-size: 10pt">

<?php echo $create_confirm; ?>
<br/>
Redirection automatique vers la page de connexion dans quelques secondes...
<br/>
<br/>

<?php echo $confirm_mail; ?>

<a href="<?php echo $url_login; ?>">S'identifier</a>

</p>

</html></body>


<?php



Par ça :



//------------------------------
// Affichage de la confirmation
//------------------------------
echo $create_confirm.'
<br/>
Redirection automatique vers la page de connexion dans quelques secondes...
<br/>
<br/>

'.$confirm_mail.'

<a href="'.$url_login.'">S'identifier</a>';




Ensuite, dans la balise <head> de la page avec "la div" tu rajoute ceci :



&amp;#60;script language="JavaScript" type="text/javascript"&amp;#62;

function refresh&amp;#40;&amp;#41; &amp;#123;
location.href="urlderedirection";
&amp;#125;

function ajaxcreateuser&amp;#40;f&amp;#41; &amp;#123;
if&amp;#40;f&amp;#41; &amp;#123;
var values = "";
for&amp;#40;var i=0; i&amp;#60;f.elements.length; i++&amp;#41; &amp;#123;
var element = f.elements&amp;#91;i&amp;#93;;

values += "&amp;" + escape&amp;#40;element.name&amp;#41; + "=" + escape&amp;#40;element.value&amp;#41;;

&amp;#125;


values = values.substr&amp;#40;1&amp;#41;;

var http = null;


if &amp;#40;window.XMLHttpRequest&amp;#41;
&amp;#123;
http = new XMLHttpRequest&amp;#40;&amp;#41;;
if &amp;#40;http.overrideMimeType&amp;#41;
&amp;#123;
http.overrideMimeType&amp;#40;'text/xml'&amp;#41;;
&amp;#125;
&amp;#125;
else if &amp;#40;window.ActiveXObject&amp;#41;
&amp;#123;
try &amp;#123;
http = new ActiveXObject&amp;#40;"Msxml2.XMLHTTP"&amp;#41;;
&amp;#125; catch &amp;#40;e&amp;#41;
&amp;#123;
try &amp;#123;
http = new ActiveXObject&amp;#40;"Microsoft.XMLHTTP"&amp;#41;;
&amp;#125; catch &amp;#40;e&amp;#41; &amp;#123;&amp;#125;
&amp;#125;
&amp;#125;


var loadNode = document.createElement&amp;#40;"p"&amp;#41;;
loadNode.setAttribute&amp;#40;"id", "loadNode"&amp;#41;;
loadNode.innerHTML = "&amp;#60;strong&amp;#62;Chargement&amp;#60;/strong&amp;#62; ";
document.getElementById&amp;#40;"myInsc"&amp;#41;.appendChild&amp;#40;loadNode&amp;#41;;


http.onreadystatechange = function&amp;#40;&amp;#41;
&amp;#123;
if&amp;#40;http.readyState == 4&amp;#41;
&amp;#123;
if&amp;#40;http.status == 200&amp;#41;
&amp;#123;
loadNode.innerHTML = "&amp;#60;strong&amp;#62;Effectu&amp;eacute;&amp;#60;/strong&amp;#62;" ;
if&amp;#40;http.responseText&amp;#41; &amp;#123; loadNode.innerHTML += " &amp;#58; "+ http.responseText; &amp;#125;
window.setTimeout&amp;#40;"refresh&amp;#40;&amp;#41;", 3000&amp;#41;;
&amp;#125;
else
&amp;#123;
if&amp;#40;http.status == 299&amp;#41; &amp;#123;
loadNode.innerHTML = "Erreur de tra&amp;icirc;tement &amp;#58; "+http.responseText;
&amp;#125;
else &amp;#123;
loadNode.innerHTML = "&amp;#60;span style='color&amp;#58;red;' &amp;#62;&amp;#60;strong&amp;#62;Erreur &amp;#60;/strong&amp;#62;&amp;#58; &amp;#60;i&amp;#62;" + http.statusText + "&amp;#60;/i&amp;#62;"; &amp;#125;
&amp;#125;
&amp;#125;
&amp;#125;;
http.open&amp;#40;"POST", "user_create.php", true&amp;#41;;
http.setRequestHeader&amp;#40;"Content-type", "application/x-www-form-urlencoded"&amp;#41;;

http.send&amp;#40;values&amp;#41;;


&amp;#125;

&amp;#125;
&amp;#60;/script&amp;#62;



Il y a un endroit à modifier : "urldereridection" tout en haut, j'ai cherché mais je n'ai pas trouvé la valeur de la variable "$url_redir" donc je n'ai pas pu trouver tout seul l'url de redirection.


Voilà si tu fais tout correctement normalement les erreurs devraient apparaitre au début du formulaire, et quand y'a pas d'erreur la page est redirigée automatiquement au bout de 3 secondes. Si tu veux mettre plus de telmps

Je voudrais juste dire qu'en plus de la méthode Ajax contournable, il faudrait laisser la vérification php en dernier recourt !
Zarnergun a écrit :Je voudrais juste dire qu'en plus de la méthode Ajax contournable, il faudrait laisser la vérification php en dernier recourt !

De ?
Ajouter une vérification JavaScript ?
Ouaip c'est possible... Mais bon il a son script php tout prêt Tongue
Merci troll pour ta reponse. Je vias essaye sa se soir. Mais j'ai une petite question.

Si l'utilisateur s'inscrit par la div, la vérification est faite. Mais si l'utilisateur s'inscrit directement sur la page user_create est ce que la verification est encore faite et est ce quetout va bien fonctionner? Merci de votre reponse
BEDJ a écrit :Merci troll pour ta reponse. Je vias essaye sa se soir. Mais j'ai une petite question.

Si l'utilisateur s'inscrit par la div, la vérification est faite. Mais si l'utilisateur s'inscrit directement sur la page user_create est ce que la verification est encore faite et est ce quetout va bien fonctionner? Merci de votre reponse



J'ai pas touché à la vérification, d'où le fait que je t'ai dit seulement de modifier certaines partie.

Ce qu'on a modifié c'est la relation client <-> serveur.

Au lieu d'envoyer en rafraichissant la page, on le fait sans rafraichir.

Le script PHP continue a effectuer le même boulot et à renvoyer le même texte. Sauf que ce texte est intercepté par JavaScript est affiché par JavaScript.

Par contre s'il s'inscrit directement sur le page. Les erreurs ne seront pas affichées dans la div en effet... Mais c'est pas compliqué. Tu rajoute le script Javascript (celui à mettre entre <head> et </head> ) dans le texte que tu affiches via PHP avec user_create (cas ou y'a pas de requête) et tu colles ton
modifié (après avoir changé les deux trois trucs que.... j'ai oublié de te dire !).


Arf je viens de vois que j'ai oublié un truc Tongue

J'ai oublié de te dire, j'ai modifié deux trois trucs du div pour que ca envoie en ajax, voilà le div modifié :


     &amp;#60;div id="myInsc" style="display&amp;#58; none;"&amp;#62;
&amp;#60;span&amp;#62;
&amp;#60;form action="user_create.php" method="post" class="formulaire" id="inscription" name="inscription" onsubmit=" return false;"&amp;#62;
&amp;#60;input type="hidden" name="action" value="add"&amp;#62;
&amp;#60;h5&amp;#62;
Inscription
&amp;#60;/h5&amp;#62;
&amp;#60;div&amp;#62;
&amp;#60;span&amp;#62;&amp;#60;a href="connection.php" rel="modal-myLogin"&amp;#62;D&amp;eacute;j&amp;agrave; membre ? Identifiez-vous&amp;#60;/a&amp;#62;&amp;#60;/span&amp;#62;
&amp;#60;/div&amp;#62;
&amp;#60;table cellpadding="5" cellspacing="5"&amp;#62;
&amp;#60;tbody&amp;#62;
&amp;#60;tr&amp;#62;
&amp;#60;th&amp;#62;&amp;#60;label for="pseudo"&amp;#62;Pseudo&amp;#60;/label&amp;#62; &amp;#58; &amp;#60;/th&amp;#62;
&amp;#60;td&amp;#62; &amp;#60;input type="text" name="pseudo" id="pseudo"&amp;#62;&amp;#60;/td&amp;#62;
&amp;#60;/tr&amp;#62;
&amp;#60;tr&amp;#62;
&amp;#60;th&amp;#62;&amp;#60;label for="password"&amp;#62;Password&amp;#60;/label&amp;#62; &amp;#58; &amp;#60;/th&amp;#62;
&amp;#60;td&amp;#62; &amp;#60;input type="password" name="password" id="password"&amp;#62;&amp;#60;/td&amp;#62;
&amp;#60;/tr&amp;#62;
&amp;#60;tr&amp;#62;
&amp;#60;th&amp;#62;&amp;#60;label for="password1"&amp;#62;Confirmer&amp;#60;/label&amp;#62; &amp;#58; &amp;#60;/th&amp;#62;
&amp;#60;td&amp;#62; &amp;#60;input type="password" name="password1" id="password1"&amp;#62;&amp;#60;/td&amp;#62;
&amp;#60;/tr&amp;#62;
&amp;#60;tr&amp;#62;
&amp;#60;th&amp;#62;&amp;#60;label for="email"&amp;#62;E-mail&amp;#60;/label&amp;#62; &amp;#58; &amp;#60;/th&amp;#62;
&amp;#60;td&amp;#62; &amp;#60;input type="text" name="email" id="email"&amp;#62;&amp;#60;/td&amp;#62;
&amp;#60;/tr&amp;#62;
&amp;#60;tr&amp;#62;
&amp;#60;td colspan="2" class="dotted"&amp;#62;
&amp;#60;span class="valider"&amp;#62;
&amp;#60;p&amp;#62;&amp;#60;input type="image" src="../images/bt_valider.gif" onclick="ajaxcreateuser&amp;#40;this.form&amp;#41;;" /&amp;#62;&amp;#60;/p&amp;#62;
&amp;#60;/span&amp;#62;
&amp;#60;/td&amp;#62;
&amp;#60;/tr&amp;#62;
&amp;#60;/tbody&amp;#62;
&amp;#60;/table&amp;#62;
&amp;#60;/form&amp;#62;
&amp;#60;/span&amp;#62;
&amp;#60;/div&amp;#62;



Donc voilà, pour que ca marche sur user_create, tu lui fais afficher ce le code <script>....</script> entre <head> et </head> et le div comme ça. Et il y aura l'appel en AJAX aussi.

Bon je suis maintenant entrain d'essayer ton code.

Effectivement si l'utilisateur s'inscrit par la
divs erreur= dans la divs
par la page user_create.php erreur=sur la page user_create

J'ai pas trouver report($variable); que tu veut que je modifie.
J'en voie mais ils ont quelque chose d'ecrit a l'intérieur
ex: report('votre compte n'existe pas');
Est ce que c'est ca que je doit modifier?

Et pour l'url de redirection que je doit modifier
Est ce que c'est quand l'inscription est réussi ou échoue.

Merci
Pages : 1 2 3
URLs de référence