Rechercher : dans
Par :

PHP et plusieurs lignes SQL à ID identiques ?

Dernière réponse le 28 déc 2007 à 20:41:01 Nethan, le 25 déc 2007 à 17:35:28 
 Signaler ce message aux modérateurs

Bonsoir,

Voilà je débute en PHP/SQL. J'arrive à faire ce que je veux tant que je crée tout de zéro, mais là je dois récupérer une base déjà conçue et l'exploiter, ce qui est hélas autre chose.

J'ai pû comprendre les jointures de moi-même, nécessaires pour cette base, et donc permettre à l'utilisateur d'avoir des noms, et le serveur le typeID correspondant, mais la récupération des données relatives me dépasse.

Voilà les lignes du SELECT correspondant au choix de l'utilisateur, choix dépendant donc de typeID :

SELECT requiredTypeID,quantity FROM latablequilfaut WHERE typeID = $typeID

typeID   activity   requiredTypeID   quantity

11287	     6	     36	     334	
11287	     6	     39	     2
11287	     6	     40	     2

Le SELECT me donne les bons résultats, seulement vu que les besoins (requiredTypeID) sont stockés sur plusieurs lignes, comment récupérer toutes ces lignes dans des variables PHP ?

J'ai toujours tourné sur une base d'une seule ligne contenant les données, et donc une multitude de colonnes faciles à exploiter, mais là c'est le fonctionnement inverse, du coup ma variable me donne que les deux résultats demandés de la première ligne seulement.

Il me faut absolument tous les récupérer pour pouvoir les exploiter, peu importe la méthode. Il faut surtout que ce soit adaptable, car selon le typeID, il peut y avoir encore davantage de lignes que ça (jusqu'à 7 en théorie)

Je suis sûr que ce doit être tout con, mais je ne vois pas.

Si quelqu'un peut me dire comment, ce serait super :)

Joyeuses fêtes.

Cordialement,
Nethan
Configuration: Windows XP
Opera 9.25

Meilleures réponses pour « PHP et plusieurs lignes SQL à ID identiques ? » dans :
Transformer des colonnes en lignes dans un fichier VoirDifférents outils de Linux sont très doués pour travailler avec des lignes, mais pas avec des colonnes (c'est leur rôle) Sed, Awk, Grep, etc. Cependant, il peut arriver pour X raisons que vous ayez un fichier où les données sont à lire en...
Emule - LowID VoirL'ID (identifiant) est un numéro d'utilisateur unique affecté par eMule en début de connexion : Une ID nulle indique que le client emule n'est connecté à aucun serveur Une ID faible ou Low ID (1 à 16 777 215) indique un utilisateur connecté...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
SQL - Mise à jour d'informations VoirLe SQL permet la modification d'une table par un utilisateur (pour peu qu'il ait les droits suffisants...). La modification d'une table consiste à: ajouter des tuples modifier des tuples existants ou bien supprimer des tuples Insertion de...
Oracle - Les requêtes hiérarchiques VoirCet article se base sur des tests et recherches réalisés dans la version 8.1.5 d'Oracle. Introduction Tout au long de cet article, nous allons nous intéresser à une structure de données permettant de créer un Forum de discussion, matérialisé par...

1

s.spark, le 25 déc 2007 à 19:09:12

Salut,

J'ai rien compris, mais alors rien du tout ^^

Avec ton "WHERE typeID = $typeID " tu vas forcément récupérer les lignes ou typeID = $typeID, rien de plus.

Répondre à s.spark

2

eolange, le 25 déc 2007 à 20:02:40

While($ligne=mysql_fetch_row($requete))
{
$1ere colone=$ligne[0];
}

comme ca :) si j'ai bien compris ^^

Répondre à eolange

3

Nethan, le 27 déc 2007 à 15:12:43

Ach, c'est vrai que je ne suis pas très clair ^^

Traduction :

Comment on fait pour stocker dans des variables PHP, des valeurs de colonnes qui sont sur PLUSIEURS lignes SQL mais avec le même identifiant ?

Ou en détaillé : > avant <, je tournais avec ça :

typeID     matos1    matos2    matos3   ......   matos7

11287       334        0          2     ......   quantite7

Donc une fois qu'on choisissait ce qu'on voulait ( typeID ), toute cette ligne était extraite dans une variable $ligne['numero'] par exemple, et le calcul comprenait chaque matos possible, même si la valeur du dit matos était zéro. Facile à gérer.

> Mais là < je tourne sur une base qui fonctionne différement :

typeID   activity   matos   quantity

11287	     6	     36	     334	
11287	     6	     39	     2
11287	     6	     40	     2

C'est toujours la même idée : Je choisi un typeID, il faut faire le calcul, mais le matos requis et sa quantité sont stocké sur PLUSIEURS LIGNES.

Et là je ne sais pas comment faire pour TOUT récupérer, car j'ai toujours joué avec des lignes uniques.

Quand je fais mon script PHP pour tenter d'extraire tout le matos et les quantités dans $ligne, je n'obtient que la première ligne (36 et 334).

J'aimerai donc savoir comment obtenir ces informations.



eolange > Avec cette solution je n'obtient que la dernière ligne (40 2) :-/

Par contre ça me donne une idée. Transformer $1erecolonne en Array vu que pour obtenir 40 2, le script a bien dû lire les lignes qu'il y avait avant :)

Un truc dans le genre :
$rapatriement = mysql_query("SELECT requiredTypeID,quantity FROM tabledetravail WHERE typeID = $typeID");

$i = 0;

while($donnees=mysql_fetch_row($rapatriement))
{ 		
   $matos[$i] = $donnees[0]; 
   $quantite[$i] = $donnees[1]; 
   $i++;
}

Suivi par des Case ou If pour déterminer avec quoi la quantité serait modifiée.

Je vais essaier dès que possible :)

Répondre à Nethan

4

Alain42, le 27 déc 2007 à 20:05:01

Bonsoir,

ou plus simple:

$rapatriement = mysql_query("SELECT requiredTypeID,quantity FROM tabledetravail WHERE typeID = $typeID");


while($donnees=mysql_fetch_row($rapatriement))
{ 	
   $cle=$donnees['matos'];
   $array_valeurs[$cle]=$donnes['quantite'];
  // on stocke ainsi dans cet array les quantites dans un array dont les num de cles sont les matos
}

// pour faire les calculs il suffit de parcourir l'array


foreach($array_valeurs as $cle=>$value){
 $prix=$cle*$value;
 //ou autre
}

Répondre à Alain42

5

 Nethan, le 28 déc 2007 à 20:41:01

Bonsoir,

Alain42 > Effectivement c'était plus simple de stocker avec un référent qui serait le nombre de la colonne matos, j'aurai dû y penser.

Je cherche toujours à faire compliqué quand on peut faire simple =)

Par contre je n'arrive pas à utiliser foreach même en l'adaptant, mais j'ai mis tout ce qu'il y avait à faire directement dans le While, ça revient un peu au même, et ça marche ^^

Merci de votre aide :)

Cordialement,
Nethan

Répondre à Nethan