Exécuter une page php sans l'afficher

Djé
Invité n'ayant pas de compte PHPfrance

20 juin 2005, 12:23

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:

Eléphant du PHP | 214 Messages

20 juin 2005, 13:15

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 ?
Les grands esprits sont une cible facile pour les médiocres...

Djé
Invité n'ayant pas de compte PHPfrance

20 juin 2005, 13:29

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 :(

Eléphant du PHP | 419 Messages

20 juin 2005, 13:37

euh j'y connais pas grand chose mais le exit il faudrait pas le mettre avant le header

Eléphant du PHP | 214 Messages

20 juin 2005, 13:42

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
Les grands esprits sont une cible facile pour les médiocres...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 juin 2005, 13:43

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.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 419 Messages

20 juin 2005, 14:08

excuse moi zeus je connaissais pas exit et j'ai pense que c'etait pour fermer la page

Djé
Invité n'ayant pas de compte PHPfrance

20 juin 2005, 14:17

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:)

Djé
Invité n'ayant pas de compte PHPfrance

20 juin 2005, 14:20

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:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 juin 2005, 14:20

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 juin 2005, 14:22

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();
	}
}								
?>
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 214 Messages

20 juin 2005, 14:24

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:
Les grands esprits sont une cible facile pour les médiocres...

Eléphant du PHP | 419 Messages

20 juin 2005, 14:25

php.net mais euh c'est en anglais :( :-k

Invité
Invité n'ayant pas de compte PHPfrance

20 juin 2005, 14:40

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 ;)

Petit nouveau ! | 4 Messages

20 juin 2005, 15:35

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...