{MySQL} récupérer des valeurs de la bdd

Résolu/Fermé
0z0z Messages postés 108 Date d'inscription mardi 9 février 2010 Statut Membre Dernière intervention 18 mai 2010 - 26 févr. 2010 à 14:29
0z0z Messages postés 108 Date d'inscription mardi 9 février 2010 Statut Membre Dernière intervention 18 mai 2010 - 1 mars 2010 à 10:22
Bonjour,

Je travaille sur un site internet en PHP et je dois obtenir des infos de la BDD pour ensuite générer un fichier PDF. Pour commencer je cherche à récupérer les valeurs que je vais devoir afficher dans le PDF.

<?php
$sql = 'SELECT ref_parent FROM catalogues_commandes WHERE numero_piece='.$_POST['numero'];
$res = mysql_query($sql);
$ref_parent = mysql_fetch_array($res);
echo $ref_parent['ref_parent'];    // pour tester la récupération de la valeur
echo '</br>';

$sql = 'SELECT ref, code_client, quantite, prix_unitaire_ht, ref_tva FROM catalogues_commandes_details WHERE ref_commande='.$ref_parent['ref_parent'];
$res = mysql_query($sql);
while ($ref_parent = mysql_fetch_array($res)){
	$array=array($ref_parent['ref'],$ref_parent['code_client'],$ref_parent['quantite'],$ref_parent['prix_unitaire_ht'],$ref_parent['ref_tva']);
}
foreach($array as $cle2=>$value1){
	echo '<table border=1'>;
		echo '<tr>'; 
			echo '<td>'.$value1[0].'</td>';
			echo '<td>'.$value1[1].'</td>';
			echo '<td>'.$value1[2].'</td>';
			echo '<td>'.$value1[3].'</td>';	
		echo '</tr>';	
	echo '</table>';
}
?>


Déjà je ne pense pas que mon tableau soit juste.
Voici le résultat :
<table border=1><tr><td>1</td><td>4</td><td>1</td><td>7</td></tr></table><table border=1><tr><td>9</td><td>8</td><td>5</td><td>0</td></tr></table><table border=1><tr><td>1</td><td></td><td></td><td></td></tr></table><table border=1><tr><td>2</td><td>4</td><td>3</td><td>.</td></tr></table><table border=1><tr><td>1</td><td></td><td></td><td></td></tr></table><br />


Ensuite il faut que je fasse une requête pour afficher des choses selon la référence des produits afficher dans le tableau si dessus.
Voila un début mais biensur ca n'est pas bon :
<?php
$sql = 'SELECT colis, commande, rayon, lib, support FROM catalogues_commandes_details WHERE ref_commandes_details='.$ref_parent['ref'];
$res = mysql_query($sql);
while($colis = mysql_fetch_array($res)){
	foreach($array as $colis){
		$array2=array($colis['colis'],$colis['commande'],$colis['rayon'],$colis['lib'],$colis['support']);
	}
}
foreach($array2 as $cle2=>$value2){
	echo '<table border=1>';
		echo '<tr>'; 
			echo '<td>'.$value2[0].'</td>';
			echo '<td>'.$value2[1].'</td>';
			echo '<td>'.$value2[2].'</td>';
			echo '<td>'.$value2[3].'</td>';	
			echo '<td>'.$value2[4].'</td>';
		echo '</tr>';	
	echo '</table>';
}
?>



Si quelqu'un pouvais m'aider ca serait vraiment super.

8 réponses

giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
26 févr. 2010 à 14:55
bonjour,

la première question est : avant votre requête, êtes vous connecté à votre base ?
ce n'est ni écrit ni visible dans votre code.
0
0z0z Messages postés 108 Date d'inscription mardi 9 février 2010 Statut Membre Dernière intervention 18 mai 2010 5
26 févr. 2010 à 14:58
Oui je suis connecté à la base. Le code de connexion est dans une autre page.
Et je suis sure que la connexion fonctionne car mon premier echo me renvoi la bonne référence.
0
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
26 févr. 2010 à 15:02
OK
alors essayez ceci
1 voir ce qu'il y a dans $_POST
echo "<pre>";print_r($_POST);echo "</pre>";

puis changer des quotes dans la ligne suivante

$sql = "SELECT ref_parent FROM catalogues_commandes WHERE numero_piece=".$_POST['numero'];

0
0z0z Messages postés 108 Date d'inscription mardi 9 février 2010 Statut Membre Dernière intervention 18 mai 2010 5
26 févr. 2010 à 15:09
Dans $_POST il y a le numéro du client que j'entre dans une zone de texte dans la page précédente.

1364</br><pre>Array
(
    [numero] => 2278
)
</pre>


1364 est le résultat de ma première requête. Ca c'est OK.
2278 est le numéro du client que j'ai entré dans la page précédente. Ca c'est aussi OK.

Par contre ce que je ne comprend pas c'est pourquoi il m'affiche mon code, mes balises quoi... :/
0

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

Posez votre question
0z0z Messages postés 108 Date d'inscription mardi 9 février 2010 Statut Membre Dernière intervention 18 mai 2010 5
26 févr. 2010 à 16:01
<table border=1>
	<tr>
		<td>1</td>
		<td>4</td>
		<td>1</td>
		<td>7</td>
		<td></td>
	</tr>
	<tr>
		<td>9</td>
		<td>8</td>
		<td>5</td>
		<td>0</td>
		<td>0</td>
	</tr>
	<tr>
		<td>1</td>
		<td></td>
		<td></td>
		<td></td>
		<td></td>
	</tr>
	<tr>
		<td>2</td>
		<td>4</td>
		<td>3</td>
		<td>.</td>
		<td>2</td>
	</tr>
	<tr>
		<td>1</td>
		<td></td>
		<td></td>
		<td></td>
		<td></td>
	</tr>
</table>


Si on enlève les balises il reste : 141798501243.21
1417 = ref
9850 = code_client (seulement les 4 premiers chiffres)
1 = quantité
243.2 = prix_unitaire_ht (seulement les 4 premiers chiffres)
1 = ref_tva

La requête devrais me retourner 7 lignes. Les données si dessus sont celles de la dernière ligne.
Quelqu'un peut m'expliquer le raisonnement ? J'y comprend plus rien la:S
0
0z0z Messages postés 108 Date d'inscription mardi 9 février 2010 Statut Membre Dernière intervention 18 mai 2010 5
26 févr. 2010 à 16:10
Avec un print_r j'obtiens :
(
    [0] => 1417
    [1] => 9850023
    [2] => 1
    [3] => 243.20
    [4] => 1
)


Il m'affiche correctement les valeurs de la dernières lignes.
Alors l'erreur vient elle de mon WHILE ou bien de mon FOREACH ?
0
hehehe a mon tour de t'aider :) ...enfin je vais essayer vu que je comprend pas bien ce que tu veux obtenir

pour moi il y a 2 erreurs imbriquées,

ton while ne te retournera que les valeurs des champs de la derniere entrée en fait
si c'est ce que tu cherches alors c'est tout bon sinon il faut mettre un indice i = 0;....array[i] =....puis i++; tout ca dans le while pour que ta table se decale sinon tu ecrase les valeurs precedentes

pour le foreach, je ferais, si tu ne cherche qu'a avoir le derniere entrée dans le while

echo '<table border=1'>;
echo '<tr>';
foreach($array as $cle2=>$value1){
echo '<td>'.$value1.'</td>';
}
echo '</tr>';
echo '</table>';
value1 n'etant alors pas un tableau mais une donnée

si tu mets l'indice comme mentionné alors ne change rien. Il devrait juste manquer un :echo '<td>'.$value1[4].'</td>';
0
0z0z Messages postés 108 Date d'inscription mardi 9 février 2010 Statut Membre Dernière intervention 18 mai 2010 5
1 mars 2010 à 10:22
Merci amoi mais vendredi avant de partir j'ai pu résoudre le problème en faisant cela :

$sql = "SELECT ref, code_client, quantite, prix_unitaire_ht, ref_tva 
FROM catalogues_commandes_details WHERE ref_commande=".$ref_parent['ref_parent'];
$res = mysql_query($sql);
echo '<table border=1>';
while ($ref_parent = mysql_fetch_array($res)){
	echo '<tr>';
    	        echo '<td>'.$ref_parent['ref'].'</td>';
                echo '<td>'.$ref_parent['code_client'].'</td>';
		echo '<td>'.$ref_parent['quantite'].'</td>';
		echo '<td>'.$ref_parent['prix_unitaire_ht'].'</td>';
		echo '<td>'.$ref_parent['ref_tva'].'</td>';	 
       echo '</tr>';   
}
echo '</table>';


Maintenant j'ai un autre problème que je vais exposer dans un nouveau sujet ;)
0