Pas d'incrémentation dans ma Database

Petit nouveau ! | 8 Messages

04 déc. 2011, 22:49

Bonjour,
Je suis novice et je crée mon site perso sur des photos. Pour cela le visiteur pourra voter avec un code à étoile avec ce kit déjà tout fait (si quelqu'un connait) http://masugadesign.com/software/unobtr ... ating-bar/
Le problème c'est que j'utilise MAMP sur mon mac. Quand je test un vote à plusieurs reprise d'une photo sur 5 étoiles, il m'apparait ceci:
id total_votes total_value used_ips
8____________0___________0
L'id lui est bon, total des votes bizzarement il en voit aucun et pareil pour le score total des votes :roll: l'IP lui n'est pas détecté mais je suppose que c'est pas le fait que je passe par MAMP(?)
Merci de votre aide!!!

Petit nouveau ! | 8 Messages

06 déc. 2011, 00:55

Vraiment personne...? :cry:

devlop78
Invité n'ayant pas de compte PHPfrance

06 déc. 2011, 02:57

Me le en ligne ton ensemble, et laisse-nous tester voir déjà si le problème est côté client ou côté serveur. Après ... Pas de code ... Pas grand chose à voir ...

Petit nouveau ! | 8 Messages

06 déc. 2011, 12:27

Bonjour Devlop78,

Merci de me répondre!!! effectivement j'aurai sans l'ensemble c'est bien moins évident ...

Déjà, le kit complet de notation se trouve sur cette page.

Voici l'HTML index.php:

Code : Tout sélectionner

<?php require('_drawrating.php'); ?> <!DOCTYPE HTML> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr_FR" lang="fr_FR"> <head> <title>Session 3D - Accueil</title> <script type="text/javascript" src="style/js/jquery-1.6.2.min.js"></script> <script type="text/javascript" src="slider/jquery.nivo.slider.pack.js"></script> <script type="text/javascript" src="js/behavior.js"></script> <script type="text/javascript" src="js/rating.js"></script> <link rel="stylesheet" href="slider/nivo.css" type="text/css" media="screen" /> <link rel="stylesheet" href="slider/style.css" type="text/css" media="screen" /> <link rel="stylesheet" href="slider/default.css" type="text/css" media="screen" /> <link rel="stylesheet" href="base.css" type="text/css" /> <!-- Required CSS --> </head> <script type="text/javascript"> $(document).ready(function(){ $("ul.subnav").parent().append("<span></span>"); //Only shows drop down trigger when js is enabled - Adds empty span tag after ul.subnav $("ul.topnav li span").click(function() { //When trigger is clicked... //Following events are applied to the subnav itself (moving subnav up and down) $(this).parent().find("ul.subnav").slideDown('fast').show(); //Drop down the subnav on click $(this).parent().hover(function() { }, function(){ $(this).parent().find("ul.subnav").slideUp('slow'); //When the mouse hovers out of the subnav, move it back up }); //Following events are applied to the trigger (Hover events for the trigger) }).hover(function() { $(this).addClass("subhover"); //On hover over, add class "subhover" }, function(){ //On Hover Out $(this).removeClass("subhover"); //On hover out, remove class "subhover" }); }); $(window).load(function() { $('#slider').nivoSlider(); }); </script> <body> ...//code html des différents éléments <div id="conteneur2"> <?php echo rating_bar('8','5'); ?>// voici LE test de notation par étoiles </div> <div id="conteneur3"> </div> </body> </html>
Voici mnt la page _config-rating.php (afin de se connecter sur ma database sachant aussi que PDO est activé sur MAMP ):

Code : Tout sélectionner

<?php /* Page: _config-rating.php Created: Aug 2006 Last Mod: Mar 18 2007 Holds info for connecting to the db, and some other vars --------------------------------------------------------- ryan masuga, masugadesign.com [email protected] Licensed under a Creative Commons Attribution 3.0 License. http://creativecommons.org/licenses/by/3.0/ See readme.txt for full credit details. --------------------------------------------------------- */ //Connect to your rating database $rating_dbhost = 'localhost'; $rating_dbuser = 'root'; $rating_dbpass = 'root'; $rating_dbname = 'session3d'; $rating_tableName = 'ratings'; $rating_path_db = ''; // the path to your db.php file (not used yet!) $rating_path_rpc = ''; // the path to your rpc.php file (not used yet!) $rating_unitwidth = 30; // the width (in pixels) of each rating unit (star, etc.) // if you changed your graphic to be 50 pixels wide, you should change the value above $rating_conn = mysql_connect($rating_dbhost, $rating_dbuser, $rating_dbpass) or die ('Error connecting to mysql'); //mysql_select_db($rating_dbname); ?>
Puis ma configuration sur phpMyadmin:
-- phpMyAdmin SQL Dump
-- version 3.3.9.2
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mar 06 Décembre 2011 à 11:24
-- Version du serveur: 5.5.9
-- Version de PHP: 5.3.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de données: `session3d`
--

-- --------------------------------------------------------

--
-- Structure de la table `ratings`
--

CREATE TABLE `ratings` (
  `id` varchar(255) NOT NULL,
  `total_votes` int(11) NOT NULL DEFAULT '0',
  `total_value` int(11) NOT NULL DEFAULT '0',
  `used_ips` longtext,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

--
-- Contenu de la table `ratings`
--

INSERT INTO `ratings` VALUES('8', 0, 0, '');
Je pense ne rien avoir oublié...

Par ailleurs, j'avais une autre question mais avant cela je voulais déjà savoir pourquoi cela ne fonctionne pas :'(


Merci à vous

Petit nouveau ! | 8 Messages

06 déc. 2011, 12:39

Le kit complet se trouve sur cette page* http://masugadesign.com/software/unobtr ... ating-bar/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 déc. 2011, 17:30

hum la déja j'y vois un défaut de conception.

tu devrais avoir une référence vers ce sur quoi tu vote !

par exemple
CREATE TABLE `ratings` (
   `id` int unsigned NOT NULL auto_increment,
     id_vote int not null;
   `total_votes` int(11) NOT NULL DEFAULT '0',
   `total_value` int(11) NOT NULL DEFAULT '0',
   `used_ips` longtext,
   PRIMARY KEY (`id`),
) ENGINE=MyISAM
j'ai corrigé la clef primaire qui doit être un auto incrément.
je n'ai pas mis la contrainte de clef étrangère vu le type de moteur utilisé.

Ensuite il faut que tu test séparément les scripts utilisé pour la mise a jour de la base de donnée. (celui ou il y a update /insert qui est cible du formulaire).

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 8 Messages

06 déc. 2011, 22:52

Merci Moogli!! je rentre tout juste du boulot, je test ça après! :D :D

Petit nouveau ! | 8 Messages

07 déc. 2011, 01:08

j'ai corrigé la clef primaire qui doit être un auto incrément.
Bien vu^^ Merci!

tu devrais avoir une référence vers ce sur quoi tu vote !
C'est exacte! d'ailleurs je voulais te demander, en parallèle à cette table je compte en créer pour le moment deux autres: "paysages" avec des photos de paysages dedans et aussi "street" avec des photos de rues.
Comment je fais pour attribuer l'id de chaque photos de ces deux différentes tables à la table "ratings"? va t-il falloir que je crée une autre table "ratings" pour chaque différentes tables des photos?

Ensuite il faut que tu test séparément les scripts utilisé pour la mise a jour de la base de donnée. (celui ou il y a update /insert qui est cible du formulaire).
J'ss novice et vraiment désolé mais je ne vois pas comment les tester séparément 8-|

Encore merci pour ton aide!! :D

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 déc. 2011, 14:26

non
tu a une tables "photos" et une table type (qui sera paysages, street, etc etc).
dans la table photos tu met l'id du type
exemple
create table typePhoto (
idtypephoto int unsigned not null auto_increment primary key,
libelle varchar(50) not null,
)engine=innodb;

create table photos (
idphoto int unsigned not null auto_increment primary key,
idtypephoto int unsigned not null, 
libelle varchar(50) not null,
lien varchar(50) not null
);
Et donc tu peux avoir autant de catégorie que tu veux et a structure est fixe.
Donc dans la table des votes tu met l'idphoto :)

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 8 Messages

08 déc. 2011, 00:13

Tu es au top Moogli!!!

Je testerai ça ce week et tiendrai au courant ;)


Merciiiii!!!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 déc. 2011, 09:11

De rien chercher des Tutos sur le modèle entités association et la modélisation de donnée pour mieux comprendre la chose ;)

Bon courage ;)

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 8 Messages

18 déc. 2011, 17:21

Me revoilà!

Si tu es toujours là Moogli je serai le plus heureux ^^

Voilà j'ai un petit peu avancé depuis la dernière fois et je voulais t'exposer ce que j'ai réalisé depuis. J'ai petit problème et juste une question à te poser.

Voici ma base de donnée complète:
-- phpMyAdmin SQL Dump
-- version 3.3.9.2
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Dim 18 Décembre 2011 à 12:56
-- Version du serveur: 5.5.9
-- Version de PHP: 5.3.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de données: `session3d`
--

-- --------------------------------------------------------

--
-- Structure de la table `photo`
--

CREATE TABLE `photo` (
  `idphoto` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `idphotopaysage` int(10) unsigned NOT NULL,
  `idphotostreet` int(10) unsigned NOT NULL,
  `datedesortie` varchar(50) NOT NULL,
  `lien` varchar(50) NOT NULL,
  PRIMARY KEY (`idphoto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Contenu de la table `photo`
--


-- --------------------------------------------------------

--
-- Structure de la table `photopaysage`
--

CREATE TABLE `photopaysage` (
  `idphotopaysage` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `titre` varchar(25) NOT NULL,
  `visu` varchar(100) NOT NULL,
  `datedesortie` varchar(50) NOT NULL,
  `genre` varchar(30) NOT NULL,
  PRIMARY KEY (`idphotopaysage`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Contenu de la table `photopaysage`
--

INSERT INTO `photopaysage` VALUES(1, 'Nice', '../images/visu/nice.jpg', 'Decembre 2009', 'Nuit du 5 décembre');
INSERT INTO `photopaysage` VALUES(2, 'Cannes, '../images/visu/cannes.jpg', 'Mai 2011', 'Journée du Festival');
INSERT INTO `photopaysage` VALUES(3, 'St Jean Cap Ferrat', '../images/visu/capferrat.jpg', 'Aout 2011', 'Soleil sur la Cap');

-- --------------------------------------------------------

--
-- Structure de la table `photostreet`
--

CREATE TABLE `photostreet` (
  `idphotostreet` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `datedesortie` varchar(50) NOT NULL,
  PRIMARY KEY (`idphotostreet`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Contenu de la table `photostreet`
--


-- --------------------------------------------------------

--
-- Structure de la table `commentairesphoto`
--

CREATE TABLE `commentairesphoto` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_photopaysage` int(11) NOT NULL,
  `auteur` varchar(255) NOT NULL,
  `commentaire` text NOT NULL,
  `date_commentaire` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Contenu de la table `commentairesphoto`
--

-- --------------------------------------------------------

--
-- Structure de la table `ratings`
--

CREATE TABLE `ratings` (
  `id` varchar(255) NOT NULL,
  `total_votes` int(11) NOT NULL DEFAULT '0',
  `total_value` int(11) NOT NULL DEFAULT '0',
  `used_ips` longtext,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

--
-- Contenu de la table `ratings`
--

INSERT INTO `ratings` VALUES('8', 0, 0, '');



Là mon fichier pour mes photos de paysages paysages.php :
<?php require('../_drawrating.php'); ?>
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr_FR" lang="fr_FR">
<head>
   <title>...</title>
            <script type="text/javascript" src="../style/js/jquery-1.6.2.min.js"></script>
            <script type="text/javascript" src="../slider/jquery.nivo.slider.pack.js"></script>
            <script type="text/javascript" src="../js/behavior.js"></script>
            <script type="text/javascript" src="../js/rating.js"></script>
            <link rel="stylesheet" href="../slider/nivo.css" type="text/css" media="screen" />
            <link rel="stylesheet" href="../slider/style.css" type="text/css" media="screen" />
            <link rel="stylesheet" href="../slider/default.css" type="text/css" media="screen" />
            <link rel="stylesheet" href="../base.css"  type="text/css" />
<!-- Required CSS -->
</head>
<script type="text/javascript"> 
$(document).ready(function(){

	$("ul.subnav").parent().append("<span></span>"); //Only shows drop down trigger when js is enabled - Adds empty span tag after ul.subnav
	
	$("ul.topnav li span").click(function() { //When trigger is clicked...
		
		//Following events are applied to the subnav itself (moving subnav up and down)
		$(this).parent().find("ul.subnav").slideDown('fast').show(); //Drop down the subnav on click

		$(this).parent().hover(function() {
		}, function(){	
			$(this).parent().find("ul.subnav").slideUp('slow'); //When the mouse hovers out of the subnav, move it back up
		});

		//Following events are applied to the trigger (Hover events for the trigger)
		}).hover(function() { 
			$(this).addClass("subhover"); //On hover over, add class "subhover"
		}, function(){	//On Hover Out
			$(this).removeClass("subhover"); //On hover out, remove class "subhover"
	});

});
$(window).load(function() {
        $('#slider').nivoSlider();
});
</script>
<body>
<div id="container">
    <div id="logo">
        <ul class="topnav">
            //ici mon menu déroulant
</div>
<div class="e1">
<?php
// Connexion à la base de données
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=session3d', 'root', 'root', $pdo_options);
	
    // je recupere toutes mes photos
    $req = $bdd->query('SELECT idphotopaysage, visu, titre, datedesortie, genre FROM photopaysage');
    
    while ($donnees = $req->fetch())
    {
    ?>
        
            <?php echo htmlspecialchars($donnees['titre']); ?><br />
          <div class="cinevisu"><img src="<?php echo htmlspecialchars($donnees['visu']); ?>" alt="" width="150" height="200"/>
          </div>
          
          <div class="e2">
                            Date de sortie<br />
                            Genre<br />
                            Nombre de commentaires<br />
                            Commentez<br />
                            VOTEZ
                            
          </div>    
          <div class="e3">
                            <?php echo htmlspecialchars($donnees['datedesortie']); ?><br />
                            <?php echo htmlspecialchars($donnees['genre']); ?><br /><br />
                            <a href="photocom.php?photopaysage=<?php echo $donnees['idphotopaysage']; ?>">Commentez maintenant</a>
           </div>
           <div class="ratecinefilms">
                            <?php echo rating_bar('','5'); ?>
           </div>                 
                            
         // tout se passe très bien, mes photos ainsi que tous les éléments s'affichent l'un après l'autre                   
         
       
    <?php
    } 
    $req->closeCursor();
   
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}

?>
</div>

</html>


Et maintenant la pages des commentaires pour mes photos photocom.php (je ne vois aucune erreur mais pourtant cette page devrait mais ne fonctionne pas!!! :( ):
<?php require('../_drawrating.php'); ?>
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr_FR" lang="fr_FR">
<head>
   <title>...</title>
            <script type="text/javascript" src="../style/js/jquery-1.6.2.min.js"></script>
            <script type="text/javascript" src="../slider/jquery.nivo.slider.pack.js"></script>
            <script type="text/javascript" src="../js/behavior.js"></script>
            <script type="text/javascript" src="../js/rating.js"></script>
            <link rel="stylesheet" href="../slider/nivo.css" type="text/css" media="screen" />
            <link rel="stylesheet" href="../slider/style.css" type="text/css" media="screen" />
            <link rel="stylesheet" href="../slider/default.css" type="text/css" media="screen" />
            <link rel="stylesheet" href="../base.css"  type="text/css" />
<!-- Required CSS -->
</head>
<script type="text/javascript"> 
$(document).ready(function(){

	$("ul.subnav").parent().append("<span></span>"); //Only shows drop down trigger when js is enabled - Adds empty span tag after ul.subnav
	
	$("ul.topnav li span").click(function() { //When trigger is clicked...
		
		//Following events are applied to the subnav itself (moving subnav up and down)
		$(this).parent().find("ul.subnav").slideDown('fast').show(); //Drop down the subnav on click

		$(this).parent().hover(function() {
		}, function(){	
			$(this).parent().find("ul.subnav").slideUp('slow'); //When the mouse hovers out of the subnav, move it back up
		});

		//Following events are applied to the trigger (Hover events for the trigger)
		}).hover(function() { 
			$(this).addClass("subhover"); //On hover over, add class "subhover"
		}, function(){	//On Hover Out
			$(this).removeClass("subhover"); //On hover out, remove class "subhover"
	});

});
$(window).load(function() {
        $('#slider').nivoSlider();
});
</script>
<body>
<div id="container">
    <div id="logo">
        <ul class="topnav">
     //mon menu déroulant
</div>
<div class="e1">
<?php
// Connexion à la base de données
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=session3d', 'root', 'root', $pdo_options);
    
    // Récupération du billet
    $req = $bdd->prepare('SELECT idphotopaysage, visu, titre, datedesortie, genre FROM photopaysage WHERE idphotopaysage = ?'');
    $req->execute(array($_GET['photopaysage']));
    $donnees = $req->fetch();
    ?>
        
            <?php echo htmlspecialchars($donnees['titre']); ?><br />
          <div class="cinevisu"><img src="<?php echo htmlspecialchars($donnees['visu']); ?>" alt="" width="150" height="200"/>
          </div>
          
          <div class="e2">
                            Date de sortie<br />
                            Genre<br />
                            Nombre de commentaires<br />
                            Commentez<br />
                            VOTEZ
                            
          </div>    
          <div class="e3">
                            <?php echo htmlspecialchars($donnees['datedesortie']); ?><br />
                            <?php echo htmlspecialchars($donnees['genre']); ?><br /><br />
                          
           </div>
           <div class="ratecinefilms">
                            <?php echo rating_bar('','5'); ?>
           </div>                 
                            
    <?php
    } 
    $req->closeCursor();
 }
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}

?>
</div>

</html>
Voilà, donc je préfère t'informer que je n'ai pas mis la partie des commentaires car rien que le début ne fonctionne déjà pas, je me retrouve devant une magnifique page blanche!! Ce qui est très étonnant c'est que j'ai recopié un exercice de blog que j'avais fait depuis un tuto avec la même structure qui lui fonctionne :(... Je pense une fois que j'aurai résolu ce problème, tout sera ok pour moi!!

Et deuxième question: comment attribuer la note à une photo spécifique? comme cela? :

<div class="ratecinefilms">
<?php echo rating_bar('$donnees['idcindefilms']','5'); ?>
</div>


Merci à toi!!!!!