PHP et plusieurs lignes SQL à ID identiques ?

Résolu
Nethan Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
Nethan Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -
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

5 réponses

s.spark Messages postés 2485 Date d'inscription   Statut Contributeur Dernière intervention   618
 
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.
0
eolange Messages postés 103 Date d'inscription   Statut Membre Dernière intervention   2
 
while($ligne=mysql_fetch_row($requete))
{
$1ere colone=$ligne[0];
}

comme ca :) si j'ai bien compris ^^
0
Nethan Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
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 :)
0
Alain42
 
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
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nethan Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
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
0