Blocage création requêtes SQL

Sam le skieur Messages postés 64 Statut Membre -  
vordano Messages postés 1981 Statut Membre -
Bonjour,
Je m'adresse à vous car j'ai des problèmes sur le langage SQL dans lequel je débute tout juste. Je m'explique: dans une BDD (phpmyadmin) j'ai une table nommée candidats, dans laquelle se trouvent les attributs idcandidat, Nom, Prénom, Age, Taille, Poids, Sexe, Total espéré (le but étant de faire un vote). On me demande donc à partir de cette table de créer une page php affichant les candidats de la table dans un tableau qui permet de voter pour eux. On m'a donc donné le code à programmer pour cette page (que je ne comprends par ailleurs pas tout à fait):
<html>
<body>

<?php
$connect = mysql_connect("xxx.yyy.utc", "nf.....48", "ic....7Y") or die ("Error connecting to mysql: " . mysql_error());

//echo "$connect";
$result = mysql_select_db("nf....48");

echo "\n<form method=post action='recap.php'>";
echo "\n<table border='1'>";
echo "\n<caption> Présentation des candidats </caption>";
echo "\n<tr>
<th> Nom </th>
<th> note donnee </th>
</tr>";

$result = mysql_query("SELECT * FROM candidats");

while ($row = mysql_fetch_array($result, MYSQL_NUM))
{
$nom = $row[1];
$idcandidat = $row[0];
echo "\n<tr>";
echo "<td> $nom </td> ";
echo "<td> <input type='text' name='$idcandidat'></td>";
echo "</tr>";
}

echo "\n</table>";
echo "<input type='submit' value='voter'>";
echo "</form>";

mysql_free_result($result);
mysql_close($connect);
?>
</body>
</html>

Le problème vient après: L'utilisation du nouveau formulaire de vote mis au point à la question précédente permet de voter (ou non si le champ est vide) pour plusieurs candidats. Cette action de voter pour plusieurs candidats est appelée "votation" dans mon exercice. Il faut générer un numéro de votation unique quand une votation est passée (comme un numéro de commande). Il m'a donc été demandé de créer une table supplémentaire GenereNumVote avec juste une colonne idvote de type entier dans la BDD. Et il faut donc créer une nouvelle page php recap.php avec le code php et les requêtes SQL pour générer un nouveau numéro et le récupérer. Cette page sera le résultat de l'action Voter de la page codée ci-dessus. Et là je dois avouer que je ne sais absolument pas comment faire. Si quelqu'un pouvait m'aider et/ou m'expliquer, je lui en serais vraiment reconnaissant. Merci d'avance pour vos réponses!

A voir également:

8 réponses

Chris 94 Messages postés 1937 Date d'inscription   Statut Modérateur Dernière intervention   7 351
 
Bonjour,

J'ai retiré ce qui me semblait être des clés d'accès à ta BDD... Si ce n'était pas nécessaire ou utile et sans aucun risque, fais-les moi connaitre pour les rétablir.
0
vordano Messages postés 1981 Statut Membre 316
 
salut,

le numéro unique dont tu parle peut être généré facilement si ton champ est en auto-incrément (à chaque insertion dans la table, le champ prend une valeur unique).

(a priori tu devrais avoir 3 tables: personne, estCandidat, votation)
0
Sam le skieur Messages postés 64 Statut Membre
 
Merci, ce problème d'auto incrémentation a été résolu en cochant une case pour dans la BDD. En revanche je bloque toujours complètement sur la création de la dernière page recap.php. Je n'ai aucune idée du code qu'il faut y mettre.
0
Sam le skieur Messages postés 64 Statut Membre
 
Quelqu'un pour me répondre s'il vous plait??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sam le skieur Messages postés 64 Statut Membre
 
Merci, en effet, un petit oubli de ma part
0
vordano Messages postés 1981 Statut Membre 316
 
qu'est ce que tu veux faire dans ta page recap.php ?
0
Sam le skieur Messages postés 64 Statut Membre
 
Le but est d'insérer dans une table "vote" comprenant trois attributs "idvote" "idcandidat" et "note". recap.php est censée récupérer le numéro "idvote" généré dans la table GenereNumVote ainsi que les résultats de mon code posté ci-dessus "idcandidat" et "note" et les insérer dans cette table "vote"
0
vordano Messages postés 1981 Statut Membre 316
 
mais a quoi sert la table GenereNumVote ? quel est le lien entre cette table et la table vote, ou la table candidat ?
a mon avis cette table n'est pas nécessaire si tu ne l'utilise pas pour enregistrer des données importante
0
Sam le skieur Messages postés 64 Statut Membre
 
La table GenereNumVote génère un numéro de vote en auto-incrémentation, et on va prendre pour chaque vote le numéro généré par cette table et l'associer au vote afin que ce dernier soit unique, car il peut y avoir plusieurs votes pour un candidat
0
vordano Messages postés 1981 Statut Membre 316
 
donc cette table ne sert strictement à rien
il suffit de mettre le champ idVote de la table vote en auto incrément.
ainsi lors d'insertion, il suffit de ne pas remplir le champ idVote et elle seras automatiquement rempli lors de l'insertion
0
Sam le skieur Messages postés 64 Statut Membre
 
OK ben je vais faire cela, mais je me demande toujours comment récupérer à la fois la note et l'idcandidat pour les insérer dans la table vote
0
vordano Messages postés 1981 Statut Membre 316
 
normalement quand tu affiche la liste des candidats, tu es capable de stocker le numéro dans l'un des attributs.
donc quand tu envoi ton vote, tu peux récupérer le numéro du candidat du formulaire envoyé, et tu peux aussi récupérer le vote (je suppose que c'est un entier qui représente une note)
dans ton php tu récupère tes infos avec $_GET['attribut_name'] ou $_POST['attribut_name']
0
Sam le skieur Messages postés 64 Statut Membre
 
Merci, grâce à vous j'ai pu avancer quelque peu. Actuellement j'ai un léger souci technique puisque j'ai un code php (requête envoyée par un formulaire) qui ne fonctionne pas puisqu'à chaque ligne correspondant à un "mysql_fetch_array", j'ai une erreur de type "mysql_fetch_array() expects parameter 1 to be resource, boolean given". Je n'arrive pas à voir d'où cela peut provenir. Voici mon code php:
<html>
<body>
<?php
define ('nulle', 0);
$connect = mysql_connect("***", "***", "***") or die ("Error connecting to mysql: " . mysql_error());
$result = mysql_select_db("***");
$nom=$_POST['nom'];

$query="select note FROM 'candidats' WHERE Nom=$nom ";
$result=mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
echo $row['note'];
$add=$_POST['add'];
$subtract=$_POST['subtract'];
$ajouter=$_POST['ajouter'];
$soustraire=$_POST['soustraire'];
if (!empty($add)){
$query="UPDATE 'candidats' SET note = note + $ajouter WHERE Nom=$nom";
$result=mysql_query($query);
}
if (!empty($subtract) and $row['note']>$soustraire){
$query="UPDATE 'candidats' SET note = note - $soustraire WHERE Nom=$nom";
$result=mysql_query($query);
}
else{
$query="UPDATE 'candidats' SET note = 'nulle' WHERE Nom=$nom";
$result=mysql_query($query);
}
$prenom=$_POST['prenom'];
$age=$_POST['age'];
$taille=$_POST['taille'];
$poids=$_POST['poids'];
$sexe=$_POST['sexe'];
$query="select prenom FROM 'candidats' WHERE Nom=$nom ";
$result=mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
echo $row['prenom'];
if (!empty($prenom)){
$query="UPDATE 'candidats' SET prenom = '$prenom' WHERE Nom=$nom";
$result=mysql_query($query);
}
$query="select Age FROM 'candidats' WHERE Nom=$nom ";
$result=mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
echo $row['Age'];
if (!empty($age)){
$query="UPDATE 'candidats' SET Age = '$age' WHERE Nom=$nom";
$result=mysql_query($query);
}
$query="select Taille FROM 'candidats' WHERE Nom=$nom ";
$result=mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
echo $row['Taille'];
if (!empty($taille)){
$query="UPDATE 'candidats' SET Taille = '$taille' WHERE Nom=$nom";
$result=mysql_query($query);
}
$query="select Poids FROM 'candidats' WHERE Nom=$nom ";
$result=mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
echo $row['Poids'];
if (!empty($poids)){
$query="UPDATE 'candidats' SET Poids = '$poids' WHERE Nom=$nom";
$result=mysql_query($query);
}
$query="select Sexe FROM 'candidats' WHERE Nom=$nom ";
$result=mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
echo $row['Sexe'];
if (!empty($poids)){
$query="UPDATE 'candidats' SET Sexe = '$sexe' WHERE Nom=$nom";
$result=mysql_query($query);
}

?>
</body>
</html>
0
vordano Messages postés 1981 Statut Membre 316
 
1) tu oubli les ' ' pour entourer tes variables de type chaine dans tes requêtes
2) mysql_fetch_array ne prend qu'un seul paramètre (le résultat du mysql_query)
3) tes mysql_fetch_array ne servent apparament a rien parce que tu n'utilise pas le contenu des $row
0
Sam le skieur Messages postés 64 Statut Membre
 
Merci c'est parfait maintenant!
0
vordano Messages postés 1981 Statut Membre 316
 
et ca marche maintenant ?
0