Php javascript probleme history back

Résolu/Fermé
jupiler - 19 août 2009 à 09:49
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 - 19 août 2009 à 11:28
Bonjour,

voila j ai un formulaire qui permet aux visiteurs de modifier leurs comptes mon souci est que j ai mis un contrôle de champs sur la date de naissance et le pseudo quand je modifie la date de naissance et que ce n'est pas dans le format valide ca me met un message avec history back et mon formulaire avec les champs row s affiche très bien quand au pseudo c est différent les pseudos contiennent forcement 15 chiffres ni plus ni moins quand je rajoute un chiffre devant derrière ou une lettre devant j ai le message mon history back se fait par contre mon tableau n affiche pas les row donc les informations du compte !!! par contre ce qui est vraiment bizarre c est si je mets une lettre en ajout en 16 eme caractère j ai le message le history back fonctionne et mes row s affiche je suis perdu merci de m aider

voici le srcipt :

if (isset($_POST['ok']))

{
$pseudo2=$pseudo;
$pseudo=$_POST['pseudo'];


if (preg_match("#^([0-9]){2}/([0-9]){2}/([1-2])([0-9]){3}$#", $naissance))
{
$preg=(preg_match("#^[0-9]{15}$#", $pseudo)) ;
if ($preg)
{
$sql2= "UPDATE login SET nom='".$_POST['nom']."', prenom='".$_POST['prenom']."', naissance='".$_POST['naissance']."', pseudo='".$pseudo."' WHERE pseudo='".$pseudo2."'";
$req2= mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());
?>
<div id="ajout"><br/>
<?php
if($req2)
{
?>
<center><h4><?php echo 'Compte modifié'; ?></center></h4><br /><?php
$sql = "SELECT * FROM login where pseudo='".$pseudo."'";
$req = mysql_query($sql) or die( mysql_error() ) ;
$total = mysql_num_rows($req);
{
echo '<center><table class="table2">'."\n";
echo '<tr >';
echo '<td class="td-title">Nom</td>';
echo '<td class="td-title">Prénom</td>';
echo '<td class="td-title">Date de naissance</td>';
echo '<td class="td-title">pseudo</td>';
echo '</tr>'."\n";
while($row = mysql_fetch_array($req))
{
echo '<tr>';
echo '<td class="td-p">'.$row["nom"].'</td>';
echo '<td class="td-p">'.$row["prenom"].'</td>';
echo '<td class="td-p">'.$row["naissance"].'</td>';
echo '<td class="td-p">'.$row["pseudo"].'</td>';
echo '</tr>'."\n";
}
echo '</table></center>'."\n";
}
}
else
{
echo 'no update';
}
}
else
{
echo "<script language=\"JavaScript\">\n";
echo "alert('pseudo invalide');";
echo 'window.history.back();';
echo "</script>";
}
}
else
{
echo "<script language=\"JavaScript\">\n";
echo "alert('Format date non valide');";
echo 'window.history.back();';
echo "</script>";
}
}
A voir également:

11 réponses

Utilisateur anonyme
19 août 2009 à 09:51
0
j avais l impression de poser le problème plus clairement ...
0
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
19 août 2009 à 10:03
Bonjour, j'ai carrément du mal avec le
$total = mysql_num_rows($req);
{
echo '<center><table class="table2">'."\n";
Pourquoi un { ici?
Est-ce que tu peux reposter ton code ici avec l'indentation?
0
En fait j ai compris le souci mais je ne vois pas comment le résoudre

j ai mon fichier 1 qui est mon formulaire le visiteur rentre son pseudo et ses informations s affiche donc j ai un select du type :

select * from login where pseudo='".$pseudo."'";

le visiteur modifies ses données grace a des input en POST

et arrive sur le fichier 2 pour un update avec

$pseudo2=$pseudo; (je donne à pseudo la valeur rentrer par le visiteur)
$pseudo=$_POST['pseudo']; (je donne à pseudo la valeur modifier par le visiteur)

je fais l update : "UPDATE login SET nom='".$_POST['nom']."', prenom='".$_POST['prenom']."', naissance='".$_POST['naissance']."', pseudo='".$pseudo."'
WHERE pseudo='".$pseudo2."'";

j affiche mon resultat : "SELECT * FROM login where pseudo='".$pseudo."'";

ca marche nickel par contre quand je reviens en arrière sur mon fichier 1 il a gardé en $pseudo la valeur rentrer par le visiteur et non modifier du coup vu que il y a eu un update il ne peut pas m afficher mon formulaire comment faire en sorte que mon fichier1 récupère le $pseudo2 ?

Merci
0
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
19 août 2009 à 10:19
Ne pas passer par la fonction javascript history.back mais appeler ta page avec les bonnes informations. si tu veux rester en javascript avec un truc du genre
<script language="javascript" type="text/javascript">
<!--
window.location.replace("http://www.un-site.com/une-page.htm");
-->
</script>



C'est quoi l'url complète de la page de ton fichier 1 ?.
0

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

Posez votre question
j suis en localhost mais ce st http://localhost/test/form_login.php
0
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
19 août 2009 à 10:26
Tu remplaces dans ton fichier 2
echo "<script language=\"JavaScript\">\n";
echo "alert('pseudo invalide');";
echo 'window.history.back();';
echo "</script>";
par
?>
<script language="javascript" type="text/javascript">
<!--
window.location.replace("http://localhost/test/form_login.php?pseudo=<?=$pseudo2;?>");
-->
</script>
<?php

et dans ton fichier un, à un endroit, tu dois avoir $pseudo = quelquechose
tu remplaces
par if (isset($_GET['pseudo']) && $_GET['pseudo']!='') { $pseudo = ($_GET['pseudo']; } else
{
$pseudo = quelquechose //Ici ce que tu avais avant.
}
0
mon $pseudo je le recupere d'une session

$pseudo=$_SESSION['pseudo];
0
donc ca doit donner un truc comme ca

if (isset($_GET['pseudo']) && $_GET['pseudo']!='') { $pseudo = ($_GET['pseudo']; } else
{ $pseudo=$_SESSION['pseudo];
}
0
ah il me met

Parse error: syntax error, unexpected ';' in W:\login_form.php on line 5

ca correspond a cette ligne

$pseudo = ($_GET['pseudo'];
0
Bon ca marche pas j ai donc contourner le problème en créant un fichier 3 vers lequel pointe mon fichier 2 si un pseudo est mal entre et dans ce fichier trois j affiche le formulaire a nouveau avec a le $pseudo puique de tout facon il na pas ete modifie du coup j ai ce qu il faut

Merci beaucoup de ton aide archeus01
0
Utilisateur anonyme
19 août 2009 à 11:11
$pseudo = ($_GET['pseudo'];

Pourquoi cette mono-parenthèse ??


0
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
19 août 2009 à 11:28
une erreur d'inattention de ma part. C'est pas du javascript/Html : Il est beaucoup plus long à mettre en place l'environnement de test donc je le donne au filling et j'ai des erreurs de syntaxe. Il fallait bien évidemment mettre $pseudo = $_GET['pseudo'];
0