Page 1 sur 2

Exécuter une page php sans l'afficher

Posté : 20 juin 2005, 12:23
par Djé
Bonjour,

J'ai un petit souci sur un forum phpbb. L'appel à une page de stat du forum (propre à chaque user (ex: statuser.php?uid=443)) met à jour ma base de donnée pour l'user correspondant.

Le truc c'est que je souhaiterais pouvoir appeler dynamiquement chaque page de stat pour chaque user, pour que ces mises à jours de la base soient automatiques (je sais, ce n'est pas forcément très propre ni très catholique, mais je l'ai fait manuellement sur une trentaine d'user, en ouvrant statuser.php?uid=x où x varie de 1 à 30 donc, et ca me convient).

J'arrive sans problème (à partir d'un autre fichier) à parcourir au moyen d'une requête sql la table des users donc à récupérer les uid, mais je ne sais pas comment provoquer l'exécution de la page statuser.php :-k
(J'ai essayer les fonctions headers/location mais sans succès).

J'espère que je n'ai pas été trop confu dans mon explication :lol:

Posté : 20 juin 2005, 13:15
par MissAube
Je veux bien t'aider mais je ne comprends pas très bien ton problème. Tu n'arrives pas à appeler une page php à partir d'une autre ? Si tu as essayé location et header et que vraiment ça ne marche pas il te reste la balise meta je pense. Pourrais-tu m'expliquer ton problème plus clairement s'il te plait ?

Posté : 20 juin 2005, 13:29
par Djé
Ok et merci ;)

En fait, dans ma page statuser.php, il y a du code qui met à jour ma base de données pour un user donné (l'user dont l'uid est passé en paramètre).

Pour l'instant, afin de mettre à jour ma base de données, j'ouvre les pages suivantes dans mon navigateur:

statuser.php?uid=1
statuser.php?uid=2
statuser.php?uid=3
statuser.php?uid=4
statuser.php?uid=5
.....

et ma base se met à jour.

J'aimerais savoir comment faire pour pouvoir ouvrir automatiquement ces pages. J'ai pour l'instant créé un petit fichier:
$sqlScores = " SELECT user_id, user_gen_score FROM " . USERS_TABLE . " ORDER BY user_id";			  
if ( !($resultScores = $db->sql_query($sqlScores)) ) 
{ 
	message_die(GENERAL_ERROR, 'Impossible d\'acceder aux tables games/users', '', __LINE__, __FILE__, $sqlArcade); 
}
	
while($row = mysql_fetch_array($resultScores))
{
	$userid = $row['user_id'];
	if( $userid > 0 )
	{
		//header("Location: statuser.php?uid=$userid");
		//exit();
	}
}								
?>
Je récupère donc les uid de chaque user, et dans ma boucle il faudrait que j'ouvre la page de stat correspondante à l'user mais je n'y arrive pas :(

Posté : 20 juin 2005, 13:37
par sausee2005
euh j'y connais pas grand chose mais le exit il faudrait pas le mettre avant le header

Posté : 20 juin 2005, 13:42
par MissAube
Déjà pour exécuter une requête je crois que c'est
mysql_query("")
Ensuite dans ta requête pourquoi tu sors le nom de ta table avec des guillemets et des points ? Je suis débutante donc je me trompe peut-être mais je ne crois pas que ce soit utile.
Enfin, pour appeler ta page tu peux essayer
echo "<META http-equiv='refresh' content='0;URL=url de ta page'>";
Voilà, j'espère que je n'ai pas fait d'erreurs

Posté : 20 juin 2005, 13:43
par zeus
Non car exit permet de terminer l'exécution du script courant. Si tu met exit avant header, il n'y aura jamais redirection

On le met car il arrive que header laisse le script se terminer avant d'appeller le script suivant.

Posté : 20 juin 2005, 14:08
par sausee2005
excuse moi zeus je connaissais pas exit et j'ai pense que c'etait pour fermer la page

Posté : 20 juin 2005, 14:17
par Djé
Merci à tous ;)

En fait, je n'ai pas de problèmes de syntaxe SQL, et le exit et le header sont juste là pour montrer l'endroit où il faut je pense travailler ;)

Je vais essayer avec ton

Code : Tout sélectionner

echo "<META http-equiv='refresh' content='0;URL=url de ta page'>";
(En fait mon problème est peut-être simple mais j'ai pu embrouiller l'énoncé :roll: :lol:)

Posté : 20 juin 2005, 14:20
par Djé
Non ca ne passe pas non plus avec un refresh ...

Mais je reste persuadé, même si je n'ai que des notions de base en php, que c'est un truc ton con mais ... j'arrive pas à trouver :lol:

Posté : 20 juin 2005, 14:20
par zeus
excuse moi zeus je connaissais pas exit et j'ai pense que c'etait pour fermer la page
Mais c'est pas grave, on est tous là pour apprendre :lol:

Maintenant, tu connais la signification ...

PS : si tu veux un conseil, j'ai toujours une page d'ouverte sur php.net pour connaître la signification des fonctions qui sont données

Posté : 20 juin 2005, 14:22
par zeus
Avec ce code tu ne vas exécuter que la 1ere page.

En effet, tu va rentrer dans la boucle, tu vas ouvrir la 1ere page et tu vas terminer l'exécution de ton script

Mais pourquoi est-ce que tu doit ouvrir plusieurs scripts pour faire un update ?
$sqlScores = " SELECT user_id, user_gen_score FROM " . USERS_TABLE . " ORDER BY user_id";			  
if ( !($resultScores = $db->sql_query($sqlScores)) ) 
{ 
	message_die(GENERAL_ERROR, 'Impossible d\'acceder aux tables games/users', '', __LINE__, __FILE__, $sqlArcade); 
}
	
while($row = mysql_fetch_array($resultScores))
{
	$userid = $row['user_id'];
	if( $userid > 0 )
	{
		//header("Location: statuser.php?uid=$userid");
		//exit();
	}
}								
?>

Posté : 20 juin 2005, 14:24
par MissAube
Désolée mais je ne peux pas t'aider, mes compétences en PHP sont très limitées lol, bon courage et j'espère que tu vas vite trouver une solution à ton problème :wink:

Posté : 20 juin 2005, 14:25
par sausee2005
php.net mais euh c'est en anglais :( :-k

Posté : 20 juin 2005, 14:40
par Invité
Avec ce code tu ne vas exécuter que la 1ere page.

En effet, tu va rentrer dans la boucle, tu vas ouvrir la 1ere page et tu vas terminer l'exécution de ton script

Mais pourquoi est-ce que tu doit ouvrir plusieurs scripts pour faire un update ?
En fait j'ai rajouté du code à un fichier déjà existant. Ce fichier ne faisait que des requêtes pour afficher des infos, maintenant il en ajoute dans la base (en fait le code rajouté à pour but de stocker dans la base les infos que le code original ne faisait qu'afficher). Et ca marche :lol:

Seulement, pour pouvoir exploiter pleinement ces infos, il faut qu'elles soient calculées pour chaque membre, donc que le fichier soit généré pour chaque uid. Ce n'est sans doute pas très propre, une fonction serait plus adéquate sans doute mais c'est comme ca que je souhaite procéder :lol:

En fait, il me faut juste le code pour ouvrir une page web (php ou non, ca j'en fait mon affaire) à chaque fois que je suis dans la boucle, tout en restant dans le script puisque la boucle n'est pas finie. Tant pis si ca m'ouvre X pages en plus de la 1ere, ca ce n'est pas grave tant que ca marche :lol:
Désolée mais je ne peux pas t'aider, mes compétences en PHP sont très limitées lol, bon courage et j'espère que tu vas vite trouver une solution à ton problème
Je t'en prie, pas de problèmes et merci beaucoup déjà de t'être penchée sur mon cas ;)

Posté : 20 juin 2005, 15:35
par pcserba
tu peux pas faire un truc qui ressemble à ca ?
if ($uid<31)
{
echo "<script>document.location.replace(statuser.php?uid=$uid)</script>";}
else
{
echo "<script>document.location.replace(index.php)</script>";
}

En espérant que ca marche...