Php javascript probleme history back

[Résolu/Fermé]
Signaler
-
Messages postés
1566
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
23 mars 2020
-
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>";
}
}

11 réponses

j avais l impression de poser le problème plus clairement ...
Messages postés
1566
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
23 mars 2020
410
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?
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
Messages postés
1566
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
23 mars 2020
410
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 ?.
j suis en localhost mais ce st http://localhost/test/form_login.php
Messages postés
1566
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
23 mars 2020
410
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.
}
mon $pseudo je le recupere d'une session

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

if (isset($_GET['pseudo']) && $_GET['pseudo']!='') { $pseudo = ($_GET['pseudo']; } else
{ $pseudo=$_SESSION['pseudo];
}
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'];
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

$pseudo = ($_GET['pseudo'];

Pourquoi cette mono-parenthèse ??


Messages postés
1566
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
23 mars 2020
410
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'];