Insert dans mysql données php/javascript : système de notation

Signaler
Messages postés
30
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 mars 2011
-
Messages postés
11
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
9 octobre 2010
-
Bonjour, je vous transmets mon problême, j'ai récupéré un script de notation par barre colorées sur ce site. Je l'ai adapté, en multipliant les critères de notation, or je n'arrive pas à insérer les "notes" dans ma bdd. Je n'ai que des 0 qui s'affichent.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title></title>
<style>

.notations
{
position : relative;
border : 1px none #000000;
width : 155px;
height : 20px;
}
</style>

<script>


function notationobjet(objetnom,num)
{
var commentaire = new Array("Pffff","Bof","Mouais","Moyen","Correct","Normal","Bien","Cool","Super","Génial");
var coultab = "02468ABCDEF";
var i;
var tp,tp2;
for(i=0;i<10;i++)

{
tp = coultab.charAt(i);
tp2 = coultab.charAt(10-i);
var obj=document.getElementById(objetnom+i);
var couleur = "#"+tp2+tp2+tp+tp+"00";
if(i<num+1){obj.style.backgroundColor=couleur;}else{obj.style.backgroundColor="#FFFFFF";}
}
document.getElementById(objetnom+"com").innerHTML=commentaire[num];
}

function validnotation(num)
{

document.write ('')
}

/*
function resetnotation(objetnom)
{
var i;//alert('cool');
for(i=0;i<10;i++)

{
var obj=document.getElementById(objetnom+i);
//alert(objetnom+i);
obj.style.backgroundColor="#FFFFFF";
}
document.getElementById(objetnom+"com").innerHTML="";
} */

function notation(objetnom)
{
var i;
var tmp="";
var objet = document.getElementById(objetnom);
for(i=0;i<10;i++)
{
//alert(objetnom);
tmp +='

';
}
objet.innerHTML = tmp+'

';
}

</script>

</head>


<form method="post" action="recup_avis.php" enctype="multipart/form-data">

confiance

<script>notation("confiance");</script>



ponctualité

<script>notation("ponctualite");</script>


disponibilité

<script>notation("disponibilite");</script>


qualité de prestation

<script>notation("qualite_prestation");</script>


rapport qualité prix

<script>notation("rapport_qp");</script>




</html>

voici mon script insert

<?php

//connection au serveur
$cnx = mysql_connect( "127.0.0.1", "root", "" ) ;
//sélection de la base de données:
$db = mysql_select_db( "lol" ) ;

$sql1 = "INSERT INTO avis (id_annonce,confiance, ponctualite, disponibilite, qualite_prestation, rapport_qualite_prix, date_avis)
VALUES ('".$_GET['id']."','".$_GET['confiance']."','".$_GET['ponctualite']."', '".$_GET['disponibilite']."','".$_GET['qualite_prestation']."','".$_GET['rapport_qp']."',NOW())";


$requete = mysql_query($sql1, $cnx) or die( mysql_error() ) ;

if($requete)
{
echo("L'insertion a été correctement effectuée" ) ;
}
else
{
echo("L'insertion à échouée" ) ;
}
?>

Voici le message d'erreur

Notice: Undefined index: id in C:\Program Files\EasyPHP-5.3.3\www\v1\recup_avis.php on line 9

Notice: Undefined index: confiance in C:\Program Files\EasyPHP-5.3.3\www\v1\recup_avis.php on line 9

Notice: Undefined index: ponctualite in C:\Program Files\EasyPHP-5.3.3\www\v1\recup_avis.php on line 9

Notice: Undefined index: disponibilite in C:\Program Files\EasyPHP-5.3.3\www\v1\recup_avis.php on line 9

Notice: Undefined index: qualite_prestation in C:\Program Files\EasyPHP-5.3.3\www\v1\recup_avis.php on line 9

Notice: Undefined index: rapport_qp in C:\Program Files\EasyPHP-5.3.3\www\v1\recup_avis.php on line 9
L'insertion a été correctement effectuée
A voir également:

21 réponses

Messages postés
25
Date d'inscription
mardi 24 octobre 2006
Statut
Membre
Dernière intervention
12 novembre 2010

hé bé ? c bon ? L'insertion a été correctement effectuée ? nan

les erreur au dessus c normal , si index est pas defini au 1er affichage

rajoute un truc comme ca deja
<?php
if (isset($index))
echo $index
?>

et jai pas tous compris avec tous tes 0? vu que ca insert corectement


DiabloBros Was Here...
Messages postés
11
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
9 octobre 2010

Bonjour,


Les données que tu envoie depuis ton formulaire sont en post, dans ton fichier recup_avis.php tu les récupère en GET , dont ils n'existe pas !!!


Essaye ca :
$sql1 = "INSERT INTO avis (id_annonce,confiance, ponctualite, disponibilite, qualite_prestation, rapport_qualite_prix, date_avis)
VALUES ('".$_POST['id']."','".$_POST['confiance']."','".$_POST['ponctualite']."', '".$_POST['disponibilite']."','".$_POST['qualite_prestation']."','".$_POST['rapport_qp']."',NOW())";
Messages postés
30
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 mars 2011

Bonsoir,
J'ai effectué les changements. Mais l'insertion n'est composée que de 0 pour tout les champs,
je n'arrive pas à récupérer les valeurs sélectionnées.
Messages postés
11
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
9 octobre 2010

Bonsoir,

En regardant de plus près :
Il faut que tu crée des input à l'interieur de ton formulaire, ensuite dans ta fonction validnotation(), au lieu de faire un document.write(), fait un document.getElementById(id des input du formulaire).value=num+1;

Comme cela les variables seront crée quand tu passera dans recup_avis.php
Messages postés
30
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 mars 2011

Voici les changements que j'ai effectué
Néanmoins l'insertion continue a me mettre des 0 et non pas les valeurs en cours lors du post

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title></title>
<style>

.notations
{
position : relative;
border : 1px none #000000;
width : 155px;
height : 20px;
}
</style>

<script>


function notationobjet(objetnom,num)
{
var commentaire = new Array("Pffff","Bof","Mouais","Moyen","Correct","Normal","Bien","Cool","Super","Génial");
var coultab = "02468ABCDEF";
var i;
var tp,tp2;
for(i=0;i<10;i++)

{
tp = coultab.charAt(i);
tp2 = coultab.charAt(10-i);
var obj=document.getElementById(objetnom+i);
var couleur = "#"+tp2+tp2+tp+tp+"00";
if(i<num+1){obj.style.backgroundColor=couleur;}else{obj.style.backgroundColor="#FFFFFF";}
}
document.getElementById(objetnom+"com").innerHTML=commentaire[num];
}

function validnotation(num)
{

document.getElementById(note).value=num+1;
}

/*
function resetnotation(objetnom)
{
var i;//alert('cool');
for(i=0;i<10;i++)

{
var obj=document.getElementById(objetnom+i);
//alert(objetnom+i);
obj.style.backgroundColor="#FFFFFF";
}
document.getElementById(objetnom+"com").innerHTML="";
} */

function notation(objetnom)
{
var i;
var tmp="";
var objet = document.getElementById(objetnom);
for(i=0;i<10;i++)
{
//alert(objetnom);
tmp +='

';
}
objet.innerHTML = tmp+'

';
}

</script>

</head>


<form method="post" action="" name="envoie_note" enctype="multipart/form-data">


confiance

<script>notation("confiance");</script>


ponctualité

<script>notation("ponctualite");</script>


disponibilité

<script>notation("disponibilite");</script>


qualité de prestation

<script>notation("qualite_prestation");</script>


rapport qualité prix

<script>notation("rapport_qp");</script>




<?php
if (isset($_POST['envoie_note'])){
if($_POST['envoie_note'])
{
include('recup_avis.php');
}
}

?>



</html>

<?php

//connection au serveur
$cnx = mysql_connect( "127.0.0.1", "root", "" ) ;
//sélection de la base de données:
$db = mysql_select_db( "lol" ) ;



if ((isset($_POST['confiance']) )&& (isset($_POST['ponctualite']) )&& (isset($_POST['disponibilite']) )&& (isset($_POST['qualite_prestation']) ) && (isset($_POST['rapport_qp']))){

$sql1 = "INSERT INTO avis (confiance, ponctualite, disponibilite, qualite_prestation, rapport_qualite_prix, date_avis)
VALUES ('".$_POST['confiance']."','".$_POST['ponctualite']."', '".$_POST['disponibilite']."','".$_POST['qualite_prestation']."','".$_POST['rapport_qp']."',NOW())";


$requete = mysql_query($sql1, $cnx) or die( mysql_error() ) ;

if($requete)
{
echo("L'insertion a été correctement effectuée" ) ;
}
else
{
echo("L'insertion à échouée" ) ;
}
} else
{
echo("Remplir tout les champs" ) ;
}
?>
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Et pense à protéger les valeurs soumises dans la variable $_POST : les coller directement dans la requête SQL comme il t'a été proposé, c'est du suicide. Ou plus exactement, un meurtre : celui de ton site et de la base de données.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
30
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 mars 2011

Là je ne te comprends pas, peux tu me donner un exemple.
Merci.
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Ceci :
Essaye ca :
$sql1 = "INSERT INTO avis (id_annonce,confiance, ponctualite, disponibilite, qualite_prestation, rapport_qualite_prix, date_avis)
VALUES ('".$_POST['id']."','".$_POST['confiance']."','".$_POST['ponctualite']."', '".$_POST['disponibilite']."','".$_POST['qualite_prestation']."','".$_POST['rapport_qp']."',NOW())";

est dangereux. Tu DOIS protéger les variables $_POST avec mysql_real_escape_string. Cf la doc PHP à ce sujet.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
30
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 mars 2011

Entendu ,je fais les modifications, mais concernant le fait que je n'ai que des 0 insérer dans ma base ? Quelqu'un a t-il une réponse ?
Merci.
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,

Juste parcouru, mais déjà tu as plusieurs 'id="note"' ... un ID doit être unique dans un document HTML.
... quand en plus on voit, dans la fonction JS notation() :
var objet = document.getElementById(objetnom);

... ça ne risque pas de marcher.


Cordialement,



Kohntark -
Messages postés
11
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
9 octobre 2010

En effet, il faut protéger les données qui sont envoyer en post, et aussi vérifier ce qu'elle contiennent.

Ensuite, dans ce que tu à ajouter, tout des input hidden on le même id, et aucune balise html ne doit avoir le même id dans ta page, c'est avec cela que ton javascript peut agir sur ta page.

enfin pour tester tu peut afficher le contenu de ton post avec print_r($_POST) au moin tu saura ce qui est envoyer. (Le retirer apres)
Messages postés
11
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
9 octobre 2010

Et ici : <script>notation("confiance"); il faut que tu envoie l'id de ton input hidden
Messages postés
30
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 mars 2011

Entendu je prends note, je corrige et je vous montre.
Messages postés
30
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 mars 2011

J'ai tenté de faire certaines des modifications demandées. Mais là plus rien ne fonctionne, merci de me dire où j'ai fauté, cordialement.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title></title>
<style>

.notations
{
position : relative;
border : 1px none #000000;
width : 155px;
height : 20px;
}
</style>

<script>


function notationobjet(objetnom,num)
{
var commentaire = new Array("Pffff","Bof","Mouais","Moyen","Correct","Normal","Bien","Cool","Super","Génial");
var coultab = "02468ABCDEF";
var i;
var tp,tp2;
for(i=0;i<10;i++)

{
tp = coultab.charAt(i);
tp2 = coultab.charAt(10-i);
var obj=document.getElementById(objetnom+i);
var couleur = "#"+tp2+tp2+tp+tp+"00";
if(i<num+1){obj.style.backgroundColor=couleur;}else{obj.style.backgroundColor="#FFFFFF";}
}
document.getElementById(objetnom+"com").innerHTML=commentaire[num];
}

function validnotation(num)
{

document.getElementById(confiance1,ponctualite1,disponibilite1,qualite_prestation1,rapport_qp1).value=num+1;
}

/*
function resetnotation(objetnom)
{
var i;//alert('cool');
for(i=0;i<10;i++)

{
var obj=document.getElementById(objetnom+i);
//alert(objetnom+i);
obj.style.backgroundColor="#FFFFFF";
}
document.getElementById(objetnom+"com").innerHTML="";
} */

function notation(objetnom)
{
var i;
var tmp="";
var objet = document.getElementById(confiance1,ponctualite1,disponibilite1,qualite_prestation1,rapport_qp1);
for(i=0;i<10;i++)
{
//alert(objetnom);
tmp +='

';
}
objet.innerHTML = tmp+'

';
}

</script>

</head>


<form method="post" action="" name="envoie_note" enctype="multipart/form-data">


confiance

<script>notation("confiance");</script>


ponctualité

<script>notation("ponctualite");</script>


disponibilité

<script>notation("disponibilite");</script>


qualité de prestation

<script>notation("qualite_prestation");</script>


rapport qualité prix

<script>notation("rapport_qp");</script>




<?php
if (isset($_POST['envoie_note'])){
if($_POST['envoie_note'])
{
include('recup_avis.php');
}
}

?>



</html>

le script recup avis

<?php

//connection au serveur
$cnx = mysql_connect( "127.0.0.1", "root", "" ) ;
//sélection de la base de données:
$db = mysql_select_db( "lol" ) ;



if ((isset($_POST['confiance']) )&& (isset($_POST['ponctualite']) )&& (isset($_POST['disponibilite']) )&& (isset($_POST['qualite_prestation']) ) && (isset($_POST['rapport_qp']))){

$sql1 = "INSERT INTO avis (confiance, ponctualite, disponibilite, qualite_prestation, rapport_qualite_prix, date_avis)
VALUES ('%s','%s', '%s','%s','%s',NOW())",
mysql_real_escape_string($confiance1),
mysql_real_escape_string($ponctualite1),
mysql_real_escape_string($disponibilite1),
mysql_real_escape_string($qualite_prestation1),
mysql_real_escape_string($rapport_qp1));



$requete = mysql_query($sql1, $cnx) or die( mysql_error() ) ;

if($requete)
{
echo("L'insertion a été correctement effectuée" ) ;
}
else
{
echo("L'insertion à échouée" ) ;
}
} else
{
echo("Remplir tout les champs" ) ;
}
?>
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Je ne sais pas trop quoi dire tant il y a d'erreurs très basiques dans ton code.
A vrai dire j'ai l'impression qu'il te manque les bases les plus essentielles. Me tromperai je ?

N'y vois là aucune méchanceté, mais modifier un tel script nécessite un minimum de connaissances.

Je ne saurai que te conseiller de commencer par lire les tutos HTML (formulaires, ...), puis ceux concernant PHP et Javascript.
En ayant ces bases tu pourras reprendre le script d'origine, l'étudier, et le comprendre.
Fort de ça tu pourras ensuite apporter pas à pas tes modifications.
Le forum est là pour t'aider, mais c'est un chemin impératif.

Quelques conseils :
- utilise un IDE (netbeans, ...) qui te permettra de gagner un temps précieux (coloration syntaxique, indentation, complétion, erreurs de syntaxe, etc ...)
- consulte la console d'erreur JS. Sous FF tu as l'excellente extension Firebug
- active l'affichage des erreurs PHP (pour le dev uniquement), en mettant ces lignes en tout début de script :
ini_set('display_errors', 'on');
error_reporting(-1);

- ai le réflexe de lire les erreurs qui sont reportées par les deux points précédents, dans 90% des cas elles donnent la solution.
- si cela ne suffit pas utilise des echo, var_dump(), etc ... partout où c'est nécessaire. Cela te permettra de voir l'état de tes variables au cours de l'exécution du script
- ...

Cordialement,


Kohntark -
Messages postés
30
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 mars 2011

Je suis contient des lacunes que je traîne, néanmoins je suis pris par l'urgence. Je me forme depuis quelques jours, mais ce script est urgent.
Merci.
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Ca pourrait se comprendre, mais ce forum n'est pas là pour écrire du code tout fait.
Ce n'est pas en quelques jours que tu parviendras à avoir un niveau suffisant.
Une fois de plus je ne dis pas ça méchamment, c'est juste la réalité.

Essaie de suivre les "quelques conseils" de mon précédent message, reprend le script initial et poste ton code et les erreurs que tu rencontres (après avoir fait un minimum de recherche of course) Tu auras de l'aide.

Si tu n'as vraiment pas le temps de l'apprentissage il serait sans doute plus raisonnable d'embaucher un développeur.



Cordialement,



Kohntark -
Messages postés
11
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
9 octobre 2010

Bonsoir,

Voici ton script modifier :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title></title>
<style>

.notations
{
position : relative;
border : 1px none #000000;
width : 155px;
height : 20px;
}
</style>

<script>


function notationobjet(objetnom,num)
{
var commentaire = new Array("Pffff","Bof","Mouais","Moyen","Correct","Normal","Bien","Cool","Super","Génial");
var coultab = "02468ABCDEF";
var i;
var tp,tp2;
for(i=0;i<10;i++)
{
tp = coultab.charAt(i);
tp2 = coultab.charAt(10-i);
var obj=document.getElementById(objetnom+i);
var couleur = "#"+tp2+tp2+tp+tp+"00";
if(i<num+1){obj.style.backgroundColor=couleur;}else{obj.style.backgroundColor="#FFFFFF";}
}
document.getElementById(objetnom+"com").innerHTML=commentaire[num];
}

function validnotation(objnom, num)
{
document.getElementById("note_"+objnom).value=num;
}

function resetnotation(objetnom)
{
var i;//alert('cool');
for(i=0;i<10;i++)

{
var obj=document.getElementById(objetnom+i);
//alert(objetnom+i);
obj.style.backgroundColor="#FFFFFF";
}
document.getElementById(objetnom+"com").innerHTML="";
}

function notation(objetnom)
{
var i;
var tmp="";
var objet = document.getElementById(objetnom);
for(i=0;i<10;i++)
{
//alert(objetnom);
tmp +='

';
}
objet.innerHTML = tmp+'

';
}

</script>

</head>


<form method="post" action="recup_avis.php" enctype="multipart/form-data">

confiance



<script>notation("confiance");</script>




ponctualité



<script>notation("ponctualite");</script>



disponibilité



<script>notation("disponibilite");</script>



qualité de prestation



<script>notation("qualite_prestation");</script>



rapport qualité prix



<script>notation("rapport_qp");</script>






</html>


recup_avis.php

<?php
//connection au serveur
$cnx = mysql_connect( "127.0.0.1", "root", ""  ) ;
//sélection de la base de données:
$db = mysql_select_db( "lol",$cnx ) ;
$confiance=mysql_real_escape_string($_POST['confiance']);
$ponctualite=mysql_real_escape_string($_POST['ponctualite']);
$disponibilite=mysql_real_escape_string($_POST['disponibilite']);
$qualite_prestation=mysql_real_escape_string($_POST['qualite_prestation']);
$rapport_qp=mysql_real_escape_string($_POST['rapport_qp']);

$requete = "INSERT INTO avis (confiance, ponctualite, disponibilite, qualite_prestation, rapport_qualite_prix, date_avis)
VALUES ('$confiance','$ponctualite', '$disponibilite','$qualite_prestation','$rapport_qp',NOW())";

if(mysql_query($requete))
{
echo("L'insertion a été correctement effectuée");
}
else
{
echo("L'insertion à échouée" );
}
?>


Il y a certainement quelques trucs a voir, comme la persistance de tes barres et vérifier que ce sont bien des chiffres
$var= preg_replace("/[^0-9]/",'', $var);
par exemple, mais chez moi ca fonctionnais.
Messages postés
30
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 mars 2011

Merci pour la réponse, elle m'aide vraiment.
Messages postés
30
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 mars 2011

Le script fonctionne correctement, c'est ce que je voulais. Merci

ps: je me forme en accélérer.