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

JavaScript Discussion :

Récupérer un ID de table avec AJAX vers PHP


Sujet :

JavaScript

  1. #21
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Merci beaucoup loralina,

    je vais tester pas à pas tes suggestions.
    Mais du coup, une question me taraude, je suis moins à l'aise en AJAX qu'avec PHP...
    Je suppose que je vais devoir créer une boucle pour afficher toutes les sous-catégories ayant pour ID commune categorie_id.
    Je vois comment définir la boucle d'affichage sous PHP, mais comment puis-je écrire cette boucle côté JAVASCRIPT en AJAX ?

  2. #22
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    Citation Envoyé par karpe Voir le message
    Je suppose que je vais devoir créer une boucle pour afficher toutes les sous-catégories ayant pour ID commune categorie_id.
    Oui, c'est ce que j'ai dit :
    "Il faudra faire une boucle pour générer le html des sous-catégories, deux possibilités :
    a) Faire une chaîne du code html et l'insérer avec innerHTML (ou équivalent Jquery) dans la balise conteneur des sous-catégories.
    b) Créer des éléments html et les ajouter dans l'arborescence de la balise conteneur."
    Je vois comment définir la boucle d'affichage sous PHP, mais comment puis-je écrire cette boucle côté JAVASCRIPT en AJAX ?
    Pour la version chaîne, c'est dans ce genre là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var ar_=[1,2,3];
    var st_html="";
    var i=-1;
    while(++i<ar_.length) //ou une boucle for
    	{
    	st_html+="<div>"+ar_[i]+"</div>";
    	}
    Cette chaîne, on la met ensuite dans la balise qui contiendra les sous-catégories.

  3. #23
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Hello Loralina,

    Je t'embête encore un peu et j'en suis désolé. Je crois que je perd le fil complet...
    J'ai réussi à faire ma initiale avec un INNER JOIN et effectuer un affichage pas parfait du tout.

    Citation Envoyé par Loralina Voir le message
    Attention, la requête n'est pas protégée contre les injections, ce sera à sécuriser.

    Mais moi, je ferais deux requêtes :
    - Une requête sur la table "categories". On met le résultat dans la variable $row.
    - Une requête sur la table "souscategories". Dans la variable $row on ajoute une clé $row['souscategories'] et on y affecte un array des résultats de cette seconde requête.

    Du coup je test ta méthode des deux requêtes distinctes, une pour categorie et l'autre pour les sous catégorie mais je merdouille dans l'encodage Json. Plus rien ne s'affiche.

    Saurrais-tu me dire ce qui coince dans la syntaxe de l'encodage...

    Code php : 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
    <?php 	
     
    require_once 'core.php';
     
    $categoriesId = $_POST['categoriesId'];
     
     
    $sql = "SELECT categories.categories_id,categories.categories_nom, categories.categories_statut, categories.categories_active
    		FROM categories WHERE categories_id = $categoriesId"; 
    $result = $connect->query($sql);		
     
    if($result->num_rows > 0) { 
     $row = $result->fetch_array();
    } // if num_rows
     
     
     
    $sql2 = "SELECT souscategories.categories_id,souscategories.categories_nom, souscategories.souscategories_id, souscategories.souscategories_nom
    		FROM souscategories WHERE souscategories.categories_id = $categoriesId"; 
    $result2 = $connect->query($sql2);
     
     
    if($result2->num_rows > 0) { 
     $row2 = $result2->fetch_array();
    } // if num_rows
     
    $connect->close();
     
    echo json_encode(array($row,$row2));

    P.S : Suite à un changement d'activité cela faisait des années que je n'avais pas fais de développement...et je tenais à te remercier grandement de l'appui que tu m'apportes.
    Ruddy

  4. #24
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    Voilà un premier jet :
    Code php : 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
    <?php
    require_once 'core.php';
    $categoriesId=$_POST['categoriesId'];
    $result=$connect->query(
    	'SELECT categories_id, categories_nom, categories_active, categories_statut '.
    	'FROM categories '.
    	'WHERE categories_id='.$categoriesId);
    if($result->num_rows>0)
    	{
    	$row=$result->fetch_array(MYSQLI_ASSOC);
    	$result=$connect->query(
    		'SELECT souscategories_id, souscategories_nom '.
    		'FROM souscategories '.
    		'WHERE categories_id='.$categoriesId);
    	$row['souscategories']=$result->fetch_all(MYSQLI_ASSOC);
    	echo json_encode($row);
    	}
    ?>
    Idéalement :
    - Il faudrait gérer proprement tous les cas d'erreur.
    - Sécuriser les requêtes : http://php.net/manual/fr/security.da...-injection.php

  5. #25
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Merci Loralina pour la doc concernant la sécurisation des requêtes.
    J'y travaille à toutes les sécurisés.

    J'ai encore une question concernant l'affichage de ma boucle js.

    Je ne récupère plus cette valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // var ar_=[1,2,3];
    // var st_html="";
    // var i=-1;
    // while(++i<ar_.length) //ou une boucle for
    //	{
    //	st_html+="<div>"+ar_[i]+"</div>";
    //	}
    $("#editSousCategoriesName").val(response.souscategories_nom);
    Voici ce que j'ai côté html de ma page categorie.php
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     <div id="ConteneurEditSousCategorie">	
     
    		      	<div class="form-group">
    		        	<label for="editSousCategoriesName" class="col-sm-4 control-label">Sous-Catégorie: </label>
    		        	<label class="col-sm-1 control-label">: </label>
    					    <div class="col-sm-7">
    					      <input type="text" class="form-control" id="editSousCategoriesName" placeholder="Nom de la Sous-catégorie" name="editSousCategoriesName" autocomplete="off">
    					    </div>
    		        </div> <!-- /form-group-->	
    </div>

    Sûrement dû à l'encodage Json de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $row['souscategories']=$result->fetch_all(MYSQLI_ASSOC);
    	echo json_encode($row);
    EDIT : Je sens que j'approche mais toujours pas de résultat qui s'affiche...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         var sscat = response['souscategories']['souscategories_nom'];
       			$("#editSousCategoriesName").innerHTML = +sscat;
    D’où ma question, comment puis-je maintenant bouclé et récupérer la liste des sous-catégories ? Le reste des infos est bien récupérée mais pas cette liste de sous catégories ...
    je me tire les cheveux sur cette partie modification de sous categories. Merci encore pour l'aide que tu m'apportes.

  6. #26
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Bon j'ai réussi à afficher toutes les sous catégories à modifier d'une catégorie.

    seulement, maintenant que je souhaite faire un UPDATE , plus rien ne se passe et la modification des enregistrements ne se fait pas.

    saurais-tu me dire ce qui coince dans ma boucle for dans modifiercategorie.php ?

    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
    if($_POST) {	
     
    	$brandName = addslashes($_POST['editCategoriesName']);
      $brandStatus = $_POST['editCategoriesStatus']; 
      $categoriesId = $_POST['editCategoriesId'];
     
      $souscategoriesId = $_POST['editSousCategoriesId'];
      $souscategoriesName = addslashes($_POST['editSousCategoriesName']);
     
     
    	$sql = "UPDATE categories SET categories_nom = '$brandName', categories_active = '$brandStatus' WHERE categories_id = '$categoriesId' AND categories_statut='1'";
     
    // Jusque là c'est OK
     
    	if($connect->query($sql) === TRUE) {
     
     
    		for($x = 0; $x < count($_POST['editSousCategoriesId']); $x++) {					
     
    			$updateSousCatSql = "SELECT * FROM souscategories WHERE souscategories.categories_id = '$categoriesId'";
    			$updateSousCatData = $connect->query($updateSousCatSql);			
     
     
    			while ($updateSousCatResult = $updateSousCatData->fetch_row()) {
     
    				$updateSSCAT[$x] = $_POST['editSousCategoriesName'][$x];			
    					$updateSousCatTable = "UPDATE souscategories SET souscategories.souscategories_nom = '".$updateSSCAT[$x]."' WHERE souscategories.souscategories_id = ".$_POST['editSousCategoriesId'][$x]."";
    					$connect->query($updateSousCatTable);
     
    			} // while	
    		} // /for quantity
     
     
    	 	$valid['success'] = true;
    		$valid['messages'] = "Modifier avec succès";	
    	} else {
    	 	$valid['success'] = false;
    	 	$valid['messages'] = "Erreur lors de la modification";
    	}
     
    	$connect->close();
     
    	echo json_encode($valid);
     
    } // /if $_POST
    Une structure HTML d'une sous-categorie.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <div class="form-group">
    <label for="editSousCategoriesName" class="col-sm-4 control-label">Sous-catégorie 1</label>
    <label class="col-sm-1 control-label">: </label>
    <div class="col-sm-6">
    <input class="form-control" id="editSousCategoriesName[69]" name="editSousCategoriesName[69]" placeholder="SousTestH1" value="SousTestH1" type="text">
    <input name="editSousCategoriesId[69]" id="editSousCategoriesId[69]" value="69" type="hidden">
    </div>
    <div class="col-sm-1">
    <button class="btn btn-default removeProductRowBtn" type="button" id="removeProductRowBtn" onclick="removeProductRow('69')"><i class="glyphicon glyphicon-trash"></i></button>
    </div>
    </div>
    <!-- /form-group-->

  7. #27
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    A première vue, pour que ce soit fonctionnel, il faut juste remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($x = 0; $x < count($_POST['editSousCategoriesId']); $x++) {
    (remarque : attention, à chaque tour de boucle, la longueur est recalculée, à éviter !)

    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($_POST['editSousCategoriesId'] as $x=>$editSousCategoriesId) {
    En effet, dans l'exemple html, il est écrit editSousCategoriesId[69].
    Donc on va retrouver $_POST['editSousCategoriesId'][69].
    Or votre boucle regarde la valeur $_POST['editSousCategoriesId'][0] qui n'existe pas.


    Ensuite, si vous avez le temps, il faudrait grandement remanier :

    Ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $brandName = addslashes($_POST['editCategoriesName']);
    Il n'y aura pas besoin de addslashes si vous faîtes une requête préparée, ce qui au passage sécurisera la requête.
    http://php.net/manual/fr/mysqli.prepare.php

    Ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $updateSousCatSql = "SELECT * FROM souscategories WHERE souscategories.categories_id = '$categoriesId'";
    Cette requête et le while qui suit me semblent inutiles.
    Vous pouvez toujours ajouter une condition sur l'identifiant de la catégorie dans le WHERE de la requête de mise à jour des sous-catégories, ça rajoutera une petite sécurité histoire d'être sûr qu'on cherche bien à modifier une sous-catégorie de la bonne catégorie (ce qui est le cas pour une utilisation normale de votre site).

    Etc., etc., etc., il y a plein de choses à dire, mais je ne peux pas y passer trop de temps.

  8. #28
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Hello Loralina,

    Tout d'abord je tiens à te remercier pour ton aide et conseil. Je suis bien conscient de prendre de ton temps et je m'en excuse.
    J'avance, c'est sûre mais je bloque toujours avec la gestion de mes sous catégories.
    Nom : Capture du 2018-03-12 23-02-45.png
Affichages : 329
Taille : 66,5 Ko
    Je mets ici mon code brut et le détail ci-après. En espérant que ton oeil avisé puisse m'extirper de cette situation

    modifiercategorie.php
    Code php : 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
    <?php 	
     
    require_once 'core.php';
     
    $valid['success'] = array('success' => false, 'messages' => array());
     
     
     
     
    $brandName = addslashes($_POST['editCategoriesName']);
    $brandStatus = $_POST['editCategoriesStatus']; 
    $categoriesId = $_POST['editCategoriesId'];
     
    //$editSousCategoriesId = $_POST['editSousCategoriesId'];
     
    if (isset($_POST)) {
     
     
    /* MAJ DE LA CATEGORIE */
     
    	$sql = "UPDATE categories SET categories_nom = '$brandName', categories_active = '$brandStatus' WHERE categories_id = '$categoriesId' AND categories_statut='1'";
     
     
    	if($connect->query($sql) === TRUE) {
     
     
    /* AJOUT D'UNE NOUVELLE SOUS CATEGORIE */
     
    		if(isset($_POST['NewsousCategoriesName']) && $_POST['NewsousCategoriesName'] != ''){
     
    			for($x = 0; $x < count($_POST['NewsousCategoriesName']); $x++) {	
     
    						$souscategoriesSql = "INSERT INTO souscategories (categories_id, categories_nom, souscategories_nom) 
    						VALUES ('$categoriesId', '$brandName', '".$_POST['NewsousCategoriesName'][$x]."')";
     
    						$connect->query($souscategoriesSql);		
     
    						}		
    			}
     
     
    /* MAJ DES SOUS CATEGORIE */
     
    /*
    $sth = $connect->prepare("UPDATE souscategories SET souscategories_id ='$souscategorie_id' WHERE categories_id = '$categoriesId'");
     
    	foreach ($_POST['editSousCategoriesId'] as $id => $souscategorie_id) {
    		$sth->execute(array($souscategorie_id, $_POST['editSousCategoriesName'][$id]));
    	}
    */
     
     
     
    	 	$valid['success'] = true;
    		$valid['messages'] = "Modifier avec succès";	
    	} else {
    	 	$valid['success'] = false;
    	 	$valid['messages'] = "Erreur lors de la modification";
    	}
     
    	$connect->close();
     
    	echo json_encode($valid);
     
    } // /if $_POST

    La structure HTML de mes sous categorie

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <div class="form-group">
    <label for="editSousCategoriesName" class="col-sm-4 control-label">Sous-catégorie 1</label>
    <label class="col-sm-1 control-label">: </label>
    <div class="col-sm-6">
    <input class="form-control" id="editSousCategoriesName[69]" name="editSousCategoriesName[69]" placeholder="SousTestH1" value="SousTestH1" type="text">
    <input name="editSousCategoriesId[69]" id="editSousCategoriesId[69]" value="69" type="hidden">
    </div>
    <div class="col-sm-1">
    <button class="btn btn-default removeProductRowBtn" type="button" id="removeProductRowBtn" onclick="removeProductRow('69')"><i class="glyphicon glyphicon-trash"></i></button>
    </div>
    </div>
    <!-- /form-group-->

    et celle pour l'ajout d'une nouvelle sous catégorie
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    								<label for="NewsousCategoriesName" class="col-sm-4 control-label">Nouvelle Sous-catégorie 1 </label>
    			        			<label class="col-sm-1 control-label">: </label>
     
    							   <div class="col-sm-6">
    							    			<input class="form-control" id="NewsousCategoriesName1" placeholder="Nom de la nouvelle sous-catégorie1" name="NewsousCategoriesName[]" autocomplete="off" type="text">
    					  			</div>
     
    					   <div class="col-sm-1">
    					    			<button class="btn btn-default removeNewProductRowBtn" type="button" id="removeNewProductRowBtn" onclick="removeNewProductRow(1)"><i class="glyphicon glyphicon-trash"></i></button>
    				  		</div>

    Premier problème Lorsque j’essaie de mettre à jour mon formulaire et que je ne renseigne pas de nouvelle sous-catégorie, une nouvelle ligne vide s'insère quand même dans ma base. Comment puis-je lui dire de ne pas faire d'enregistrement si mon champs est vide ? J'ai bien essayé avec ça : if(isset($_POST['NewsousCategoriesName']) && $_POST['NewsousCategoriesName'] != '')mais ça ne change rien ?!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /* AJOUT D'UNE NOUVELLE SOUS CATEGORIE */
     
    		if(isset($_POST['NewsousCategoriesName']) && $_POST['NewsousCategoriesName'] != ''){
     
    			for($x = 0; $x < count($_POST['NewsousCategoriesName']); $x++) {	
     
    						$souscategoriesSql = "INSERT INTO souscategories (categories_id, categories_nom, souscategories_nom) 
    						VALUES ('$categoriesId', '$brandName', '".$_POST['NewsousCategoriesName'][$x]."')";
     
    						$connect->query($souscategoriesSql);		
     
    						}		
    			}
    Deuxième problème : j'ai bien essayé ce bout de code pour faire l'UPDATE des sous catégories existantes mais rien ne se passe. Le formulaire foire et aucun enregistrement ne se passe. Je ne vois pas ce qui ne va pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /* MAJ DES SOUS CATEGORIE */
     
    /*
    $sth = $connect->prepare("UPDATE souscategories SET souscategories_id ='$souscategorie_id' WHERE categories_id = '$categoriesId'");
     
    	foreach ($_POST['editSousCategoriesId'] as $id => $souscategorie_id) {
    		$sth->execute(array($souscategorie_id, $_POST['editSousCategoriesName'][$id]));
    	}
    */

  9. #29
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    Je réponds une dernière fois.
    Le premier problème, je ne l'ai même pas lu, je passe donc au second.
    Je ne vais pas encore donner la solution, ce serait trop facile.

    Je ne vois pas ce qui ne va pas...
    C'est acceptable à condition d'avoir fait le minimum d'analyse, de recherche et de tests.
    Simplement regarder le code et constater que ça ne va pas avec un simple test du script depuis le site ne mènera pas loin, hélas...

    Honnêtement :

    1) Avez-vous bien regardé le lien que j'ai indiqué :
    http://php.net/manual/fr/mysqli.prepare.php

    Trouvez-vous que votre code ressemble à l'exemple ?
    Comparons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //l'exemple de la documentation
    $stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")
     
    //votre code
    $sth = $connect->prepare("UPDATE souscategories SET souscategories_id ='$souscategorie_id' WHERE categories_id = '$categoriesId'");
    Même en n'y comprenant rien, ne voyez-vous pas une différence au niveau des variables dans les requêtes ?

    Ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //l'exemple de la documentation
    $stmt->bind_param("s", $city);
    $stmt->execute();
     
    //votre code
    $sth->execute(array($souscategorie_id, $_POST['editSousCategoriesName'][$id]));
    Pareil ou différent ?
    Avez-vous été voir la fonction execute, vers laquelle un lien figure dans la page que j'ai donnée :
    http://php.net/manual/fr/mysqli-stmt.execute.php

    2) Avez-vous testé votre script directement dans le navigateur pour voir les erreurs ?
    http://.../fichier.php

    3) Avez-vous essayé des données de test ?
    Exemple, en début de script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $_POST=
    	[
    	'editSousCategoriesId'=>[69,70],
    	'editSousCategoriesName'=>['nom69','nom70']
    	];
    A compléter avec toutes les données requises, puis à tester directement dans le navigateur.

    4) Affichez-vous les variables pour voir leur valeur ?
    Au minimum, vous pouvez utiliser echo que vous connaissez déjà.
    Sinon var_dump est pratique, exemple : var_dump($_POST);.
    Dans la suite, affichez un maximum de données : la requête ainsi que les index et les valeurs dans la boucle.
    Affichez aussi tout message d'erreur de la requête.
    Etes-vous en mesure de trouver avec un moteur de recherche et/ou la documentation comment afficher une erreur de requête en utilisant mysqli ?
    Je viens de tester sur google, en tapant deux mots clés (évidents), j'ai la réponse dès le premier lien.


    Quand je lis vos messages, je ne vois pas de : "voilà, j'ai affiché telle valeur et j'ai ceci" ou "la requête me donne telle erreur".
    Votre approche est trop abstraite et globale.
    Il faut tester les scripts indépendamment les uns des autres, avec des valeurs de tests, afficher les variables, voir les erreurs des requêtes etc.

    En faisant tout ceci, si ça ne marche toujours pas, et bien réfléchissez encore un peu avant de venir demander de l'aide.
    Cela va prendre un peu plus de temps au début, mais très vite, vous deviendrez plus autonome et avancerez beaucoup plus vite.

  10. #30
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Ok Merci Loralina,
    je te le redis je ne suis pas développeur. j’essaie de comprendre, je passe actuellement tout mon temps dessus en dehors de mon travail. Je fais beaucoup de concession pour arriver à faire fonctionner cet outil.
    Je regarderai donc ton analyse ce soir après le travail et ferai des tests en conséquence.
    si tu as une astuce pour mon problème n°1 de champs vide qui s'enregistre, je suis preneur.
    je ne t’embêterai plus après ça
    Merci beaucoup.

  11. #31
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    Citation Envoyé par karpe Voir le message
    si tu as une astuce pour mon problème n°1 de champs vide qui s'enregistre, je suis preneur.
    je ne t’embêterai plus après ça
    Ca me va.

    je te le redis je ne suis pas développeur.
    Je sais, mais il n'est pas question de développement quand je parle d'afficher des variables ou de tester le script dans le navigateur avec des valeurs de test sans passer par le site.
    Et puis, il ne faut pas systématiquement supposer que ça va être compliqué.
    La preuve encore une fois avec le premier problème :

    Dans le code d'ajout d'une sous-catégorie, vous faîtes une boucle sur $_POST['NewsousCategoriesName'].
    $_POST['NewsousCategoriesName'] est donc visiblement un Array (un tableau) contenant des noms de sous-catégories.

    Or, avec quoi comparez-vous ce tableau ?
    Avec une String (une chaîne) : $_POST['NewsousCategoriesName'] != ''.
    Ca n'a pas de sens, c'est aussi simple que ça.

    Or, si comme je le dis, vous affichez la valeur de $_POST['NewsousCategoriesName'], vous voyez instantanément que ce n'est jamais une chaîne vide.
    C'est un Array.
    Il s'agirait plutôt de regarder un à un les éléments de ce tableau pour voir s'ils sont vides.
    Par exemple, regarder si $_POST['NewsousCategoriesName'][0] est une chaîne vide.

    Par ailleurs, il faut être plus clair :
    Le titre de votre code c'est : "/* AJOUT D'UNE NOUVELLE SOUS CATEGORIE */"

    Une seule possible ? Ou il peut arriver qu'il y en ait plusieurs en même temps ?
    En effet, le code contient une boucle sur un tableau, ce qui laisse penser qu'on pourrait en ajouter plusieurs à la fois.

    Mais, si c'est maximum une sous-catégorie, pourquoi utiliser un tableau ?
    Autant alors remplacer name="NewsousCategoriesName[]" par name="NewsousCategoriesName" et adapter le code en conséquence (plus de boucle et plus de tableau donc).


    Concernant le fait de savoir si on a cliqué sur le bouton pour ajouter une sous-catégorie, le mieux est vraiment d'examiner si le bouton a été cliqué.
    Si le bouton est de type submit et qu'il a un attribut name, vous allez le retrouver dans $_POST quand on clique dessus.
    Il faut tester isset($_POST['nom_du_bouton']).
    Il y a aussi la possibilité de mettre à jour au moment du clic la valeur d'un champ caché indiquant si le bouton a été cliqué, dans le cas où le bouton n'est pas de type "submit".
    Si les échanges avec le serveur sont plutôt gérés sans rechargement avec XMLHttpRequest, il faut rajouter une variable "action" indiquant quel bouton a été cliqué.
    Il y a aussi l'alternative d'appeler un script php différent selon le bouton cliqué.

  12. #32
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    J'envoi ce bout de code comme une bouteille à la mer. J'ai beau passer des heures à essayer de comprendre je n'y arrive pas.
    Tu vas rire de ce bout de code mais rien en sort. Après des dizaines et des dizaines de remaniements du code, j'suis pas plus avancé.
    j'ai lu pas mal de choses sur PDO, les execute et prepare. même si je ne trouve pas l'exemple concret qui m'aiderai à faire cette boucle pour insérer les nouvelles sous-catégories (car oui il peut y en avoir plusieurs). Tout mes tests ont échoué et je songe sérieusement à abdiquer.
    je vois que tu fais preuve de pédagogie mais maintenant ce que j'aimerai c'est avancé, j'ai besoin de connaître la réponse.
    Code php : 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
    if (isset($_POST)) {	
     
    	$CatName = $_POST['editCategoriesName'];
    	$CatStatus = $_POST['editCategoriesStatus'];
    	$CatID = $_POST['editCategoriesId'];
    	$SousCatName = $_POST['editSousCategoriesName'];
    	$SousCatId =  $_POST['editSousCategoriesId'];
    	$NewSousCatName = $_POST['NewsousCategoriesName'];
     
     /* UPDATE CATEGORIE OK */
    /* 
    	$sth = $connect->prepare("UPDATE categories SET categories_nom = ?, categories_active = ? WHERE categories_id = ? AND categories_statut = 1");
    	$sth->bind_param('sss',$CatName,$CatStatus,$CatID);
    	$sth->execute();
    */ 
     
     /* UPDATE SOUS CATEGORIE NOK */
    /*	
    	$sth2 = $connect->prepare("UPDATE souscategories SET souscategories_nom = ? WHERE souscategories_id = ?"); //ok
    	$sth2->bind_param('ss',$SousCatName,$SousCatId);//ok
    	foreach ($_POST['editSousCategoriesName'] as $id => $value) {
    		$sth2->execute(array($id, $value));
    	}
     
    //	var_dump($sth2);	 
     
    */	
     
     
     /* AJOUT NOUVELLE SOUS CATEGORIE NOK */
     
    $sth3 = $connect->prepare("INSERT INTO souscategories (categories_id, categories_nom, souscategories_nom) VALUES (?, ?, ?)");
    $sth3->bindParam(1, $CatID);
    $sth3->bindParam(2, $CatName);
    $sth3->bindParam(3, $NewSousCatName);
    $sth3->execute(array($CatID, $CatName, $NewSousCatName));
     
    //	var_dump($sth3);

    var_dump ne me renvoie rien et le test dans le navigateur m'informe d'une erreur bindParam
    Fatal error: Call to undefined method mysqli_stmt::bindParam() in /home/ruddy/HTML/GESTION DE STOCK/stock_FR_V26/php_action/modifierCategorie.php on line 45
    Voilà ou j'en suis. connais-tu la manière de concevoir ma requête ?
    Si oui serait tu à même de bien vouloir me la communiquer ?

  13. #33
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tu ne tiens AUCUN compte des corrections qu'on te donne...

    Sabotage t'avait donné un code "tout fait", qu'il suffisait de copier-coller.

    Là, idem.

    Bref, si tu ne fais pas d'efforts de ton côté, ça ne sert à rien.

    Repars de zéro, et construit un code propre !

  14. #34
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Pas la peine d'être désobligeant juste pour le plaisir de l'être.

    Comme déjà mentionné, je l'ai testé, testé et retesté le code de Sabotage.
    Je me suis documenté et ajouté le bind_param (non mentionné initialement) qui a fait que la requête MAJ des catégorie à fini par fonctionnait.
    Ma requête de MAJ des sous-catégories, elle, ne fonctionnait et ne fonctionnera pas avec le code que m'avais fourni initialement sabotage.
    Alors merci de m'enfoncer dans mon ignorance et croire que je m'entête à ne pas vouloir faire un copier/coller.
    Au final je pense simplement ne pas avoir ma place ici et que je devrais arrêter toute iniative pour reprendre mon metier de cariste. Donc je préfère arrêter là.
    Amitiés.

  15. #35
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    il ne faut pas le prendre comme ça.

    1- Tu veux aller trop vite et brûles les étapes.
    Tu manques de bases solides.
    avant de vouloir courir, on apprend d'abord à se mettre debout, puis à marcher.

    Il faut commencer par un exercice SIMPLE !

    2- Tu mélanges les syntaxes PDO* et mysqli_.
    L'informatique ne supporte pas l'à-peu-près.

    3- La syntaxe fournie par sabotage était CORRECTE.
    (même si elle "ne fonctionnait pas" dans TON code)

    Il aurait été préférable que tu en étudies la SYNTAXE.


    * PDO autorise PLUSIEURS SYNTAXES différentes ! RELIS le TUTO : Comprendre PDO
    Il faut juste choisir la bonne, au bon moment !


    Bref :
    1. on peut t'apporter de l'aide, mais on ne peut pas apprendre à ta place
    2. si tu apprends les bases, tu comprendras mieux les corrections qu'on te donne et tu pourras en tirer profit

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [AJAX] Reload avec Ajax vers une autre page .php
    Par Rony Rauzduel dans le forum AJAX
    Réponses: 3
    Dernier message: 11/10/2012, 09h36
  2. Récupérer la liste des tables avec HSQLDB
    Par Kerod dans le forum JDBC
    Réponses: 1
    Dernier message: 23/02/2009, 17h48
  3. [AJAX] afficher le contenu d'une table avec ajax
    Par anouarsurvive dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/10/2008, 12h26
  4. afficher le contenu d'une table avec ajax
    Par anouarsurvive dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/10/2008, 11h11
  5. [AJAX] Ajout de lignes dans une table avec Ajax
    Par Tententai dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/11/2007, 15h54

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