Bonjour, dans un premier temps, si tu es débutant en php il serait fortement intéressant de poster ta demande dans la branche de forum qui correspond, cad "débutant", car la tu es dans la section "avancé" donc si je commence une explication devrait logiquement être adapté à ton niveau.
Pour faire simple, en php tu peux stocker des informations dans la mémoire de ton ordinateur / serveur grâce a plusieurs procédés.
La variable simple :
$var = "du text" ;
un tableau à clé numérique :
! important : les tableaux à clé numérique commence par 0.
$table = array( "premième cellule", "deuxième cellule", "etc" );
exploitation des données :
echo $table[1] ; // affichera "deuxième cellule"
un tableau à clé alphanumérique :
$table = array( "cle_1" => "premième cellule", "cle_2" => "deuxième cellule", "cle_n" => "etc" );
exploitation des données :
echo $table["cle_2"] ; // affichera "deuxième cellule"
pour interpreter le résultat d'un tableau je t'invite a exploiter la fonction "print_r($table)"
De manière plus générale, si tu début en développement je t'invite fortement à posséder un IDE (application pour développer), je te conseille vivement NetBeans, il est gratuit.
Si tu dois développer de manière plus pousser en php, consulte
http://php.net/manual/fr/index.php, bible du débutant !
dans ton cas par exemple :
http://php.net/manual/fr/language.types.array.php
Après comme tu veux manipuler des informations qu'un client pourrait enregistrer à un moment T, tu as plusieurs possibilités, par l'intermédiaire d'un fichier ini par exemple, ou par un base de donnée (qui est à mon goût la meilleur solution).
je t'invite à comprendre le fonctionnement de la fonction "parse_ini_file()" qui dans ton cas pourrais t'aider :
http://php.net/manual/fr/function.parse-ini-file.php
Je vais te montrer comment je ferai :
EN MODE FICHIER :
<?php
// j'initialise la variable $erreur à 'faux' ;
$erreur = false ;
// Constante de répertoire qui défini le répertoire racine quand je vais appeller PATH_ROOT
define( 'PATH_ROOT', dirname( __FILE__ ) );
// Si le post n'est pas vide, en gros si un formulaire a été lancé
// Et que le input avec le name "email" n'est pas vide
if( !empty( $_POST )
and !empty( $_POST['email'] ) )
{
// Je charge le fichier user.ini dans un tableau
$users = parse_ini_file( PATH_ROOT.'/user.ini', true );
// Je compte combien il y a d'utilisateur enregistrer dans le tableau
$count = count( $users );
// Je défini le fuseau horraire
date_default_timezone_set('Europe/Paris');
// Je charge la date et l'heure en gardant la norme timestamp
$now = date( "Y-m-d H:i:s" );
// Je charge l'ip du client
$ip = $_SERVER ['REMOTE_ADDR'] ;
// Je charge l'explorateur
$navi = $_SERVER ['HTTP_USER_AGENT'] ;
// Je créer un chaine de caractère qui sera mon nouveau client
$new_user = "[$count]\n" ;
$new_user.= "mail = '{$_POST['email']}'\n" ;
$new_user.= "ip = '$ip'\n" ;
$new_user.= "date = '$now'\n" ;
$new_user.= "nav = '$navi'\n" ;
// J'insert ce nouveau client dans le fichier user.ini
file_put_contents( PATH_ROOT.'/user.ini', $new_user, FILE_APPEND );
}
// sinon la variable $erreur vaut 'vrai'
else
{
$erreur = true ;
}
// Je réouvre le fichier ini pour actualiser la dernière entré
$users = parse_ini_file( PATH_ROOT.'/user.ini', true );
// HTML :
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Site</title>
</head>
<body>
<?php if( $erreur == true ): ?>
<h1 style="color: red;">Le formulaire ne peut être vide</h1>
<?php endif ?>
<form method="POST" action="index.php">
<legend>Email :</legend>
<input type="text" name="email" />
<input type="submit" value="Valider" />
</form>
<pre><?php print_r( $users ) ?></pre>
</body>
</html>
EN MODE BASE DE DONNÉES qui est au niveau de PHP avancé :
<?php
/*
*
BASE DE DONNEE A INSERER :
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `exemple` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `exemple` ;
-- -----------------------------------------------------
-- Table `exemple`.`user`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `exemple`.`user` (
`id` INT NOT NULL AUTO_INCREMENT ,
`email` VARCHAR(45) NULL ,
`ip` VARCHAR(45) NULL ,
`nav` VARCHAR(45) NULL ,
`date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
USE `exemple` ;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
*/
$erreur = false ;
$dbhost = "127.0.0.1" ;
$dbname = "exemple" ;
$dbuser = "root" ;
$dbpass = "" ;
$database = new PDO( "mysql:host=$dbhost;dbname=$dbname;", $dbuser, $dbpass );
// Gestion du formulaire :
if( !empty( $_POST )
and !empty( $_POST['email'] )
and filter_var( $_POST['email'], FILTER_VALIDATE_EMAIL ) )
{
$sql = "INSERT INTO user(email,ip,nav) VALUES (?,?,?)" ;
$req = $database-> prepare( $sql );
$req-> execute( array( $_POST['email'], $_SERVER ['REMOTE_ADDR'], $_SERVER ['REMOTE_ADDR'] ) );
}
else
{
$erreur = true ;
}
// Récupération des clients :
$sql = "SELECT * FROM user" ;
$req = $database-> prepare( $sql );
$req-> execute();
$result = $req-> fetchAll( PDO::FETCH_OBJ );
// Code html
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php if( $erreur == true ): ?>
<h1 style="color: red;">L'email est invalide</h1>
<?php endif ?>
<form method='POST' action='index.php'>
<input type='text' name='email' />
<input type='submit' value='Valider'/>
</form>
<pre>
<?php print_r( $result ) ?>
</pre>
</body>
</html>
Salut
Bonjour, dans un premier temps, si tu es débutant en php il serait fortement intéressant de poster ta demande dans la branche de forum qui correspond, cad "débutant", car la tu es dans la section "avancé" donc si je commence une explication devrait logiquement être adapté à ton niveau.
Pour faire simple, en php tu peux stocker des informations dans la mémoire de ton ordinateur / serveur grâce a plusieurs procédés.
La variable simple :
$var = "du text" ;
un tableau à clé numérique :
! important : les tableaux à clé numérique commence par 0.
$table = array( "premième cellule", "deuxième cellule", "etc" );
exploitation des données :
echo $table[1] ; // affichera "deuxième cellule"
un tableau à clé alphanumérique :
$table = array( "cle_1" => "premième cellule", "cle_2" => "deuxième cellule", "cle_n" => "etc" );
exploitation des données :
echo $table["cle_2"] ; // affichera "deuxième cellule"
pour interpreter le résultat d'un tableau je t'invite a exploiter la fonction "print_r($table)"
De manière plus générale, si tu début en développement je t'invite fortement à posséder un IDE (application pour développer), je te conseille vivement NetBeans, il est gratuit.
Si tu dois développer de manière plus pousser en php, consulte http://php.net/manual/fr/index.php, bible du débutant !
dans ton cas par exemple : http://php.net/manual/fr/language.types.array.php
Après comme tu veux manipuler des informations qu'un client pourrait enregistrer à un moment T, tu as plusieurs possibilités, par l'intermédiaire d'un fichier ini par exemple, ou par un base de donnée (qui est à mon goût la meilleur solution).
je t'invite à comprendre le fonctionnement de la fonction "parse_ini_file()" qui dans ton cas pourrais t'aider :
http://php.net/manual/fr/function.parse-ini-file.php
Je vais te montrer comment je ferai :
EN MODE FICHIER :
[php]
<?php
// j'initialise la variable $erreur à 'faux' ;
$erreur = false ;
// Constante de répertoire qui défini le répertoire racine quand je vais appeller PATH_ROOT
define( 'PATH_ROOT', dirname( __FILE__ ) );
// Si le post n'est pas vide, en gros si un formulaire a été lancé
// Et que le input avec le name "email" n'est pas vide
if( !empty( $_POST )
and !empty( $_POST['email'] ) )
{
// Je charge le fichier user.ini dans un tableau
$users = parse_ini_file( PATH_ROOT.'/user.ini', true );
// Je compte combien il y a d'utilisateur enregistrer dans le tableau
$count = count( $users );
// Je défini le fuseau horraire
date_default_timezone_set('Europe/Paris');
// Je charge la date et l'heure en gardant la norme timestamp
$now = date( "Y-m-d H:i:s" );
// Je charge l'ip du client
$ip = $_SERVER ['REMOTE_ADDR'] ;
// Je charge l'explorateur
$navi = $_SERVER ['HTTP_USER_AGENT'] ;
// Je créer un chaine de caractère qui sera mon nouveau client
$new_user = "[$count]\n" ;
$new_user.= "mail = '{$_POST['email']}'\n" ;
$new_user.= "ip = '$ip'\n" ;
$new_user.= "date = '$now'\n" ;
$new_user.= "nav = '$navi'\n" ;
// J'insert ce nouveau client dans le fichier user.ini
file_put_contents( PATH_ROOT.'/user.ini', $new_user, FILE_APPEND );
}
// sinon la variable $erreur vaut 'vrai'
else
{
$erreur = true ;
}
// Je réouvre le fichier ini pour actualiser la dernière entré
$users = parse_ini_file( PATH_ROOT.'/user.ini', true );
// HTML :
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Site</title>
</head>
<body>
<?php if( $erreur == true ): ?>
<h1 style="color: red;">Le formulaire ne peut être vide</h1>
<?php endif ?>
<form method="POST" action="index.php">
<legend>Email :</legend>
<input type="text" name="email" />
<input type="submit" value="Valider" />
</form>
<pre><?php print_r( $users ) ?></pre>
</body>
</html>
[/php]
EN MODE BASE DE DONNÉES qui est au niveau de PHP avancé :
[php]
<?php
/*
*
BASE DE DONNEE A INSERER :
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `exemple` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `exemple` ;
-- -----------------------------------------------------
-- Table `exemple`.`user`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `exemple`.`user` (
`id` INT NOT NULL AUTO_INCREMENT ,
`email` VARCHAR(45) NULL ,
`ip` VARCHAR(45) NULL ,
`nav` VARCHAR(45) NULL ,
`date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
USE `exemple` ;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
*/
$erreur = false ;
$dbhost = "127.0.0.1" ;
$dbname = "exemple" ;
$dbuser = "root" ;
$dbpass = "" ;
$database = new PDO( "mysql:host=$dbhost;dbname=$dbname;", $dbuser, $dbpass );
// Gestion du formulaire :
if( !empty( $_POST )
and !empty( $_POST['email'] )
and filter_var( $_POST['email'], FILTER_VALIDATE_EMAIL ) )
{
$sql = "INSERT INTO user(email,ip,nav) VALUES (?,?,?)" ;
$req = $database-> prepare( $sql );
$req-> execute( array( $_POST['email'], $_SERVER ['REMOTE_ADDR'], $_SERVER ['REMOTE_ADDR'] ) );
}
else
{
$erreur = true ;
}
// Récupération des clients :
$sql = "SELECT * FROM user" ;
$req = $database-> prepare( $sql );
$req-> execute();
$result = $req-> fetchAll( PDO::FETCH_OBJ );
// Code html
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php if( $erreur == true ): ?>
<h1 style="color: red;">L'email est invalide</h1>
<?php endif ?>
<form method='POST' action='index.php'>
<input type='text' name='email' />
<input type='submit' value='Valider'/>
</form>
<pre>
<?php print_r( $result ) ?>
</pre>
</body>
</html>
[/php]
Salut