Vous n'êtes pas identifié(e).
je veux dire par un bon format:
nom jour: liste des etudiants
et ne pas:
jour1: etudiant1
jour1: etudiant2
ainsi de suite
comment mettre mon resultat au bon format?
sans le GROUP BY voila:
[img align=C]http://imageshack.us/photo/my-images/401/resultatd.png/[/img]
et pour cette requete voila le resultat:
il me reste qu'a mettre le resultat en bon format
[img align=C]http://imageshack.us/photo/my-images/821/resultat2.png/[/img]
- J'ai mis (*) temporairement afin de finaliser les champs a selectionner
- Voila un 2eme essai:
$type = 2011;
$cat = 'classe1';
$sqls = 'SELECT *
FROM joinTables
INNER JOIN etudiants ON joinTables.idetudiant = etudiants.ide
INNER JOIN jours ON joinTables.idjour = jours.jour
AND joinTables.idclasse = jours.id_c
AND joinTables.annee = jours.annee
GROUP BY jour ORDER BY idj ASC
';
//echo $sqls;
$reqs = $connexion->query($sqls);
$results = $reqs->fetchAll();
if(empty($results))
{
echo 'Aucun etudiant n a passe l exam';
}
else
{
echo '<table width="500" border="1">';
echo '<tr>';
echo '<td>Jour</td>';
echo '<td>Etudiants</td>';
echo '</tr>';
foreach($results as $kk=>$vv)
{
$nom = $vv['nom'];
$jour = $vv['jour'];
$idjour = $vv['idjour'];
echo '<tr>';
echo '<td>'.$jour.'</td>';
echo '<td>'.$nom.'</td>';
echo '</tr>';
}
echo '</table>';
}
il me donne juste 3 jours, ainsi que le nom du premier etudiant, les restes etudiants ne sont pas affiches
1: etudiant1
2: etudiant3
3: etudiant1
j'ai rectifie la table jours en mettant nom du jour en chiffre pour que la condition soit valable (joinTables.idjour = jours.jour), voila le code entier:
code PHP:
$type = 2011;
$cat = 'classe1';
$sql = 'SELECT * FROM jours WHERE annee = "'.$type.'" AND id_c = (SELECT idc FROM classes WHERE classe = "'.$cat.'") GROUP BY jour ORDER BY idj ASC';
//echo $sql;
$req = $connexion->query($sql);
$result = $req->fetchAll();
if(empty($result))
{
echo 'Aucune resultat';
}
else
{
echo '<table width="500" border="1">';
echo '<tr>';
echo '<td>Jour</td>';
echo '<td>Etudiants</td>';
echo '</tr>';
foreach($result as $k=>$v)
{
$jour = $v['jour'];
echo '<tr>';
echo '<td>'.$jour.'</td>';
echo '<td>';
//Lister les etudiants
// je mets * temporairement
$sqls = 'SELECT *
FROM joinTables
INNER JOIN etudiants ON joinTables.idetudiant = etudiants.ide
INNER JOIN jours ON joinTables.idjour = jours.jour
AND joinTables.idclasse = jours.id_c
AND joinTables.annee = jours.annee';
//echo $sql;
$reqs = $connexion->query($sqls);
$results = $reqs->fetchAll();
if(empty($results))
{
echo 'Aucun etudiant n a passe l exam';
}
else
{
foreach($results as $kk=>$vv)
{
$nom = $vv['nom'];
echo $etudiant;
}
}
echo '</td>';
echo '</tr>';
}
echo '</table>';
}
?>
Les tables:
--
-- Table structure for table `classes`
--
CREATE TABLE IF NOT EXISTS `classes` (
`idc` INT(2) NOT NULL AUTO_INCREMENT,
`classe` VARCHAR(20) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`idc`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
--
-- Dumping data for table `classes`
--
INSERT INTO `classes` (`idc`, `classe`) VALUES
(1, 'classe1'),
(2, 'classe2');
-- --------------------------------------------------------
--
-- Table structure for table `etudiants`
--
CREATE TABLE IF NOT EXISTS `etudiants` (
`ide` INT(2) NOT NULL AUTO_INCREMENT,
`nom` VARCHAR(30) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`ide`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16 ;
--
-- Dumping data for table `etudiants`
--
INSERT INTO `etudiants` (`ide`, `nom`) VALUES
(1, 'etudiant1'),
(2, 'etudiant2'),
(3, 'etudiant3'),
(4, 'etudiant4'),
(5, 'etudiant5'),
(6, 'etudiant6'),
(7, 'etudiant7'),
(8, 'etudiant8'),
(9, 'etudiant9'),
(10, 'etudiant10'),
(11, 'etudiant11'),
(12, 'etudiant12'),
(13, 'etudiant13'),
(14, 'etudiant14'),
(15, 'etudiant15');
-- --------------------------------------------------------
--
-- Table structure for table `jointables`
--
CREATE TABLE IF NOT EXISTS `jointables` (
`idjoin` INT(11) NOT NULL AUTO_INCREMENT,
`idetudiant` INT(11) NOT NULL,
`idjour` INT(11) NOT NULL,
`idclasse` INT(11) NOT NULL,
`annee` VARCHAR(4) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`idjoin`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=15 ;
--
-- Dumping data for table `jointables`
--
INSERT INTO `jointables` (`idjoin`, `idetudiant`, `idjour`, `idclasse`, `annee`) VALUES
(1, 1, 1, 1, '2011'),
(2, 2, 1, 1, '2011'),
(3, 3, 2, 1, '2011'),
(4, 4, 2, 1, '2011'),
(5, 1, 3, 1, '2011'),
(6, 5, 3, 1, '2011'),
(7, 6, 3, 1, '2011'),
(8, 10, 1, 2, '2011'),
(9, 11, 1, 2, '2011'),
(10, 12, 2, 2, '2011'),
(11, 14, 2, 2, '2011'),
(12, 10, 3, 2, '2011'),
(13, 11, 3, 2, '2011'),
(14, 12, 3, 2, '2011');
-- --------------------------------------------------------
--
-- Table structure for table `jours`
--
CREATE TABLE IF NOT EXISTS `jours` (
`idj` INT(3) NOT NULL AUTO_INCREMENT,
`jour` VARCHAR(20) COLLATE utf8_unicode_ci NOT NULL,
`id_c` INT(2) NOT NULL,
`annee` VARCHAR(4) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`idj`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=8 ;
--
-- Dumping data for table `jours`
--
INSERT INTO `jours` (`idj`, `jour`, `id_c`, `annee`) VALUES
(1, '1', 1, '2011'),
(2, '2', 1, '2011'),
(3, '3', 1, '2011'),
(4, '4', 1, '2011'),
(5, '5', 1, '2011'),
(6, '1', 2, '2011'),
(7, '2', 2, '2011');
resultat: etudiant1etudiant2etudiant3etudiant4etudiant1etudiant5etudiant6etudiant10etudiant11etudiant12etudiant14
je recois les etudiants mixtes, ca veut dire, pour le premier jour, les etudiants de la premiere classe et les etudiants de la 2eme classe sont presents dans les 2 classes
1er jour: 2 etudiants (1 et 2) ont passe l examen dans la 1ere classe
1er jour: 2 etudiants (10 et11) ont passe l examen dans la 2eme classe
je recois comme resultat:
1ere classe:
1er jour: les etudiants 1, 2, 10 et 11
2eme classe:
1er jour: les etudiants 1, 2, 10 et 11
Fév 2012, 10:47
J'ai 4 tables:
etudiants: liste des etudiants
jours: nom des jours
classes: nom des classes
joinTables: table de jointure
Je voudrais lister les etudiants qui ont passe l'examen suivant une date (jours), par classe et par annee (une seule annee presente), je cherche un resultat comme suite:
1ere classe:
Jour1: etudiant1, etudiant2
Jour1: etudiant3, etudiant4
Jour1: etudiant1, etudiant5, etudiant6 // le premier etudiant n a pas termine, donc on continue avec lui
2eme classe:
Jour1: etudiant10, etudiant11
Jour1: etudiant12, etudiant14
Jour1: etudiant10, etudiant11, etudiant12 // les etudiants n ont pas termine
ma requete est:
Le resultat pour la 1ere classe est bon, alors qu'il me donne le meme resultat pour la 2eme classe
voici mes tables
etudiant1,
etudiant2,
etudiant3,
etudiant4
..
..
etudiant N
=============
CREATE TABLE jours
idj
jour
id_c
annee
jour1, 1, 2011
jour2, 1, 2011
jour3, 1, 2011
jour4, 1, 2011
jour5, 1, 2011
jour6, 1, 2011
CREATE TABLE classes
idc
classe
classe1, classe2
CREATE TABLE joinTables
idjoin
idetudiant
idjour
idclasse
annee
* Cas de la 1ere classe
1er jour: 2 etudiants (1 et 2) ont passe l examen dans la 1ere classe
NULL, 1, 1, 1, 2011
NULL, 2, 1, 1, 2011
2eme jour: 2 etudiants (3 et 4) ont passe l examen dans la 1ere classe
NULL, 3, 2, 2, 2011
NULL, 4, 2, 2011
3eme jour: 3 etudiants (1, 5 et 6) ont passe l examen dans la 1ere classe
NULL, 1, 3, 1, 2011
NULL, 5, 3, 1, 2011
NULL, 6, 3, 1, 2011
==============
* Cas de la 2eme classe
1er jour: 2 etudiants (10 et11) ont passe l examen dans la 2eme classe
NULL, 10, 1, 1, 2011
NULL, 11, 1, 1, 2011
2eme jour: 2 etudiants (12 et 14) ont passe l examen dans la 2eme classe
NULL, 12, 2, 1, 2011
NULL, 14, 2, 1, 2011
3eme jour: 3 etudiants (10, 11, 12) ont passe l examen dans la 2eme classe
NULL, 10, 3, 1, 2011
NULL, 11, 3, 1, 2011
NULL, 12, 3, 1, 2011
merci
est ce qu'il y q quelqu'un qui a une idee sur ce bug?
Bonjour,
Quand je clique sur une icone, je voudrais que le fichier soit telecharge, il retourne cette erreur:
data is null
[Break On This Error]$(".downloadCounter").html(data.downloadCounterCheck);
page1.php:
page2.php:
function forcerTelechargement($nom, $situation, $poids)
{
header('Content-Type: application/octet-stream');
header('Content-Length: '. $poids);
header('Content-disposition: attachment; filename='. $nom);
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($situation);
exit();
}
$return_arr = array();
$rub = $_POST['rub'];
$srub = $_POST['srub'];
$cat = $_POST['cat'];
$scat = $_POST['scat'];
$menu = $_POST['menu'];
$type = intval(abs($_POST['type']));
$num = intval(abs($_POST['num']));
$date_posted = time();
$sel = 'SELECT .... LIMIT 1';
$reqs = $connexion->query($sel);
$results = $reqs->fetchAll();
if(empty($results))
{
echo 'cannot add to DB';
}
else
{
foreach($results as $kd=>$vd)
{
$downloaded = $vd['downloaded'];
}
$downloadCounterCheck = $downloaded + 1;
$up = 'UPDATE ....';
$requp = $connexion->query($up);
$path2mp3 = '[url]http://www.site.com/file.mp3[/url]';
}
$return_arr["downloadCounterCheck"] = $downloadCounterCheck;
forcerTelechargement($domainSite.'_'.$scat.$soura_num.'.mp3', $path2mp3, 1000000);
echo json_encode($return_arr);
?>
index.php:
merci
c'est bon, j'ai tout compile en une seule table
Bonjour,
Je fais un QCM afin de recuperer les statistiques des clients:
table questions:
table reponses:
ma requete est:
foreach() {
echo $question;
SELECT * FROM reponses WHERE ida = $idq
foreach() {
echo '<input type="radio" name="r1" value="r1" /> '.$reponse1.'<br />';
echo '<input type="radio" name="r2" value="r2" /> '.$reponse2.'<br />';
echo '<input type="radio" name="r3" value="r3 /> '.$reponse3.'<br />';
}
alors le code HTML est de, par exemple
<input type="radio" name="r1" value="r1" />reponse1<br />
<input type="radio" name="r2" value="r2" />reponse2<br />
<input type="radio" name="r3" value="r3" />reponse3<br />
Question 2:
<input type="radio" name="r1" value="r1" />reponse1<br />
<input type="radio" name="r2" value="r2" />reponse2<br />
<input type="radio" name="r3" value="r3" />reponse3<br />
// ainsi de suite
lors du choix des reponses, ca trouble entre les differentes questions, comment puis je faire pour resoudre ce probleme?
merci
Merci Jc pour l'explication
est ce qu'on fait ce genre de protection (htmlentities, addslashes,..) meme pour les requete SELECT et DELETE, ou bien juste pour INSERT et UPDATE?
et je peux utiliser aussi quote()?
Bonjour,
En commençant par suivre ces recommendations.
N'hésite pas à demander si t'as pas compris quelque chose.
++
J'ai mis mon code et je voudrais juste savoir comment le proteger des injections, on sait bien que je dois utiliser les quote, mais je voudrais me donner plus de conseils sur la securite de mes codes
Bonjour,
Je fais mes requetes par la methode query, comment puis je proteger mes donnees contre les injections, cote insert, select, update.
merci
c'est dur
et c'est quoi la solution JSON?
Bonjour,
Ca marche aussi sans JQuery
et comment faire sans recharher la page?
j'ai elimine le json, et j'ai travaille avec jQuery seul, ca marche sans json
ca reviens en une erreur:
j'ai mis le code:
il me retourne rien dans la page, par contre au niveau firebug, il affiche tous les resultats, en mettant:
il affiche un seul resultat comme auparavant
regarde aussi les remarques que j'ai fait au dessus
a++
je n'ai aucun echo et j'ai ajoute:
ca me donne cette erreur:
voila le code HTML, il y a 2 commentaires (commentaire 1 et commentaire 2) sont affiches par defaut parce que je fais LIMIT2, alors quand je clique sur "see more comments", je dois avoir tous les commentaire dans la table, qui sont 13, je recois seulement un qui est "nouveau commentaire":
<hr style="width: 500px; color: green;">
<div style="background-color: rgb(165, 165, 240); overflow: hidden; width: 500px;">
<div style="float: left; width: 450px; background-color: rgb(113, 113, 231);">
Pseudo2 on time time<br>commentaire 2
</div>
<div style="float: left; width: 50px; background-color: rgb(56, 56, 219);">
<img src="Images/noProfile.png" height="50" width="50">
</div>
</div>
<hr style="width: 500px; color: green;">
</div>
<span style="" class="appendComs">
<div style="background-color: rgb(165, 165, 240); overflow: hidden; width: 500px;">
<div style="float: left; width: 450px; background-color: rgb(113, 113, 231);">
nouveau commentaire
</div>
<div style="float: left; width: 50px; background-color: rgb(56, 56, 219);">
<img src="Images/noProfile.png" height="50" width="50">
</div>
</div>
<hr style="width: 500px; color: green;">
</span>
<span class="displayNewCom"></span>
<span class="comErrors"></span>
<form name="formName" method="POST" action="" autocomplete="on" id="formComments">
<fieldset name="FieldSetName" id="rien" style="width: 480px; border: 0pt none red; margin-right: auto; margin-left: auto;">
<img src="Images/Icons/aya_r.gif" align="absmiddle" height="20">
<font color="green"><b>Formulaire</b></font>
<img src="Images/Icons/aya_l.gif" align="absmiddle" height="20">Les champs
<ul>
<li>
<img src="Images/noProfile.png" height="50" width="50">
<textarea name="commentaire" spellcheck="true" cols="50" rows="2" placeholder="okoko" class="commentaire">
</textarea>
</li>
</ul>
<input name="username" value="1" id="idUsername" type="hidden">
<input name="level1" value="6" id="IDlevel1" type="hidden">
<input name="level2" value="43" id="IDlevel2" type="hidden">
<input name="level3" value="7" id="IDlevel3" type="hidden">
<input name="num" value="89" id="IDnum" type="hidden">
<input name="Send" value="Envoyer" class="SubCom" style="float: right; display: none;" type="submit">
</fieldset>
</form>
<span class="loading"><img src="Images/Icons/ajax-loader.gif"> Loading</span>
</div>
</div>
Salut,
Est ce que la requête retourne bien les enregistrements escomptés ?a++
j'ai fait un:
et ca me retourne tous les enregistrements sur firebug
Bonjour,
J'ai un code des commentaires, lorsque je clique sur "afficher plus de commentaires", il affiche seulement 1, autrement dit: j'affiche seulement 2 commentaires, je clique sur "afficher plus de commentaires", il doit afficher la totalite des commentaires, par consequent il affiche seulement 1 meme si j'ai une totalite a afficher de 5.
le code index:
code displayCommentsMore:
$return_arr = array();
include '../Included_Files/Connect.php';
include '../Included_Files/paths.php';
$level1 = $_POST['level1'];
$level2 = $_POST['level2'];
$level3 = $_POST['level3'];
$num = $_POST['num'];
$maxComsPerPage = '99';
$sqlq = 'SELECT * FROM commentaires WHERE level1 = "'.$level1.'" AND level2 = "'.$level2.'" AND level3 = "'.$level3.'" AND num = "'.$num.'" ORDER BY idcom DESC';
echo $sqlq;
$req = $connexion->query($sqlq);
$result = $req->fetchAll();
$total_com = count($result);
echo $total_com;
foreach($result as $kArr=>$vArr)
{
$idcom = strip_tags($vArr['idcom']);
$id_pseudo = strip_tags($vArr['id_pseudo']);
$date_posted = strip_tags($vArr['date_posted']);
$commentaire = strip_tags($vArr['commentaire'], '<a>');
$commFull = '<div style="background-color:#a5a5f0; overflow:hidden; width:500px;">';
$commFull .= '<div style="float:left; width:450px; background-color:#7171e7;">';
$commFull .= $commentaire;
$commFull .= '</div>';
$commFull .= '<div style="float:left; width:50px; background-color:#3838db;">';
$commFull .= '<img src="'.$path2imgs.'noProfile.png" width="50" height="50" />';
$commFull .= '</div>';
$commFull .= '</div>';
$commFull .= '<hr style="width: 500px; color: green;">';
}
$return_arr["commFull"] = $commFull;
echo json_encode($return_arr);
?>
resultat sur firebug, j'ai pas mis d'affichage, j'ai mis des echos pour voir le resultat de la requete ainsi que le total:
merci a vous