PHP->Besoin d'aide pour une requête
9 messages
• Page 1 sur 1
- gcvoiron
- WRInaute occasionnel

- Messages: 494
- Inscription: 19 Oct 2005
PHP->Besoin d'aide pour une requête
Bonjour,
La requête ci-dessous sert à faire un "Top-Parrain".
>Id par id, je veux chercher le nombre de filleuls(=nombre de membres qui ont l'id X pour refererid), puis stocker la valeur trouver dans le nbref (nombre de filleuls) correspondant à l'id...
J'ai des erreurs de ce type :
Quelqu'un aurait une idée de l'erreur ?
Merci.
La requête ci-dessous sert à faire un "Top-Parrain".
>Id par id, je veux chercher le nombre de filleuls(=nombre de membres qui ont l'id X pour refererid), puis stocker la valeur trouver dans le nbref (nombre de filleuls) correspondant à l'id...
- Code: Tout sélectionner
<?php
include('header.inc.php');
$requete = mysql_query("SELECT id FROM demo_a_accounts") or die(mysql_error();
while ($myrow = mysql_fetch_row($requete))
{
$req = "SELECT id FROM demo_a_accounts WHERE refererid=" .$myrow[0]. "";
$res = mysql_query($req) or die(mysql_error());
$num_rows = mysql_num_rows($req);
$ask= "UPDATE `demo_a_accounts` SET `nbref` = '".$num_rows."' WHERE `id` = '" .$myrow[0]. "'";
$result = mysql_query($ask) or die(mysql_error());
}
?>
J'ai des erreurs de ce type :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home.10.6/boosttra/www/topparrain.php on line 8
Quelqu'un aurait une idée de l'erreur ?
Merci.
- DomicilePC
- WRInaute discret

- Messages: 210
- Inscription: 17 Jan 2005
change
$num_rows = mysql_num_rows($req);
par
$num_rows = mysql_num_rows($res);
$num_rows = mysql_num_rows($req);
par
$num_rows = mysql_num_rows($res);
- gcvoiron
- WRInaute occasionnel

- Messages: 494
- Inscription: 19 Oct 2005
Merci, ça marche avec :

- Code: Tout sélectionner
<?php
include('header.inc.php');
$requete = mysql_query("SELECT id FROM demo_a_accounts") or die(mysql_error());
while ($myrow = mysql_fetch_row($requete))
{
$req = "SELECT id FROM demo_a_accounts WHERE refererid=".$myrow[0]."";
$res = mysql_query($req) or die(mysql_error());
$num_rows = mysql_num_rows(mysql_query($req));
$ask= "UPDATE `demo_a_accounts` SET `nbref` = '".$num_rows."' WHERE `id` = '".$myrow[0]."'";
$result = mysql_query($ask) or die(mysql_error());
}
?>
-

Bh@Mp0 - WRInaute discret

- Messages: 245
- Inscription: 18 Jan 2005
Plus simple peut-être, en 1 requête (mais faudra vérifier la syntaxe) :
Ou, au pire, en n+1 requêtes (au lieu de 2n+1 requêtes) :
- Code: Tout sélectionner
UPDATE `demo_a_accounts` A1 SET A1.`nbref` = (SELECT count(DISTINCT A2.id) FROM `demo_a_accounts` A2 WHERE A2.`refererid`=A1.`id`);
Ou, au pire, en n+1 requêtes (au lieu de 2n+1 requêtes) :
- Code: Tout sélectionner
SELECT A1.id, count(DISTINCT A2.id) AS c FROM `demo_a_accounts` A1 LEFT JOIN `demo_a_accounts` A2 ON A2.`refererid`=A1.`id`;
puis, pour chaque résultat renvoyé :
UPDATE `demo_a_accounts` SET `nbref` = '".$row["c"]."' WHERE `id`='".$row["id"]."';
- gcvoiron
- WRInaute occasionnel

- Messages: 494
- Inscription: 19 Oct 2005
Je ne connais pas du tout la syntaxe du code que tu utilise...
J'essaye ceci ?
J'essaye ceci ?
- Code: Tout sélectionner
<?php
include('header.inc.php');
UPDATE `demo_a_accounts` A1 SET A1.`nbref` = (SELECT count(DISTINCT A2.id) FROM `demo_a_accounts` A2 WHERE A2.`refererid`=A1.`id`);
?>
- gcvoiron
- WRInaute occasionnel

- Messages: 494
- Inscription: 19 Oct 2005
Avec :
J'ai l'erreur :
- Code: Tout sélectionner
<?php
include('header.inc.php');
$requete = "UPDATE `demo_a_accounts` A1 SET A1.`nbref` = (SELECT count(DISTINCT A2.id) FROM `demo_a_accounts` A2 WHERE A2.`refererid`=A1.`id`);";
$result = mysql_query($requete) or die(mysql_error());
?>
J'ai l'erreur :
- Code: Tout sélectionner
You can't specify target table 'A1' for update in FROM clause
- gcvoiron
- WRInaute occasionnel

- Messages: 494
- Inscription: 19 Oct 2005
Et si j'utilise :
J'ai l'erreur :
Auriez-vous une idée du problème ?
Merci.
- Code: Tout sélectionner
<?php
include('header.inc.php');
mysql_query("SELECT A1.id, count(DISTINCT A2.id) AS c FROM `demo_a_accounts` A1 LEFT JOIN `demo_a_accounts` A2 ON A2.`refererid`=A1.`id`") or die(mysql_error());
mysql_query("UPDATE `demo_a_accounts` SET `nbref` = '".$row["c"]."' WHERE `id`='".$row["id"]."'") or die(mysql_error());
?>
J'ai l'erreur :
Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
Auriez-vous une idée du problème ?
Merci.
9 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Besoin aide pour afficher légende sur requête MSQL!!
- Aide requete PHP
- Aide php/mysql requête svp
- PHP -> Aide pour une requête
- Aide pour une requête PHP
- besoin aide pour php
- Aide pour optimiser l'écriture d'une requete PHP/MYSQL
- [besoin aide] petit code php
- besoin d'une aide en php (formulaire)
- [PHP/MYSQL] Besoin d'aide dans une requête
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

