Php javascript probleme history back
Résolu
jupiler
-
19 août 2009 à 09:49
Archeus01 Messages postés 1572 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 -
Archeus01 Messages postés 1572 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 -
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>";
}
}
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:
- Comment resoudre problème javascript
- Telecharger javascript - Télécharger - Langages
- A javascript error occurred in the main process - Forum Handicap / Accessibilté
- Erreur #125 javascript - Forum Mozilla Firefox
- Afficher un tableau javascript en html ✓ - Forum Javascript
- Javascript arrondi - Forum Javascript
11 réponses
Utilisateur anonyme
19 août 2009 à 09:51
19 août 2009 à 09:51
Pourquoi poster deux fois la même chose ???
https://forums.commentcamarche.net/forum/affich-13943883-php-javascript-probleme-avec-history-back
https://forums.commentcamarche.net/forum/affich-13943883-php-javascript-probleme-avec-history-back
Archeus01
Messages postés
1572
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
9 juin 2022
452
19 août 2009 à 10:03
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?
$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
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
Archeus01
Messages postés
1572
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
9 juin 2022
452
19 août 2009 à 10:19
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 ?.
<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 ?.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Archeus01
Messages postés
1572
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
9 juin 2022
452
19 août 2009 à 10:26
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.
}
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.
}
donc ca doit donner un truc comme ca
if (isset($_GET['pseudo']) && $_GET['pseudo']!='') { $pseudo = ($_GET['pseudo']; } else
{ $pseudo=$_SESSION['pseudo];
}
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'];
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
Merci beaucoup de ton aide archeus01
Utilisateur anonyme
19 août 2009 à 11:11
19 août 2009 à 11:11
$pseudo = ($_GET['pseudo'];
Pourquoi cette mono-parenthèse ??
Pourquoi cette mono-parenthèse ??
Archeus01
Messages postés
1572
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
9 juin 2022
452
19 août 2009 à 11:28
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'];