Page 1 sur 1

Problème de script

Posté : 04 juin 2005, 14:07
par Framic
Voila j'ai un petit probleme avec ce script j'aimerais savoir ce qui ne va pas :
<?php
$id = $_GET['id'];

$db = mysql_connect("*****", "*****", "*****");

mysql_select_db("*****",$db);

$sql = "select * FROM cpt_live WHERE id = '$id'";

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

while($data = mysql_fetch_assoc($req))
{
$temps = $data['temps'];
$avant = $data['avant'];
$apres = $data['apres'];
$police = $data['police'];
$taille = $data['taille'];
$couleur = $data['couleur'];

if(!isset($_GET['id']))
{
echo"Accès non autorisé !";
exit;
}
else
{
$nb_max_c="<?php echo $temps; ?>";
$heure_cour = time(); // l'heure du moment

// On supprime
mysql_query("delete from cpt_live where time<=".$nb_max_c." and id=\"$id\"");

// l'ip du visiteur est dans la table ou non !
$sql = mysql_query("select * from cpt_live where ip=\"$REMOTE_ADDR\" and id=\"$id\"");

if(mysql_num_rows($sql) ==0)
   {<-- ligne 46 c'est la ^^
   // on insert sont ip
   mysql_query("insert into cpt_live values(\"$id\",\"$REMOTE_ADDR\",\"".($heure_cour+$nb_max_c)."\")");
   }
   else
   {
   // mettre à jour la connection
   mysql_query("update cpt_live set time=time+".$heure_cour+$nb_max_c." where ip=\"$REMOTE_ADDR\" and id=\"$id\"");
   }

 
   $query_sql = mysql_query("select * from cpt_live where id=\"$id\"");
   $nb_connect_actu = mysql_num_rows($query_sql);

   echo "<font color='$couleur' size='$taille' face='$police'><?php echo $avant; ?> <?php echo $nb_connect_actu; ?> <?php echo $apres; ?></font> "

mysql_close();
}
?>
Deja cette erreur :(
Parse error: parse error, unexpected '{' in /var/www/free.fr/0/8/pourtapage/cpt_live.php on line 46
VOila merci ^^

Posté : 04 juin 2005, 14:19
par albat
Essaie avec ça :
$req = "SELECT * FROM cpt_live WHERE ip='".$REMOTE_ADDR."' AND id=".$id;
$res = mysql_query($req) or die();
$nbl = mysql_num_rows($res);
if ($nbl==0) ...
RAPPELS :
- Sortez les variables PHP des chaines de caractères.
- Pas de guillemets autour d'une valeur numérique ($id).
- Décomposez vos instructions en cas de bug.

Posté : 04 juin 2005, 14:23
par Cyrano
Après quelques corrections majeures, voici une proposition à tester avant d'aller plus loin:
<?php
$id = $_GET['id'];

$db = mysql_connect("*****", "*****", "*****");

mysql_select_db("*****",$db);

$sql = "select * FROM cpt_live WHERE id = '$id'";

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

while($data = mysql_fetch_assoc($req))
{
    $temps = $data['temps'];
    $avant = $data['avant'];
    $apres = $data['apres'];
    $police = $data['police'];
    $taille = $data['taille'];
    $couleur = $data['couleur'];

    if(!isset($_GET['id']))
    {
        echo"Accès non autorisé !";
        exit;
    }
    else
    {
        $nb_max_c= $temps;
        $heure_cour = time(); // l'heure du moment

        // On supprime
        mysql_query("delete from cpt_live where time <= ".$nb_max_c." and id=". $id);

        // l'ip du visiteur est dans la table ou non !
        $sql1 = mysql_query("select count(*) from cpt_live where ip=". $_SERVER['REMOTE_ADDR'] ." and id=". $id);

        if(mysql_result($sql1,0) == 0)
        {
            // on insere son ip
            mysql_query("insert into cpt_live values(".$id.",".$_SERVER['REMOTE_ADDR'].",". $heure_cour+$nb_max_c .")");
        }
        else
        {
            // mettre à jour la connexion
            mysql_query("update cpt_live set time=time+".$heure_cour+$nb_max_c." where ip=".$_SERVER['REMOTE_ADDR']." and id=".$id);
        }

        $query_sql = mysql_query("select * from cpt_live where id=". $id);
        $nb_connect_actu = mysql_num_rows($query_sql);

        echo "<font color=\"". $couleur ."\" size=\"".$taille."\" face=\"". $police ."\">". $avant ." ". $nb_connect_actu ." ". $apres ."</font>\n";

        mysql_close();
    }
}
?>

Posté : 04 juin 2005, 14:38
par Framic
Merci ^^

mais http://pourtapage.free.fr/cpt_live.php?id=1

Erreur au niveau de la fermuture de la base de donnée

:(

Posté : 04 juin 2005, 14:41
par Framic
ha non mtn c'est a ce niveau :
if(mysql_result($sql1,0) == 0)

Posté : 04 juin 2005, 14:47
par Cyrano
Essaye en remplaçant par
$res = mysql_result($sql1,0);
if($res == 0)

Posté : 04 juin 2005, 14:50
par Framic
Pu d' erreur mais ca affiche rien :(

Posté : 04 juin 2005, 15:08
par Cyrano
Alors fais afficher tes requêtes avec echo(); pour vérifier d'abord qu'elle sont générées normalement et qu'elles sont normales. Si elles ont l'air normales, fais les exécuter directement en les copiant/Collant dans une fenêtre SQL de phpMyAdmin pour avoir le retour.

Posté : 04 juin 2005, 15:28
par Framic
Voila c'est en faite la meme chose qu'avant la modification
Essaye en remplaçant par
PHP:
$res = mysql_result($sql1,0);
if($res == 0)
Donc il n'insere pas les ip dans la table

Posté : 04 juin 2005, 15:33
par Cyrano
Est-ce qu'une requête précédente ne te fait pas un retour vide ?

Posté : 04 juin 2005, 15:44
par Framic
non pas de retour a vide lors des precedante requete

Posté : 04 juin 2005, 15:49
par Cyrano
As-tu essayé echo($res); ?

Posté : 04 juin 2005, 15:53
par Framic
oui sa affiche rien

Posté : 04 juin 2005, 16:03
par albat
:shock: :?: :?: :?:

Posté : 04 juin 2005, 16:07
par Cyrano
Ça n'affiche rien..... et ça t'inspire quelle réflexion ??? Tu n'as pas l'impression qu'il y a incohérence avec ce que tu me disais plus tôt à propos des retours de requêtes ?