AU SECOURS d'un novice en PHP !!!

Fermé
jmlir Messages postés 14 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 8 juillet 2008 - 30 déc. 2003 à 22:40
 Utilisateur anonyme - 2 janv. 2004 à 12:30
Bonsoir et Bonne Année à tous et à toutes !
Lequel pourra de démêler cette tentative de script PHP ???
Merci pour votre aide : je m'arrache les cheveux là dessus... et je n'ai aucune expérience du PHP...


<?php
@mysql_connect("xxxxx.xxxxxxx.com", "xxxx", "xxxxxx");
@mysql_select_db("xxxx");
$stmt = "SELECT * from dernurl";
$result = mysql_query($stmt);
$row = mysql_fetch_object($result);
$stmt2 = "SELECT * from url";
$result2 = mysql_query($stmt2);
$row2 = mysql_fetch_object($result2);
$max = mysql_num_rows($result2);
$row->dern = $dern;
if ($dern == $max)
{
$dern = "0";
}
else
{
mysql_query("DELETE * from dernurl");
$dern = $dern+1;
mysql_query("INSERT INTO dernurl VALUES($dern)");
}
$stmt3 = "SELECT * from url where pos='". $dern ."'";
$result3 = mysql_query($stmt3);
$row3 = mysql_fetch_object($result3);
echo("<meta http-equiv='refresh' content='0;". $row3->url ."'>");
?>


2 tables :
dernurl
Champ Type Null Défaut
dern char(2) Non


Cette table sert uniquement à stocker la position de la dernière URL utilisée. Elle est limitée à 1 seul enreg qui contient ce seul renseignement : la dernière position utilisée.
url
Champ Type Null Défaut
urlpos smallint(2) Non
url varchar(255) Non


Cette table contient un certain nombre d'URL que l'on desire sélectionner chacune à leur tour, à chaque accés d'une personne sur le script. Il convient donc, à chaque accés, d'afficher la page qui correspond à l'URL suivante, chaque URL sera sélectionnée chacune à son tour et de façon équitable...

Index :
Nom de la clé Type Cardinalité Champ
urlpos INDEX aucune urlpos



Jean-Marc - Portail : http://jean-marc.loilier.net
A voir également:

10 réponses

Utilisateur anonyme
1 janv. 2004 à 12:18
bonjour
la base contient aussi les URL à appeller
et qu'est-ce qui ne marche pas ?
il est vrai qu'une base de données uniquement pour ça ?
cordialement.
0
jmlir Messages postés 14 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 8 juillet 2008
1 janv. 2004 à 16:26
Bonjour et bonne année à tous et à toutes !
Hé oui : la table 'url' contient les url...
Hé oui : une BdD "juste pour celà"...
C'est important pour nous et... ça ne marche pas !
On voudrait bien que ça marche : alors, on s'adresse aux gens "qui savent" ...
Voici la "dernière version" du script testé :

<?php
mysql_connect("mysql3.xxxxxxx.com", "xxxxx", "xxxxx");
mysql_select_db("xxxxx");
$stmt = "SELECT * from dernurl";
$result = mysql_query($stmt);
$row = mysql_fetch_object($result);
$stmt2 = "SELECT * from url";
$max = mysql_num_rows($stmt2);
$row->dern = $dern;
if ($dern == $max)
{
$dern = "0"
}
mysql_query("TRUNCATE table dernurl");
$dern = $dern+1
mysql_query("INSERT INTO dernurl VALUES($dern)");
$stmt3 = "SELECT url from url where urlpos='". $dern ."'";
$result3 = mysql_query($stmt3);
echo("<meta http-equiv='refresh' content='0;". $result3 ."'>");
?>
et l'erreur produite à l'éxécution :
Parse error: parse error in /home/jmlir4/www/diriger.php on line 13

Merci à l'avance de votre aide dans la mise au point de ce script.

Jean-Marc - Portail : http://jean-marc.loilier.net
0
jmlir Messages postés 14 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 8 juillet 2008
1 janv. 2004 à 16:34
Autant pour moi :
J'ai ajouté les deux ; là où ils manquaient et, maintenant, j'obtient, apparemment, une boucle et ce message d'erreur :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/jmlir4/www/diriger.php on line 8

Il n'y a aucun affichage de page pointée par les URL sélectionnées...
Le but et de répartir les contacts successivement sur les URL qui composent la table...

Vous avez une idée ?
La solution ?

Merci en tout cas pour ce que vous pourrez faire pour m'aider.

Jean-Marc - Portail : http://jean-marc.loilier.net
0
Utilisateur anonyme
2 janv. 2004 à 05:57
$stmt = "SELECT * from dernurl";
$result = mysql_query($stmt);
$row = mysql_fetch_object($result);
$stmt2 = "SELECT * from url";
pourquoi pas de query ??
$max = mysql_num_rows($stmt2);
....
il y a peut-être d'autres erreurs ?

mais j'avoue ne pas être un grand spécialiste de mysql
( c'est un doux euphémisme ) et j'aurais plutôt opter
pour une solution comme celle-ci par exemple :
==========
<?
$fichier="NDUU.dat"; // nom du fichier compteur
$url=array("exemple1.htm", // table des URL
"exemple2.htm",
"exemple3.htm",
"exemple4.htm");
$fic=fopen($fichier,"r"); // lecture compteur
$num=fgets($fic,8); // message d'avertissement
fclose($fic); // si fichier n'existe pas.
$num++; // +1
if ($num>=count($url)) $num=0; // 0 si > maxi
$fic = fopen($fichier,"w+"); // réecrire compteur
fseek($fic,0);
fputs($fic,$num);
fclose($fic);
?>
<script>
window.location="<?echo $url[$num];?>"; // charger URL
</script>
<?
=========enfin, si j'ai bien compris le but de la manoeuvre
cordialement.
0
jmlir Messages postés 14 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 8 juillet 2008
2 janv. 2004 à 09:44
Re-Bonjour Bul,
Voilà les résultats de mon essai :
J'ai donc inclus votre script dans une page html
roue.html :

<html>
<!-- Date de création: 02/01/2004 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Roue Equitable</title>
</head>
<body>
<?
$fichier="NDUU.dat";
$url=array("http://www.loilier.com/",
"http://jean-marc.loilier.net/",
"http://www.webheberg.com/",
"http://www.u-blog.net/");
$fic=fopen($fichier,"r");
$num=fgets($fic,8);
fclose($fic);
$num++;
if ($num>=count($url)) $num=0;
$fic = fopen($fichier,"w+");
fseek($fic,0);
fputs($fic,$num);
fclose($fic);
?>
<script>
window.location="<?echo $url[$num];?>";
</script>


</body>
</html>

Cette page html est mise en place sous http://www.loilier.net
et, à l'éxécution, le navigateur tente d'ouvrir ceci :
http://www.loilier.net/<?echo%20$url[$num];?>
Ce qui provoque, bien évidemment, une erreur bien compréhensible...
Voulez vous revoir la fonction d'affichage pour moi ?
Le fichier NDUU.dat existe dans le même répertoire et il contient la valeur 0.
Merci.

Jean-Marc - Portail : http://jean-marc.loilier.net
0

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

Posez votre question
jmlir Messages postés 14 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 8 juillet 2008
2 janv. 2004 à 09:01
Merci pour votre aide...
C'est sympa !
C'est vrai qu'une table semble plus facile à exploiter d'une Bdd MySQL... Je vais tester cette solution de suite.
Je vous tiens informé.
Bonne année à vous et à vos proches.

Jean-Marc - Portail : http://jean-marc.loilier.net
0
Utilisateur anonyme
2 janv. 2004 à 10:02
ben je ne comprend pas
j'ai copié/coller le texte ci-dessus
sauvé vers un fichier (ex1.php)
et exécuter avec mon web local, tout marche,
j'accède aux url.
ah ! faut-il nommer le fichier roue.php
?
et/ou remplacer la ligne <script>
par <script type="text/javascript">
?
essais, moi aussi, tient au courant, rapidement.
0
jmlir Messages postés 14 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 8 juillet 2008
2 janv. 2004 à 10:11
Ben évidement que ça marche : j'suis trop bête... voilà tout !
Merci encore : je vais vous élever une statue en grandeur réélle dans mon jardin !!!
Bonne journée.
Jean-Marc - Portail : http://jean-marc.loilier.net
0
Utilisateur anonyme
2 janv. 2004 à 10:06
je viens de faire l'essai
il faut nommer roue.php et non roue.htm
mais modifier quand la ligne <script>
pour respecter la syntaxe en vigueur.
et dites- moi !
cordialement
0
Utilisateur anonyme
2 janv. 2004 à 10:13
il vous en prie, heureux d'avoir pu rendre service
a+
0
jmlir Messages postés 14 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 8 juillet 2008
2 janv. 2004 à 10:30
Maintenant, le script (roue.php) est exactement en fonctionnement comme ça :

<?
$fichier="NDUU.dat";
$url=array("http://www.loilier.com/",
"http://jean-marc.loilier.net/",
"http://www.webheberg.com/",
"http://www.u-blog.net/");
$fic=fopen($fichier,"r");
$num=fgets($fic,8);
fclose($fic);
$num++;
if ($num>=count($url)) $num=0;
$fic = fopen($fichier,"w+");
fseek($fic,0);
fputs($fic,$num);
fclose($fic);
?>
<script>
window.location="<?echo $url[$num];?>";
</script>

Qu'est ce qu'il faut "mais modifier quand la ligne <script>
pour respecter la syntaxe en vigueur" ? J'ai pas tout compris la phrase... on dirait que vous avez oublié un mot en tapant trop vite ??

Merci encore : vous êtes le meilleur !


Jean-Marc - Portail : http://jean-marc.loilier.net
0
Utilisateur anonyme
2 janv. 2004 à 12:30
la bonne syntaxe pour le début d'un code Javascript est
<script type="text/javascript">
et non <script> comme j'avais mis par erreur,inattention.
ça marche, mais sur tout ? partout ? vaut mieux rectifier
ne serait-ce que pour le principe et l'avenir.

vous apporterez les améliorations utiles
test si fichier existe
lecture non pas de 8 caractères (fgets) mais de la taille du fichier
.....

cordialement. le meilleur après le pinard,
je ne suis qu'un tout petit.
0