PHP et plusieurs lignes SQL à ID identiques ?

Résolu/Fermé
Nethan Messages postés 9 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 18 mars 2009 - 25 déc. 2007 à 17:35
Nethan Messages postés 9 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 18 mars 2009 - 28 déc. 2007 à 20:41
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
A voir également:

5 réponses

s.spark Messages postés 2485 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 618
25 déc. 2007 à 19:09
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 jeudi 19 octobre 2006 Statut Membre Dernière intervention 23 avril 2009 2
25 déc. 2007 à 20:02
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 vendredi 20 avril 2007 Statut Membre Dernière intervention 18 mars 2009
27 déc. 2007 à 15:12
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
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 vendredi 20 avril 2007 Statut Membre Dernière intervention 18 mars 2009
28 déc. 2007 à 20:41
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