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 :

Récupération des données dans une table


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Récupération des données dans une table
    Bonjour,

    Je crée mon site et souhaiterais obtenir ce résultat.

    Proposer a mes visiteurs de pouvoir consulter un résumé de leur commande, ainsi que le détail s'y rapportant.

    Pour cela j'arrive déjà à récupérer les données suivantes :

    Champ Type Null Défaut
    id int(10) Non
    client varchar(64) Non
    date date Non
    total_ht float Non
    total_ttc float Non
    port float Non
    expedition char(1) Non

    Index: Nom de la clé Type Cardinalité Champ
    PRIMARY PRIMARY 7 id
    client INDEX 2 client
    Là où ça coince c'est pour récupérer le détail de chaque commande lors de la validation dans une BDD nommée "ligne-commande"

    J'ai essayé ce script, que je pensais intéressant mais ma BDD ne s'incrémente pas .
    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
    <?php
    	  function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
    	  {
    	  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
    	  switch ($theType) {
    	  case "text":
    	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
    	  break;
    	  case "long":
    	  case "int":
    	  $theValue = ($theValue != "") ? intval($theValue) : "NULL";
    	  break;
    	  case "double":
    	  $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
    	  break;
    	  case "date":
    	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
    	  break;
    	  case "defined":
    	  $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
    	  break;
    	  }
    	  return $theValue;
    	  }
    	  ?>
     
    <?php
    	if (isset($_SESSION['MM_Username'])) { 
    	 mysql_select_db($database_damatmultime, $damatmultime); 
    	$query_commande = sprintf("SELECT id FROM shop_commande WHERE client ='".$_SESSION['MM_Username']."' ORDER BY id DESC");
    	$commande = mysql_query($query_commande, $damatmultime) or die(mysql_error());
    	$row_commande = mysql_fetch_assoc($commande);
    	$totalRows_commande = mysql_num_rows($commande); 
    	mysql_select_db($database_damatmultime, $damatmultime);
    	$query_panier = sprintf("SELECT shop_panier.*,
    	 shop-jeux.prix_ht, 
    	 shop_jeux.prix_ttc, 
    	 (shop_jeux.prix_ht*shop_panier.quantite AS total_ht),
    	 (shop_jeux.prix_ttc*shop_panier.quantite AS total_ttc)
    	 FROM shop_panier 
    	 INNER JOIN shop_jeux 
    	 ON shop_jeux.id=shop_panier.article 
    	 WHERE client ='".$_SESSION['MM_Username']."'");
    	 $panier = mysql_query($query_panier, $damatmultime) or die(mysql_error());
    	 $totalRows_panier = mysql_num_rows($panier);
    	$compteur = 0;
    	while ($row_panier = mysql_fetch_assoc($panier) and $compteur < $totalRows_panier)
    	{
    	$query_ligne_commande = sprintf("INSERT INTO shop_ligne_commande (commande, article, prix_ht, prix_ttc, quantite, total_ht, total_ttc) VALUES (%s; %s, %s, %s, %s, %s, %s)", 
    	GetSQLValueString($row_commande['id'], "int"), 
    	GetSQLValueString($row_panier['article'], "int"),
    	GetSQLValueString($row_panier['prix_ht'], "double"),
    	GetSQLValueString($row_panier['prix_ttc'], "double"),
    	GetSQLValueString($row_panier['quantite'], "int"),
    	GetSQLValueString($row_panier['total_ht'], "double"),
    	GetSQLValueString($row_panier['total_ttc'], "double"));
    	mysql_select_db($database_damatmultime, $damatmultime);
    	$Result1 = mysql_query($query_ligne_commande, $damatmultime) or die(mysql_error());
     
    	$query_suppr_panier = sprintf("DELETE FROM shop_panier WHERE id=%s",
    	GetSQLValueString($row_panier['id'], "int"));
    	mysql_select_db($database_damatmultime, $damatmultime);
    	$Result1 = mysql_query($query_suppr_panier, $damatmultime) or die(mysql_error());
     
    	$compteur = $compteur+1;
    	}
    	}
    	?>
    J'espère que vous pourrez m'aider

    Merci d'avance

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    J'ai remarqué que tu utilises or die(mysql_error) (très bonne chose ) Est-ce que tu obtiens une erreur ? Essaye en ajoutant l'affichage de la requête pour vérification.
    N'essaye-tu pas par hasard d'affecter un champ qui devrait être en auto-incrément ou quelque chose comme ça ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    je n'ai pas de message d'erreur, et apparement aucun des champs appelés n'est en auto increment.

    je bute la dessus de puis 3 jours lol.

    Ne serait pas ma boucle qui ne se fait pas correctement?

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    C'est possible que ça vienne de la boucle while. Je crois que ta condition fait 2 fois la même chose.
    Ce que tu peux faire aussi c'est ajouter un echo dans la boucle while juste pour savoir si ça passe dedans ou pas, par exemple un echo de ta requête insert.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while ($row_panier = mysql_fetch_assoc($panier){
      $query_ligne_commande = ....
      echo $query_ligne_commande.'<br/>';
      .....
    }
    Et je ne pense que tu ais besoin de resléectionner la base avant chaque requête, sauf si tu en changes à un moment ou un autre.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    J§'ai modifie le code comme indiqué et je ne vois pas de différence.

    ca donne
    ?
    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
    <php
    while ($row_panier = mysql_fetch_assoc($panier) and $compteur < $totalRows_panier)
    	{
     
    	$query_ligne_commande = sprintf("INSERT INTO shop_ligne_commande (commande, article, prix_ht, prix_ttc, quantite, total_ht, total_ttc) VALUES (%s; %s, %s, %s, %s, %s, %s)", 
    	GetSQLValueString($row_commande['id'], "int"), 
    	GetSQLValueString($row_panier['article'], "int"),
    	GetSQLValueString($row_panier['prix_ht'], "double"),
    	GetSQLValueString($row_panier['prix_ttc'], "double"),
    	GetSQLValueString($row_panier['quantite'], "int"),
    	GetSQLValueString($row_panier['total_ht'], "double"),
    	GetSQLValueString($row_panier['total_ttc'], "double"));
    	echo $query_ligne_commande.'<br/>';
    	mysql_select_db($database_damatmultime, $damatmultime);
    	$Result1 = mysql_query($query_ligne_commande, $damatmultime) or die(mysql_error());
     
    	$query_suppr_panier = sprintf("DELETE FROM shop_panier WHERE id=%s",
    	GetSQLValueString($row_panier['id'], "int"));
    	mysql_select_db($database_damatmultime, $damatmultime);
    	$Result1 = mysql_query($query_suppr_panier, $damatmultime) or die(mysql_error());
     
    	$compteur = $compteur+1;
    	}
    ?>

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 62
    Points : 84
    Points
    84
    Par défaut Remarque
    Salut,

    le problème peux venir du fait que tu n'as pas de session ouverte.
    Mets au début du script pour tester s'il y a une session en cours. Ajoute aussi print('chui dans le if');

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset($_SESSION['MM_Username'])) { 
      print('chui dans le if');
      ...
    pour tester que tu rentres bien dans ta condition.

    Autres remarques:

    1. $compteur n'est pas nécessaire dans la condition while avec mysql_fetch_assoc()
    qui retourne false quand il n'y a plus de lignes à lire et force de quitter la boocle.

    2. Pas besoin de faire plusieurs fois mysql_select_db(). Une fois en début du script ça suffit. Aussi, j'ai pas vu dans ton code mysql_connect() avant mysql_select_db(). Faut pas oublier.

    3. Tu insère un enregistrement dans la BDD et tu l'efface quelques ligne plus bas. Perso, je vois pas d'intérêt d'utiliser la BDD dans ce cas.

    4. Selon la description de ta table le id n'est pas en autoincrement. C'est toi qui le génére ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/10/2014, 12h19
  2. récupération des données d'une table dans une page jsp
    Par sihamsisim dans le forum Struts 1
    Réponses: 28
    Dernier message: 22/05/2008, 19h01
  3. Problème de récupérations de données dans une table mysql
    Par Helpine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/03/2006, 19h07
  4. Inserer des données dans une table access SQL
    Par ouellet5 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/11/2005, 21h11
  5. Réponses: 2
    Dernier message: 15/06/2005, 17h32

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