selection variable dans 2 tableaux

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : selection variable dans 2 tableaux

Re: selection variable dans 2 tableaux

par Elie » 29 déc. 2014, 18:58

Euh bah récuperer la page de la photo la moins vu c'est simple en fait :)
$result = mysql_query("SELECT numero FROM table1 ORDER BY vu ASC");
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$num = $row['numero']; // La tu as le numero de page la moins vu ...
Après en fonction de ce numero, tu peux peut-être mettre un condition dans ta deuxieme requete.
Le plus simple serait en fait de faire une seule requete avec un LEFT JOIN
SELECT `table2`.`page` FROM `table2` LEFT JOIN `table1` ON `table2`.`page` = `table1`.`numero` ORDER BY `table1`.`vu` ASC
Ma requete est pas forcement bonne mais il y a une logique la de dans ...

Re: selection variable dans 2 tableaux

par stanak » 29 déc. 2014, 12:52

Mais la va t il y avoir une correspondance entre le tableau $a et $b ?
Quelle valeur on il y en commun ?
Et va la : http://www.phpdebutant.org/
le point commun ne change pas : numero et page (les deux sont des numéros de photo)
je veux la photo qui est la moins vu dans la table1 (donc la plus petite valeur numerique)
et elle ne doit pas se trouver dans la table2

finalement, est-ce qu'une requete avec une boucle WHILE qui teste la 2e table ne serait pas plus mal ?

Re: selection variable dans 2 tableaux

par Elie » 29 déc. 2014, 12:11

$a = array();
$result = mysql_query("SELECT numero, vu FROM table1");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$a[$row["numero"]] = $row["vu"];
}

$b = array();
$result2 = mysql_query("SELECT page FROM table2");
while ($row2 = mysql_fetch_array($result2, MYSQL_ASSOC)) {
$b[] = $row2["page"];
}
Mais la va t il y avoir une correspondance entre le tableau $a et $b ?
Quelle valeur on il y en commun ?

Et va la : http://www.phpdebutant.org/

Re: selection variable dans 2 tableaux

par stanak » 29 déc. 2014, 12:02

Il va falloir réviser un peu...
bah, il aurait fallu que je prenne des cours un jour ;)
je tâtonne beaucoup pour arriver à un résultat

j'avais pas compris le principe des keys
donc ça pourrait ressembler à ça ?
$a = array();
$result = mysql_query("SELECT numero, vu FROM table1");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$a[] = $row["numero"]=> $row["vu"];
}

$b = array();
$result2 = mysql_query("SELECT page FROM table2");
while ($row2 = mysql_fetch_array($result2, MYSQL_ASSOC)) {
$b[] = $row2["page"];
}
merci encore pour ton aide

Re: selection variable dans 2 tableaux

par Elie » 28 déc. 2014, 21:53

Il va falloir réviser un peu...
$result = mysql_query("SELECT numero FROM table1");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$a = array($row["numero"]);
}
Va retour juste $a = array('Le dernier numero');

Il faut faire :
$a = array();
$result = mysql_query("SELECT numero FROM table1");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$a[] = $row["numero"];
}
Ce qui va retourner $a = array(0 => 'Premiere réponse', 1 => 'Deuxieme réponse');

Mais toi tu me donne comme exemple un truc avec des keys différents et tu veux comparé les keys ...
$a = array(1564 => 56, 6554 => 0, 6482 => 120, 1671 => 19);

Donc je ne sais pas qui croire ...
Si tu veux comparer les keys tu fais comme je t'ai montré, si tu veux comparer les valeurs tu te sers effectivement de array_diff()

Re: selection variable dans 2 tableaux

par stanak » 28 déc. 2014, 19:17

genre ceci ? :
$result = mysql_query("SELECT numero FROM table1");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
   
$a = array($row["numero"]);
}

$result2 = mysql_query("SELECT page FROM table2");
while ($row2 = mysql_fetch_array($result2, MYSQL_ASSOC)) {
   
$b = array($row2["page"]);
}
il me semble que array_diff() soit plus adapté
compare le tableau array1 avec un ou plusieurs tableaux et retourne les valeurs du tableaux array1 qui ne sont pas présentes dans les autres tableaux.
j'essaye cette piste

Re: selection variable dans 2 tableaux

par Elie » 28 déc. 2014, 17:10

Bah ça change rien'... Tu met les résultats Mysql a la place de $a et $b...

Tu me donnes pas beaucoup plus d'informations...

Re: selection variable dans 2 tableaux

par stanak » 28 déc. 2014, 17:03

merci Elie pour ta réactivité

si j'abusai, avec une requète SQL, ça donnerai quoi ? :oops:

Re: selection variable dans 2 tableaux

par Elie » 28 déc. 2014, 16:30

http://php.net/manual/fr/function.array-diff-ukey.php

array_diff_ukey()
<?php

	function key_compare_func($key1, $key2)
	{
		if ($key1 == $key2)
			return 0;
		else if ($key1 > $key2)
			return 1;
		else
			return -1;
	}

	$a = array(1564 => 56, 6554 => 0, 6482 => 120, 1671 => 19);
	$b = array(4548 => 'marcel', 6554 => 'jp', 8732 => 'kevin');
	
	$diff = array_diff_ukey($a, $b, 'key_compare_func'); 
	$min = min($diff);	// Donc 1564 en l'occurence la ... Mais ca marche
	
?>

Re: selection variable dans 2 tableaux

par stanak » 28 déc. 2014, 16:22

par absente, j'entends qu'elle ne soit pas présente dans le tableau2

ce sont bien des chiffres qui sont concernés
tableau1
num ::: valeur :::
1564 ::: 56
6554 ::: 0
6482 ::: 120
1671 ::: 19
etc :::

tableau2
page ::: nom
4548 ::: marcel
6554 ::: jp
8732 ::: kevin
etc :::

le résultat serait 1671 (puisque 6554 se trouve aussi dans le tableau2)

Re: selection variable dans 2 tableaux

par Elie » 28 déc. 2014, 14:32

je voudrais sélectionner dans le tableau1 la variable1 qui a la plus petite valeur.

Donc je suppose que c'est des chiffres ?
http://php.net/manual/en/function.min.php

et que cette même variable1 soit absente de mon tableau2
Soit absente ca veut dire quoi la retirer ?
http://php.net/manual/en/function.array-search.php

Exemple :
<?php

	$a = array(10, 5, 201, 245 ,154588, 157, 57);
	$b = array(14, 5, 455454, 666, 79636, 157, 57);
	
	// La plus petite
	$min = min($a); // 5
	
	// On la trouve dans B
	$search = array_search($min, $b);
	
	// On la retire
	unset($b[$search]);
	
	// Array ( [0] => 14 [2] => 455454 [3] => 666 [4] => 79636 [5] => 157 [6] => 57 )
	print_r($b);
	
?>
J'ai fait ce que j'ai compris de ton explication pas clair sans exemple :)

selection variable dans 2 tableaux

par stanak » 28 déc. 2014, 14:19

bonjour à tous et bonnes fêtes en passant ;)

j'ai un casse tête pour mon site

je voudrais sélectionner dans le tableau1 la variable1 qui a la plus petite valeur
et que cette même variable1 soit absente de mon tableau2

si vous avez des pistes, merci de votre aide
stef