sqlite vers sql
Posté : 16 déc. 2011, 20:49
salut,
suite a des critiques de la part de Berzemus sur un script trop vieux, je passe a utre chose...
j'ai trouver un script de remplacement qui me parait être correct mais le soucis est qu'il enregistre dans un fichier texte hors moi j'ai une table:
voici le code:
Je sais que j'abuse mais serait il possible de me le commenter de façon a bien comprendre et trouver les modifs a appliquer ? voir même ce supprimer ce qui ne me sert a rien pour une BDD...
merci d'avance
suite a des critiques de la part de Berzemus sur un script trop vieux, je passe a utre chose...
j'ai trouver un script de remplacement qui me parait être correct mais le soucis est qu'il enregistre dans un fichier texte hors moi j'ai une table:
CREATE TABLE IF NOT EXISTS `vote` (
`id_vote` int(11) NOT NULL AUTO_INCREMENT,
`id_question` int(11) NOT NULL,
`id` int(11) NOT NULL,
`id_chien` int(11) NOT NULL,
`note` int(11) NOT NULL,
`signup_date` date NOT NULL,
PRIMARY KEY (`id_vote`),
KEY `fk_questionnaire1` (`id_question`),
KEY `fk_user2` (`id`),
KEY `fk_chien3` (`id_chien`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=607 ;
pourriez vous m'aider a transformer ce script pour qu'il enregistre comme je le veux dans ma table ?voici le code:
<?php
class rating{
public $average = 0;
public $votes;
public $status;
public $table;
private $path;
function __construct($table){
try{
$pathinfo = pathinfo(__FILE__);
$this->path = realpath($pathinfo['dirname']) . "/database/ratings.sqlite";
$dbh = new PDO("sqlite:$this->path");
$this->table = $dbh->quote($table);
// check if table needs to be created
$table_check = $dbh->query("SELECT * FROM $this->table WHERE id='1'");
if(!$table_check){
// create database table
$dbh->query("CREATE TABLE $this->table (id INTEGER PRIMARY KEY, rating FLOAT(3,2), ip VARCHAR(15))");
$dbh->query("INSERT INTO $this->table (rating, ip) VALUES (0, 'master')");
} else {
$this->average = $table_check->fetchColumn(1);
}
$this->votes = ($dbh->query("SELECT COUNT(*) FROM $this->table")->fetchColumn()-1);
}catch( PDOException $exception ){
die($exception->getMessage());
}
$dbh = NULL;
}
function set_score($score, $ip){
try{
$dbh = new PDO("sqlite:$this->path");
$voted = $dbh->query("SELECT id FROM $this->table WHERE ip='$ip'");
if(sizeof($voted->fetchAll())==0){
$dbh->query("INSERT INTO $this->table (rating, ip) VALUES ($score, '$ip')");
$this->votes++;
//cache average in the master row
$statement = $dbh->query("SELECT rating FROM $this->table");
$total = $quantity = 0;
$row = $statement->fetch(); //skip the master row
while($row = $statement->fetch()){
$total = $total + $row[0];
$quantity++;
}
$this->average = round((($total*20)/$quantity),0);
$statement = $dbh->query("UPDATE $this->table SET rating = $this->average WHERE id=1");
$this->status = '(Merci !)';
} else {
$this->status = '(Deja vote)';
}
}catch( PDOException $exception ){
die($exception->getMessage());
}
$dbh = NULL;
}
}
function rating_form($table){
$ip = $_SERVER["REMOTE_ADDR"];
if(!isset($table) && isset($_GET['table'])){
$table = $_GET['table'];
}
$rating = new rating($table);
$status = "<div class='score'>
<a class='score1' href='?score=1&table=$table&user=$ip'>1</a>
<a class='score2' href='?score=2&table=$table&user=$ip'>2</a>
<a class='score3' href='?score=3&table=$table&user=$ip'>3</a>
<a class='score4' href='?score=4&table=$table&user=$ip'>4</a>
<a class='score5' href='?score=5&table=$table&user=$ip'>5</a>
</div>
";
if(isset($_GET['score'])){
$score = $_GET['score'];
if(is_numeric($score) && $score <=5 && $score >=1 && ($table==$_GET['table']) && isset($_GET["user"]) && $ip==$_GET["user"]){
$rating->set_score($score, $ip);
$status = $rating->status;
}
}
if(!isset($_GET['update'])){ echo "<div class='rating_wrapper'>"; }
?>
<div class="sp_rating">
<div class="rating">Moyenne:</div>
<div class="base"><div class="average" style="width:<?php echo $rating->average; ?>%"><?php echo $rating->average; ?></div></div>
<div class="votes"><?php echo $rating->votes; ?> votes</div>
<div class="status">
<?php echo $status; ?>
</div>
</div>
<?php
if(!isset($_GET['update'])){ echo "</div>"; }
}
if(isset($_GET['update'])&&isset($_GET['table'])){
rating_form($_GET['table']);
}
?>
Dans l'ensemble je pense comprendre la logique mais avec sqlite je n'arrive pas a faire les modifs...Je sais que j'abuse mais serait il possible de me le commenter de façon a bien comprendre et trouver les modifs a appliquer ? voir même ce supprimer ce qui ne me sert a rien pour une BDD...
merci d'avance