IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

changement de valeur par une fonction javascript


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut changement de valeur par une fonction javascript
    Bonjour.

    J'ai un petit souci. Ce souci concerne le Status.

    Le lien "Active" (si le compte est déjà actif) ou "Inactive" (si le compte est inactif), ne fonctionne pas OR il devait normalement fonctionner en se changeant en "Inactive" s'il est "Active" et vice-versa lorsqu'on clique la-dessus.
    C'est là le bug qu'il me reste à corriger. Celui de faire appliquer la fonction "javascript:changeAccStatus()" qui fonctionnait normalement sur une autre partir du Code en permettant de changer le Statut du Compte du client car celle [fonction "javascript:viewAccountStatement()"] du "STATEMENT" située juste en dessous fonctionne très bien.

    En clair, le Code actuel ne me permet pas de changer le Statut en "Active". Il ne retourne que la Phrase ""Do you want to Inactive this Account? même si le Compte est déjà "INACTIVE". Alors qu'il devrait normalement retourner la phrase "Do you want to Active this Account?" puisque là le Compte est actuellement Inactive et veut être changer en Active via la fonction JS "javascript:changeAccStatus()" qui est défini dans un fichier user.js de mon Script.

    Donc le bug ne fait que rendre seulement le compte "INACTIVE" sans rendre celui-ci "ACTIVE" même si celui est déjà "INACTIVE".

    Nom : CAPTURE D'ECRAN ERREUR CHEGBK.png
Affichages : 80
Taille : 34,1 Ko

    Voici donc le bout de Code concernant la fonction "javascript:changeAccStatus()":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    		while( $row = $req->fetch(PDO::FETCH_ASSOC) )
    		{
    			$class = ($i%2)? 'row1' : 'row2';
    			$i++;
     
    			$atype = '';
    			switch($row['type'])
    			{
    				case 'CA':
    					$atype = "Checking Account";
    					break;
    				case 'SA':
    					$atype = "Saving Account";
    					break;
    				case 'FDA':
    					$atype = "Fixed deposit Account";
    					break;
    			}
    			$status = ($row['status'] == "INACTIVE")? "Inactive":"Active";
    			$result_table .= '
    			<tr class="'.$class.'">
    				<td align="center">'.$row['fname'] .' '.$row['lname'].'</td>
    				<td style="text-align:center;"><a href="'.WEB_ROOT.'/cheg/account/?view=detail&accId='.$row['acc_id'].'" >'.$row['acc_no'].'</a></td>
    				<td style="text-align:center;">$ '.$row['balance'].'</td>
    				<td style="text-align:center;">'.$atype.'</td>
    				<td style="text-align:center;"><a href="javascript:changeAccStatus('.$row['acc_id'].');"> '.$status.'</a></td>
    				<td style="text-align:center;"><a href="javascript:viewAccountStatement('.$row['id'].','.$row['acc_no'].');">Statement</a></td>
    			</tr>
    			';
    Veuillez donc m'aider s'il vous plaît à corriger ce Bug en permettant de changer à chaque fois qu'on clique sur "Inactive" sous "Account Status", de se changer en "Active" et vice-versa.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu ne nous montres pas le code qui est censé changé la valeur ni la fonction javascript donc c'est difficile de te répondre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Tu ne nous montres pas le code qui est censé changé la valeur ni la fonction javascript donc c'est difficile de te répondre.
    Merci pour votre réponse:

    Voici le Code JS qui gère la fonction qui change le status:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function changeAccStatus(accId, status)
    {
    	var st = status == 'INACTIVE' ? 'Activate' : 'Inactive'
    	if (confirm('Do you want to ' + st+' this Account?')) {
    		window.location.href = 'process.php?action=status&accId=' + accId + '&nst=' + st;
    	}
    }
    Et la fonction PHP de la Page process.php est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    function modifyStatus()
    {
    	  $id		= (int)$_GET['accId'];
        $nst	= $_GET['nst'];
        $status = ($nst == 'Activate') ? 'ACTIVE' : 'INACTIVE';
     
    	$sql	= "UPDATE tbl_accounts SET status = ? WHERE id = ?";  
    	$result = dbQuery($sql,$status,$id);
     
    	$sql1	= "SELECT user_id FROM tbl_accounts WHERE id = ?";  
    	$result1 = dbQuery($sql1,$id);
    	$row = dbFetchAssoc($result1);
    	if(isset($row['user_id'])){
    		$uid = $row['user_id'];
    		$is_active = ($status == 'ACTIVE') ? 'TRUE' : 'FALSE';
    		$sql2	= "UPDATE tbl_users SET is_active = ? WHERE id = ?";  
    		$result2 = dbQuery($sql2,$is_active,$uid);
    	}
    	header('Location: index.php');			  
    }

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu n'as pas mis le statut en paramètre lors de ton appel de la fonction javascript.

    Pour le reste quand même ca serait plus économique de gérer tes status dans la base de données avec 0/1 que ACTIVE/INACTIVE/TRUE/FALSE.

    Il faudrait aussi s'assure que la fonction modifyStatus est bien appellée quelque part.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut
    Franchement, littéralement, je ne comprends vraiment rien.
    Ça m'aiderait si vous m'expliquer à travers des bout de code. SVP

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	$status = ($row['status'] == "INACTIVE")? "Inactive":"Active";
    ...
    	var st = status == 'INACTIVE' ? 'Activate' : 'Inactive'
    ...
    	$status = ($nst == 'Activate') ? 'ACTIVE' : 'INACTIVE';
    ...
    	$is_active = ($status == 'ACTIVE') ? 'TRUE' : 'FALSE';
    • 'INACTIVE', 'Inactive', 'FALSE'
    • 'ACTIVE', 'Active', 'Activate', 'TRUE'
    • $status, st, status, $nst, $is_active,... ?


    C'est vraiment n'importe quoi...

    Ce serait BEAUCOUP plus simple à gérer si en BDD tu enregistrais :
    • 'status' : 0 / 1 (TINYINT)



    N.B. Au fait :
    • 'TRUE' / 'FALSE' sont des chaines de caractères (comme 'tata' ou 'toto')
    • true / false sont des booléens

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut
    Merci à vous.
    Mais comment pourrais-je simplement faire cela en PHP en activant et désactivant un compte sachant que :

    La colonne `status` (avec comme Type un varchar(10) et comme valeur ACTIVE ou INACTIVE des Comptes) est dans la Table `tbl_accounts`

    ET


    La colonne `is_active` (avec comme Type un varchar(10) TRUE si le compte est Active et FALSE si c'est INACTIVE) est dans la Table `tbl_users`.

    Voici le Code entier contenant les requêtes et l'activation/désactivation (Lignes 66 et 73 pour ce qui concerne le STATUS) est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    <?php
    include("includes/connect_db.php");
    $errorMessage = '';
    $result_table = '';
     
    $query = ( !empty($_POST['query']) )? preg_replace("#[^a-z ?0-9]#i", "", $_POST['query']) : '';
     
    if( !empty($query) )
    {
    	$sql_count = "SELECT COUNT(*) ";
    	$sql_search = "SELECT u.id, u.fname, u.lname, a.acc_no, a.balance, a.status, a.bdate, a.type, a.id AS acc_id ";
    	  $sql_from_where = " FROM tbl_accounts a 
    	   INNER JOIN  tbl_users u 
    	   ON u.id=a.user_id 
           WHERE CAST(a.acc_no as CHAR) LIKE ? 
           ORDER BY a.acc_no ";
    	$params = array('%' . $query . '%' );
     
    	$req_count = $db->prepare($sql_count.$sql_from_where);
    	$req_count->execute($params);
    	$count = $req_count->fetchColumn();
     
    	if ($count >= 1)
    	{
    		$result_table .= "$count résultat(s) trouvé(s) pour <strong>$query</strong><hr/>";
     
    		// Construction de la table
    		$result_table .= '
    		<div id="errorCls" style="color:#FF0000 !important;font-size:14px;font-weight:bold;">'.$errorMessage.'</div>
    		<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" class="text">
    			<thead>
    			<tr align="center" id="listTableHeader">
    				<th>User Name</th>
    				<th>Account No.</th>
    				<th>Balance</th>
    				<th style="width:120px;">Account Type</th>
    				<th style="width:80px;">Account status</th>
    				<th style="width:70px;">Statement</th>
    			</tr>
    			</thead>
    			<tbody>
    			';
    		$i=0;
     
    		$req = $db->prepare($sql_search.$sql_from_where);
    		$req->execute($params);
     
    		while( $row = $req->fetch(PDO::FETCH_ASSOC) )
    		{
    			$class = ($i%2)? 'row1' : 'row2';
    			$i++;
     
    			$atype = '';
    			switch($row['type'])
    			{
    				case 'CA':
    					$atype = "Checking Account";
    					break;
    				case 'SA':
    					$atype = "Saving Account";
    					break;
    				case 'FDA':
    					$atype = "Fixed deposit Account";
    					break;
    			}
    			$status = ($row['status'] == "INACTIVE")? "Inactive":"Active";
    			$result_table .= '
    			<tr class="'.$class.'">
    				<td align="center">'.$row['fname'] .' '.$row['lname'].'</td>
    				<td style="text-align:center;"><a href="'.WEB_ROOT.'/cheg/account/?view=detail&accId='.$row['acc_id'].'" >'.$row['acc_no'].'</a></td>
    				<td style="text-align:center;">$ '.$row['balance'].'</td>
    				<td style="text-align:center;">'.$atype.'</td>
    				<td style="text-align:center;"><a href="javascript:changeAccStatus('.$row['acc_id'].');"> '.$status.'</a></td>
    				<td style="text-align:center;"><a href="javascript:viewAccountStatement('.$row['id'].','.$row['acc_no'].');">Statement</a></td>
    			</tr>
    			';
     
    		} // fin while
     
    		$result_table .= '
    			</tbody>
    		</table>
    		<hr />
    			';
     
    	} // fin si $count >= 1
    	else {
    		$result_table = "Il n'y a aucun résultat trouvé pour le Numéro de compte: <strong>$query</strong><hr/>";
    	}
    }
    ?>
    Veuillez m'aider svp à activer/désactiver un compte Utilisateur en Passant par PHP au lieu de JS qui pose déjà problème.
    Merci d'avance.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    La colonne `status` (avec comme Type un varchar(10) et comme valeur ACTIVE ou INACTIVE des Comptes) est dans la Table `tbl_accounts`
    1- C'est justement ça qu'il faut changer en TINYINT(2), avec pour valeurs 0 ou 1.
    2- Idem pour la colonne `is_active`.

    Bref : tes tables SQL sont mal conçues.
    C'est pour ça que tu galères.

    3- ça ne sert à rien de te donner des "bouts de code" : tu ne sais pas quoi en faire...

    La programmation, ça s'apprend.
    Il ne suffit pas de copier-coller les codes des autres.

  9. #9
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Cheboy.
    Si tu veux apprendre, tu es le bienvenu.
    Et si tu ne sais pas ce qu'est une fonction, ce qu'est un parametre de fonction, dans une fonction javascript, bon, tu demandes franchement et on te met un lien vers un tuto.
    Citation Envoyé par sabotage Voir le message
    Tu n'as pas mis le statut en paramètre lors de ton appel de la fonction javascript.
    Car si ça, c'est du chinois pour toi, c'est qu'il te faut commencer par les bases.
    Mais là, tu arrives avec des codes développés par d'autres et tu nous demandes comment les faire tourner pour toi... Moi, je suis pas d'accord.
    Ici on n'aide que ceux qui veulent s'aider. J'aime bien cette formule (de rawsrc ?)
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

Discussions similaires

  1. Bug dans mon application, sauriez-vous y regarder svp
    Par beegees dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 28/12/2008, 11h59
  2. [AIDEZ MOI SVP] enregistrer une table dans une base de donné
    Par progfann dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 06/06/2007, 09h18
  3. Je vois pas d'où vient mon erreur!! Aidez moi SVP
    Par liliboms dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 04/04/2005, 08h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo