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

PHP & Base de données Discussion :

Enregistrement de la 1ere ligne du tableau uniquement


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 26
    Par défaut Enregistrement de la 1ere ligne du tableau uniquement
    Bonjour tout le monde, voila ça fait plusieurs fois que je poste la même question sans vraiment avoir de réponses concrètes, malheureusement je suis en stage et je finis vendredi et sans ça je ne peux pas finir mon projet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	function modifier_produit_prestashop($key){
    		$sql3 =  mysql_query("SELECT id_product FROM ps_product LIMIT 7");
    		print_r($sql3);
    		$r = mysql_fetch_array($sql3);
    		print_r($r);
    			foreach($r as $key2){
    				print_r($key2);
    				$sql5 = mysql_query("update ps_product set price = '".$key."' where id_product = '$key2'");	
    			}
    	}
    Je dispose d'une fonction donnée si dessus en premier je fais un select qui est censé me récupérer 7 id. Je les stocke dans un tableau avec un mysql_fetch_array ensuite je parcours ce tableau et pour chaque valeur contenue je fais un update en fonction de ce que j'ai récupéré, seulement quand je lance ma requête il ne prend que la première valeur et ne modifie que celle là avec la dernière valeur de mon array définit comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $output3 = str_replace(",", ".", $output3);
    	$output3 = str_replace("€", "", $output3);
    	$output3 = array_filter($output3);
    	var_dump($output3);
    	array_walk($output3, 'modifier_produit_prestashop');
    Pour simplifier ma requête fais ceci :

    $sql3 sélectionne 1,2,3,4,5,6,7
    mon $output3 contient toto, titi, tata, tutu, toutou, trutru, troutrou, tratra
    $sql5 update en faisant 1, tratra au lieu de faire:

    1 => toto
    2 => titi
    3 => tata
    etc... (Je précise que les nom tata, titi vont venir modifier un champ dans ma bd, en fonction du numéro)

    Pourquoi il se passe ceci quelle erreur j'ai commis pour arriver à ce résultat?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Par défaut
    remplace ton foreach($r as $key2) par

    while($key2 = mysql_fetch_array($sql3))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function modifier_produit_prestashop($key){
    		$sql3 =  mysql_query("SELECT id_product FROM ps_product LIMIT 7");
    		print_r($sql3);
    		$r = mysql_fetch_array($sql3);
    		print_r($r);
    			while($key2 = mysql_fetch_array($sql3)){
    				print_r($key2);
    				$sql5 = mysql_query("update ps_product set price = '".$key."' where id_product = '".$key2[0]."'");	
    			}
    	}

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 26
    Par défaut POURQUOI CELA NE FONCTIONNE PAS!
    Tout d'abord merci de m'avoir répondu, ensuite j'ai fait comme tu m'as dis donc il modifie bien en fonction de ce que je récupère mais il ne prend que la dernière données de mon tableau, tu saurais pourquoi cela fait ça?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Par défaut
    essai donc ce code et puis dis moi ce que tu as comme résultats dans ta base et à l'ecran :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function modifier_produit_prestashop($key){
    		$sql3 =  mysql_query("SELECT id_product FROM ps_product LIMIT 7");
    		print_r($sql3);
    		$r = mysql_fetch_array($sql3);
    		//print_r($r);
    			while($key2 = mysql_fetch_array($sql3)){
    				echo $key2[0];
    				mysql_query("update ps_product set price = '".$key."' where id_product = '".$key2[0]."'");	
    			}
    	}

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 26
    Par défaut POURQUOI CELA NE FONCTIONNE PAS!
    J'obtiens ça sur mon écran = Resource id #14392393394395396397Resource id #15392393394395396397Resource id #16392393394395396397Resource id #17392393394395396397Resource id #18392393394395396397Resource id #19392393394395396397Resource id #20392393394395396397

    et dans ma base j'ai :

    0.000000
    1.650000
    1.650000
    1.650000
    1.650000
    1.650000
    1.650000

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Par défaut
    C'est bon donc?

    puisque le prix est mis à jour pour les 7 valeurs

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 26
    Par défaut POURQUOI CELA NE FONCTIONNE PAS!
    Bah non il est mit a jour que pour 6 alors que j'ai 7 variables à mettre à jour et de plus j'ai différents prix dans mon tableau que voici :

    1 => string ' 0.19' (length=5)
    3 => string ' 0.19' (length=5)
    5 => string ' 0.22' (length=5)
    7 => string ' 0.14' (length=5)
    9 => string ' 0.18' (length=5)
    11 => string ' 1.65' (length=5)
    13 => string ' 1.65' (length=5)

    J'ai passé un filtre pour enlever les lignes vides.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Par défaut
    c'est normal

    puisque tu as déjà utilisé fetch_array une fois en l'affectant à $r, ta boucle de mise à jour commence à partir de 1 à 7 et non de 0 à 7

    maintenant essai ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function modifier_produit_prestashop($key){
    		$sql3 =  mysql_query("SELECT id_product FROM ps_product LIMIT 7");
    		//print_r($sql3);
    		//$r = mysql_fetch_array($sql3);
    		//print_r($r);
    			while($key2 = mysql_fetch_array($sql3)){
    				echo $key2[0];
    				mysql_query("update ps_product set price = '".$key."' where id_product = '".$key2[0]."'");	
    			}
    	}
    et là tu auras toutes les 7 lignes mis à jour.

    N'oublies pas que fetch_array te renvoies une seule ligne de résultat à la lecture puis la met dans un array, et c'est pour cela qu'on a utilisé le while.

    Mais attention tu semble avoir un prix différent pour chaque article, mais ta fonction attribue un prix unique $key à chaque article.
    Peux tu mieux expliquer ce que tu veux faire?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 26
    Par défaut POURQUOI CELA NE FONCTIONNE PAS!
    Merci beaucoup pour tes conseils, je vais tester ça tout de suite. Ce que je cherche a faire c'est ça en ce moment j'ai 7 numéros de produit comme ceci:

    398
    399
    400
    401
    402
    403
    404

    Ces numéros sont créés de façon automatique le champ est en auto_incrementation

    mon tableau de prix contient ceci :

    1 => string ' 0.19' (length=5)
    3 => string ' 0.19' (length=5)
    5 => string ' 0.22' (length=5)
    7 => string ' 0.14' (length=5)
    9 => string ' 0.18' (length=5)
    11 => string ' 1.65' (length=5)
    13 => string ' 1.65' (length=5)

    et je cherche a faire :

    398 1 => string ' 0.19' (length=5)
    399 3 => string ' 0.19' (length=5)
    400 5 => string ' 0.22' (length=5)
    401 7 => string ' 0.14' (length=5)
    402 9 => string ' 0.18' (length=5)
    403 11 => string ' 1.65' (length=5)
    404 13 => string ' 1.65' (length=5)

  10. #10
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Par défaut
    Ahhhh voilà j'ai compris.

    ce qu'il te faut c'est parcourir ta variable output et à chaque lecture tu dois faire un fetch et puis tu fais ton association donc je reprends ton code dès ton premier message.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $output3 = str_replace(",", ".", $output3);
    	$output3 = str_replace("€", "", $output3);
    	$output3 = array_filter($output3);
    $sql3 = mysql_query("SELECT id FROM OP LIMIT 7");
     
    foreach($output3 as $output){
    $key2=mysql_fetch_row($sql3);
    $sql5 = "update ps_product set price = '".$output."' where id_product = '".$key2[0]."'";
    mysql_query($sql5);	
    echo $sql5."<br>";
    }
    Essai donc et ça devrais aller.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 26
    Par défaut Reponse Merevinh
    Ok merci pour ta reponse je teste ca des que je peux le faire et je te contacte si il y a changement.

  12. #12
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Par défaut
    Oops,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql3 =  mysql_query("SELECT id_product FROM ps_product LIMIT 7");
    excuse moi voilà donc ce que tu devras utiliser comme code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $output3 = str_replace(",", ".", $output3);
    	$output3 = str_replace("€", "", $output3);
    	$output3 = array_filter($output3);
    $sql3 =  mysql_query("SELECT id_product FROM ps_product LIMIT 7");
     
    foreach($output3 as $output){
    $key2=mysql_fetch_row($sql3);
    $sql5 = "update ps_product set price = '".$output."' where id_product = '".$key2[0]."'";
    mysql_query($sql5);	
    echo $sql5."<br>";
    }
    tu n'a pas besoin de ta fonction ni de array_walk.

Discussions similaires

  1. Réponses: 21
    Dernier message: 10/06/2010, 21h40
  2. Réponses: 3
    Dernier message: 22/03/2010, 21h20
  3. Faire disparaitre la 1ere ligne d'un tableau
    Par identifiant_bidon dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 06/08/2007, 14h59
  4. Renommer le titre de colonnes par la 1ere ligne
    Par Tche55 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/02/2004, 12h07
  5. Split et calcul de ligne du tableau
    Par La_picolle dans le forum ASP
    Réponses: 6
    Dernier message: 27/08/2003, 15h58

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