Page 1 sur 3

mon prog ne marche pas

Posté : 17 mai 2005, 09:34
par le nul en php
bonjour, j'ai fait un programme pourrécuperer certaines lignes d'une table afin de la mettre dans un autre de la meme base de donnée et ca ne marche pas quelqu'un auarait il la solution à mon probleme
<?
include ("MySQLConnect.php"); # Connexion à la base de données
include_once( "Fct_Fichier.php" );
//******************************************************************************
// Constantes *
//******************************************************************************


define("LOGIN","ENSIA"); # votre login
define("PASS" ,"ENSIA"); # votre mot de passe

define("UPDATE", 30); # fréquence de rafraichissement de la page (s)

//******************************************************************************
// FONCTIONS *
//******************************************************************************

// conversion dec -> bin -> ON/OFF----------------------------------------------
function DecOnOff($VALDEC)
{

$D['bin']=DecBin($VALDEC);

$nb=8-strlen( $D['bin'] );
for ( $i=0; $i<$nb; $i++ )
$D['bin']='0'.$D['bin'];

for ( $i=0; $i<8 ; $i++ )
if ( $D['bin'][$i]=='1' ) $D[7-$i]='<FONT color="#FFFFFF">ON'; else $D[7-$i]='<FONT color="#CC3333">OFF';

return($D);
}

// Fonction de conversion format DATE MySQL-------------------------------------
// aaaa-mm-jj hh:mm:ss -> format jj/mm/aaaa et hh:mm:ss
function Date_Heure($string_date)
{
$Date['heure']=substr( $string_date, 11 );
$date_array=explode( "-", substr( $string_date, 0, 10 ) );
$Date['date']=$date_array[2]."/".$date_array[1]."/".$date_array[0];
return($Date);
}

function Enregistrement_Fichier( $Nom_Fichier, $VALDEC )
{
$Pointeur_Fichier = fopen( $Nom_Fichier, "a+" );
fwrite( $Pointeur_Fichier, $VALDEC, strlen( $VALDEC ) );
fclose( $Pointeur_Fichier );
}
//******************************************************************************
// CODE *
//******************************************************************************

// Vérification login et mot de passe-------------------------------------------
if( isset( $_GET["LOGIN"], $_GET["PASS"] ) )
{
if ( $_GET["LOGIN"]!=LOGIN || $_GET["PASS"]!=PASS )
exit("ECHEC : Login/pass incorrects !");
}
else
{

echo " Ton fomulaire sera ICI !!!<br>
<a href='?LOGIN=?&PASS=?' title='Coucou'>Se loguer</a>";
exit(0);
}

// AFFICHAGE des données pour consultation client HTTP--------------------------

# En-tête de la page HTML
echo '
<HTML>
<HEAD>
<TITLE>8 ENTREES LOGIQUES - Tableau ('.$_SERVER["PHP_SELF"].')</TITLE>
</HEAD>
';

# Timer pour actualiser automatiquement la page HTML
$UPDATE=UPDATE * 1000;
echo '<BODY OnLoad="setTimeout(\'history.go(0)\','.$UPDATE.')">';

# En-tête du tableau présentant les mesures
echo '
<TABLE WIDTH="100%" BORDER="1" CELLSPACING="1" CELLPADDING="1">
<TR BGCOLOR="black">
<TD><FONT color="white">N°</TD>
<TD><FONT color="white">DATE</TD>
<TD><FONT color="white">HEURE</TD>
<TD><FONT color="white">DEC</TD>
<TD><FONT color="white">HEX</TD>
<TD><FONT color="white">BIN</TD>
<TD><FONT color="white">D7</TD>
<TD><FONT color="white">D6</TD>
<TD><FONT color="white">D5</TD>
<TD><FONT color="white">D4</TD>
<TD><FONT color="white">D3</TD>
<TD><FONT color="white">D2</TD>
<TD><FONT color="white">D1</TD>
<TD><FONT color="white">D0</TD>
</TR>
';

# Requête en base et récupération ou non des valeurs dans un tableau

$quer=mysql_query("SELECT * FROM 8el");//ta requete
while ($tab=mysql_fetch_array($quer))//on recup les info de la table
{
$VALDEC=$tab['VALDEC'];// on recupere valdec et on la rentre dns une var
if($VALDEC!=255)//on verifie la valeur si elle est dif de d'hab
{
$ins=mysql_query("INSERT INTO 'alertes' VALUES( ['VALDEC'], ['DATE'] ) SELECT '8el' (['VALDEC'], ['DATE'] )

");// on effectue la requete d'insert
if (!$ins)// si la requete echoue
{
echo("L'insertion à foirée");//msg erreur
}//fin de verification du insert
}// fin du if si la valeur est différente de l'habitude
}// fin du while

# Requête en base et présentation des mesures dans un tableau

$query="SELECT DATE,VALDEC FROM alertes ORDER BY id";
$result=mysql_query($query,$mysql_link);
$i=1;
while ( $a_row=mysql_fetch_array($result) )
{
//$Date=Date_Heure( $a_row['DATE'] ); # Conversion DATE / HEURE
$Date['date'] = date("j-M-Y", $a_row['DATE'] );
$Date['heure'] = date("H:i:s", $a_row['DATE'] );
$string_hex=strtoupper( DecHex( $a_row['VALDEC'] ) ); # conversion dec -> hex
$D=DecOnOff( $a_row['VALDEC'] ); # conversion dec -> ON / OFF
echo '
<TR BGCOLOR="silver">
<TD>'.$i++.'</TD>
<TD>'.$Date['date'].'</TD>
<TD>'.$Date['heure'].'</TD>
<TD>'.$a_row['VALDEC'].'</TD>
<TD>'.$string_hex.'</TD>
<TD>'.$D['bin'].'</TD>
<TD>'.$D[7].'</TD>
<TD>'.$D[6].'</TD>
<TD>'.$D[5].'</TD>
<TD>'.$D[4].'</TD>
<TD>'.$D[3].'</TD>
<TD>'.$D[2].'</TD>
<TD>'.$D[1].'</TD>
<TD>'.$D[0].'</TD>
</TR>
';
Enregistrement_Fichier( "historique.txt", $a_row['VALDEC']);

}
echo '</TABLE></BODY></HTML>';

?>

Posté : 17 mai 2005, 09:39
par zeus
Excuse moi mais ton post donne pas trop envie de répondre :

- titre : on se doute bien que ça marche pas, sinon tu ne serais pas là
- description du problème : donne nous un peu plus d'infos, ça nous aidera à comprendre ton problème
- présentation : il existe une balise qui sert à formater le code PHP, c'est beaucoup plus joli !!! sisi, la 5eme au dessus de la zonne de texte quand tu rédige !!!


Sinon, tu peux nous dire où est-ce que ça bloque ?

Posté : 17 mai 2005, 09:40
par zeus
Ton code avec la balise PHP

<?
include ("MySQLConnect.php"); # Connexion à la base de données
include_once( "Fct_Fichier.php" );
//******************************************************************************
// Constantes *
//******************************************************************************


define("LOGIN","ENSIA"); # votre login
define("PASS" ,"ENSIA"); # votre mot de passe

define("UPDATE", 30); # fréquence de rafraichissement de la page (s)

//******************************************************************************
// FONCTIONS *
//******************************************************************************

// conversion dec -> bin -> ON/OFF----------------------------------------------
function DecOnOff($VALDEC)
{

$D['bin']=DecBin($VALDEC);

$nb=8-strlen( $D['bin'] );
for ( $i=0; $i<$nb; $i++ )
$D['bin']='0'.$D['bin'];

for ( $i=0; $i<8 ; $i++ )
if ( $D['bin'][$i]=='1' ) $D[7-$i]='<FONT color="#FFFFFF">ON'; else $D[7-$i]='<FONT color="#CC3333">OFF';

return($D);
}

// Fonction de conversion format DATE MySQL-------------------------------------
// aaaa-mm-jj hh:mm:ss -> format jj/mm/aaaa et hh:mm:ss
function Date_Heure($string_date)
{
$Date['heure']=substr( $string_date, 11 );
$date_array=explode( "-", substr( $string_date, 0, 10 ) );
$Date['date']=$date_array[2]."/".$date_array[1]."/".$date_array[0];
return($Date);
}

function Enregistrement_Fichier( $Nom_Fichier, $VALDEC )
{
$Pointeur_Fichier = fopen( $Nom_Fichier, "a+" );
fwrite( $Pointeur_Fichier, $VALDEC, strlen( $VALDEC ) );
fclose( $Pointeur_Fichier );
}
//******************************************************************************
// CODE *
//******************************************************************************

// Vérification login et mot de passe-------------------------------------------
if( isset( $_GET["LOGIN"], $_GET["PASS"] ) )
{
if ( $_GET["LOGIN"]!=LOGIN || $_GET["PASS"]!=PASS )
exit("ECHEC : Login/pass incorrects !");
}
else
{

echo " Ton fomulaire sera ICI !!!<br>
<a href='?LOGIN=?&PASS=?' title='Coucou'>Se loguer</a>";
exit(0);
}

// AFFICHAGE des données pour consultation client HTTP--------------------------

# En-tête de la page HTML
echo '
<HTML>
<HEAD>
<TITLE>8 ENTREES LOGIQUES - Tableau ('.$_SERVER["PHP_SELF"].')</TITLE>
</HEAD>
';

# Timer pour actualiser automatiquement la page HTML
$UPDATE=UPDATE * 1000;
echo '<BODY OnLoad="setTimeout(\'history.go(0)\','.$UPDATE.')">';

# En-tête du tableau présentant les mesures
echo '
<TABLE WIDTH="100%" BORDER="1" CELLSPACING="1" CELLPADDING="1">
<TR BGCOLOR="black">
<TD><FONT color="white">N°</TD>
<TD><FONT color="white">DATE</TD>
<TD><FONT color="white">HEURE</TD>
<TD><FONT color="white">DEC</TD>
<TD><FONT color="white">HEX</TD>
<TD><FONT color="white">BIN</TD>
<TD><FONT color="white">D7</TD>
<TD><FONT color="white">D6</TD>
<TD><FONT color="white">D5</TD>
<TD><FONT color="white">D4</TD>
<TD><FONT color="white">D3</TD>
<TD><FONT color="white">D2</TD>
<TD><FONT color="white">D1</TD>
<TD><FONT color="white">D0</TD>
</TR>
';

# Requête en base et récupération ou non des valeurs dans un tableau

$quer=mysql_query("SELECT * FROM 8el");//ta requete
while ($tab=mysql_fetch_array($quer))//on recup les info de la table
{
$VALDEC=$tab['VALDEC'];// on recupere valdec et on la rentre dns une var
if($VALDEC!=255)//on verifie la valeur si elle est dif de d'hab
{
$ins=mysql_query("INSERT INTO 'alertes' VALUES( ['VALDEC'], ['DATE'] ) SELECT '8el' (['VALDEC'], ['DATE'] )

");// on effectue la requete d'insert
if (!$ins)// si la requete echoue
{
echo("L'insertion à foirée");//msg erreur
}//fin de verification du insert
}// fin du if si la valeur est différente de l'habitude
}// fin du while

# Requête en base et présentation des mesures dans un tableau

$query="SELECT DATE,VALDEC FROM alertes ORDER BY id";
$result=mysql_query($query,$mysql_link);
$i=1;
while ( $a_row=mysql_fetch_array($result) )
{
//$Date=Date_Heure( $a_row['DATE'] ); # Conversion DATE / HEURE
$Date['date'] = date("j-M-Y", $a_row['DATE'] );
$Date['heure'] = date("H:i:s", $a_row['DATE'] );
$string_hex=strtoupper( DecHex( $a_row['VALDEC'] ) ); # conversion dec -> hex
$D=DecOnOff( $a_row['VALDEC'] ); # conversion dec -> ON / OFF
echo '
<TR BGCOLOR="silver">
<TD>'.$i++.'</TD>
<TD>'.$Date['date'].'</TD>
<TD>'.$Date['heure'].'</TD>
<TD>'.$a_row['VALDEC'].'</TD>
<TD>'.$string_hex.'</TD>
<TD>'.$D['bin'].'</TD>
<TD>'.$D[7].'</TD>
<TD>'.$D[6].'</TD>
<TD>'.$D[5].'</TD>
<TD>'.$D[4].'</TD>
<TD>'.$D[3].'</TD>
<TD>'.$D[2].'</TD>
<TD>'.$D[1].'</TD>
<TD>'.$D[0].'</TD>
</TR>
';
Enregistrement_Fichier( "historique.txt", $a_row['VALDEC']);

}
echo '</TABLE></BODY></HTML>';

?>
[/size]

pb au niveau de la requete d'insertion

Posté : 17 mai 2005, 09:50
par nul en php
je suis désolé mais je travaille avec bloc note et je ne connaissais pas la balise php.Pour mon programme mon probleme se situe au niveau des requêtes me permettant d'une par de lire ma table '8el' de comparer la valeur de VALDEC à 255 condition permettant de déterminer si la ligne de la table '8el' doit être inserer dans la table 'alertes' et de réaliser cette insertion .

$quer=mysql_query("SELECT * FROM 8el");//ta requete
while ($tab=mysql_fetch_array($quer))//on recup les info de la table
{
$VALDEC=$tab['VALDEC'];// on recupere valdec et on la rentre dns une var
if($VALDEC!=255)//on verifie la valeur si elle est dif de d'hab
{
$ins=mysql_query("INSERT INTO 'alertes' VALUES( ['VALDEC'], ['DATE'] ) SELECT '8el' (['VALDEC'], ['DATE'] )

");// on effectue la requete d'insert
if (!$ins)// si la requete echoue
{
echo("L'insertion à foirée");//msg erreur
}//fin de verification du insert
}// fin du if si la valeur est différente de l'habitude
}// fin du while

Cette partie de programme m'a été donné par un mec sur ce forum et je crois que je n'ai pas su l'adapter correctement à mes besoins

Posté : 17 mai 2005, 09:57
par Cyrano
Ça sent la syntaxe MS-ACCESS :

Code : Tout sélectionner

"INSERT INTO 'alertes' VALUES( ['VALDEC'], ['DATE'] ) SELECT '8el' (['VALDEC'], ['DATE']
Vire les crochets autour des noms de champ, MySQL ne doit pas baucoup les aimer.

Ensuite, tu as dans la même requête un INSERT et un SELECT sans transition ni séparation : quelle version de MySQL utilises-tu ? Je ne suis pas certain que cette formulation fonctionne sur une version inférieure à 4.1 (faut que je vérifie)

Posté : 17 mai 2005, 09:59
par zeus
Ca n'a rien à voir avec NotPad !!! Je te parle du Forum !!!

D'ailleurs, maintenant que tu connais son existence, utilise là !! Merci d'avance

<HORS SUJET>
Si tu veut du gratuit qui marche bien, renseigne toi sur Scite (Dans la zone Download), un petit editeur de code qui accepte pas mal de langages, les onglets, coloration syntaxique. Ca marchera mieux que NotPad !!! :lol:
</HORS SUJET>


Sinon, comment est ce que tu te rned compte que ça ne marche pas ? message d'erreur ? rien dans la bdd ? ...

Donne nous toutes ces infos

c la version 4.0.15 de Mysql

Posté : 17 mai 2005, 10:02
par nul en php
c la version 4.0.15 de Mysql

Posté : 17 mai 2005, 10:06
par pjl
Quel est l'intéret de coder des fonctions qui existent déjà ?
// Fonction de conversion format DATE MySQL-------------------------------------
// aaaa-mm-jj hh:mm:ss -> format jj/mm/aaaa et hh:mm:ss
function Date_Heure($string_date)
{
$Date['heure']=substr( $string_date, 11 );
$date_array=explode( "-", substr( $string_date, 0, 10 ) );
$Date['date']=$date_array[2]."/".$date_array[1]."/".$date_array[0];
return($Date);
} 
Et pour ton PB, le plus simple est de tester directement ta requête dans un client de ta base de données style PhpMyAdmin.

reponse a zeus

Posté : 17 mai 2005, 10:06
par nul en php
en fait ma table 'alertes' reste vide et page qui devrait afficher les informations indique que l'insertion a foiré

Posté : 17 mai 2005, 10:11
par Cyrano
Effectivement, si je me fie à la doc, le INSERT ... SELECT doit fonctionner: as-tu essayé en enlevant les crochets autour des noms de champs ou de valeurs ?

essaie en Myadmin

Posté : 17 mai 2005, 10:14
par nul en php
quand j'essaie ma requete d'insertion directement dans myAdmin il y a une erreur de syntaxe et je ne comprend pas pourquoi


INSERT INTO alertes
VALUES (

'VALDEC', 'DATE'
)
SELECT 8el(
' VALDEC', 'DATE'
)

MySQL a répondu:


#1064 - Erreur de syntaxe près de 'SELECT 8el( ' VALDEC', 'DATE' )' à la ligne 3
[/php]

j'ai fait un essaie sans les crochets

Posté : 17 mai 2005, 10:16
par nul en php
et ca n'a rien changé

Posté : 17 mai 2005, 10:16
par zeus
Si tu as fait un copier/coller fidèle, je vois un espace entre ' et VALDEC
#1064 - Erreur de syntaxe près de 'SELECT 8el( ' VALDEC', 'DATE' )' à la ligne 3

Posté : 17 mai 2005, 10:19
par nul en php
l'espace entre ' et VALDEC n'a rien changé j'ai toujours le même problème

Posté : 17 mai 2005, 10:21
par zeus
Truc con, essaye cette requete :

Code : Tout sélectionner

INSERT INTO alertes VALUES ('VALDEC', 'DATE') (SELECT 8el( ' VALDEC', 'DATE' ))