kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015
-
4 juil. 2006 à 15:54
cirkooo
Messages postés35Date d'inscriptionsamedi 23 juin 2007StatutMembreDernière intervention26 décembre 2012
-
18 mars 2010 à 03:17
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cirkooo
Messages postés35Date d'inscriptionsamedi 23 juin 2007StatutMembreDernière intervention26 décembre 2012 18 mars 2010 à 03:17
en fait cet appel, ne renvoie rien: matiere.php?id=8 . le problème est surement dans le primary key de l'id? non?
cirkooo
Messages postés35Date d'inscriptionsamedi 23 juin 2007StatutMembreDernière intervention26 décembre 2012 18 mars 2010 à 03:11
je voulais dire dans phpmyadmin, les requetes.
cirkooo
Messages postés35Date d'inscriptionsamedi 23 juin 2007StatutMembreDernière intervention26 décembre 2012 18 mars 2010 à 03:10
les matières s'affichent bien, mais aucune question n'apparait? la base de données est rempli, si ce n'est les deux dernières requetes: les alter add constraint, ne sont pas passés dans mon wamp, erreur quelconque. avec ie pareil. pourquoi, ces requetes ne passent pas dans wamp?:
ALTER TABLE `question`
ADD CONSTRAINT `testquestion` FOREIGN KEY (`idtest`) REFERENCES `test` (`idtest`);
ALTER TABLE `test`
ADD CONSTRAINT `matieretest` FOREIGN KEY (`idmatiere`) REFERENCES `matiere` (`idmatiere`);
cs_jean84
Messages postés449Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 5 mars 2009 12 avril 2007 à 00:01
Il faut faire attention avec les fonctions de bufferisation. Le temps que tu gagnes avec la virgule, tu le perd lors de la mise en tampon.
Mieux vaut s'en tenir eloigne sauf si necessaire (envoi d'un cookie apres du code html ou un echo).
Et l'envoi de donnees vers le flux de sortie ne dure pas 3 sec non plus, il faut relativiser. La bande passante y est pour beaucoup, aussi mieux vaut tabler sur un minimum de calcul de la part du serveur et faire travailler la bande passante que l'inverse, question de choix surement :-)
spidermario
Messages postés121Date d'inscriptionmercredi 26 octobre 2005StatutMembreDernière intervention14 mars 20091 4 avril 2007 à 17:07
En fait, la virgule pour les echo n'est pas toujours plus rapide que le point dans la mesure où elle doit écrire plusieurs fois sur le flux de sortie, ce qui est long.
Toutefois, en mettant
ob_start();
au début du code et
ob_end_flush();
à la fin, echo n'écrira pas directement sur le flux de sortie mais sur un tampon qui sera vidé à l'appel de ob_end_flush, ce qui fait que la virgule devient plus performante. On peut d'ailleurs à tout moment appeler la fonction ob_get_content pour récupérer le contenu actuel du tampon.
ewlad
Messages postés1Date d'inscriptionvendredi 26 mai 2006StatutMembreDernière intervention22 août 2006 22 août 2006 à 01:05
Je trouve vos remarques très utile et le code devient plus robuste
Merci pour tous le deux !
cs_jean84
Messages postés449Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 5 mars 2009 17 juil. 2006 à 20:43
2/3 trucs :
- utilise les ' plutot que les " (surtout dans une requete de type SELECT * FROM !!)
- dans connect.php
-> $cnx = mysql_connect($mysqlServerDB,$userDB,$passwdDB) or
die("Echec de la connection");
mysql_select_db($dataBaseNameDB) or die("Echec de la connection");
Ton mysql_select_db() doit etre de la frome : mysql_sql_db($dataBaseNameDB, $cnx);
Utilise de preference le '.' =>
Moi perso je fais sa :
$Affichage = '';
$Affichage .= '<tr height="25"><td bgcolor="#CCFFCC">';
$Affichage .= [matiere.php?id='.$id.' '.$mat.']';
$Affichage .= </td><td bgcolor="#CCFFCC">';
$Affichage .= $niv;
$Affichage .= </td><td bgcolor="#CCFFCC">';
$Affichage .= $fil;
$Affichage .= </td></tr>';
echo $Affichage;
fais le en debut de page et tu verras sa sera mieux et plus digeste (a mon sens evidement)
<?php
$score=0;
//conection à la base
require ("connect.php");
$choice = $_POST['choice'];
//compter le nombre des questions
$nbq=count($choice);
?>
<?php [...]
Si tu doit encore utiliser php, pourquoi referme la balise pour la re-ouvrir ??
Sinon pour la suite, je dirais que c'est sympa comme code malgre les quelques erreurs (on est la pour apprendre), et te souhaite de continuer comme sa (par contre essaye de faire un truc un peu plus fun comme code parce que les qcm ... lol... :p)
@+
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 6 juil. 2006 à 03:12
Exacte mais seulement pour les echo... après bon si c'est pour 3 echo c'est pas bien grave à partir du moment ou les variables sont concaténées et que les string sont entre simples quotes... ... .. .
@ tchaOo°
Taka_s_tiger
Messages postés32Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention 5 juillet 2006 5 juil. 2006 à 13:38
il me semble avoir déja lu sur ce site que la virgule est à préférer plutot que l'opérateur de concaténation . (point) dans le cadre d'un echo...pour des raisons d'optimisation
quelqu'un peut confirmer ?
stepibou
Messages postés112Date d'inscriptionjeudi 11 mars 2004StatutMembreDernière intervention11 octobre 2006 5 juil. 2006 à 11:30
Daccord avec ces 2 commentaires...
Je rajouterai que ton doctype n'est pas en accord avec ton code...
pour mysql : "select * from" , ca c bof! y faut que tu selectionne ce dont tu a besoin..
Pour le php : pas faire des echo à la suite, privilegier le . (point)
bye
TheSin
Messages postés331Date d'inscriptionmardi 12 novembre 2002StatutMembreDernière intervention10 février 2009 5 juil. 2006 à 10:22
$mat=$qcm['matiere'];
$fil=$qcm['filiere'];
$niv=$qcm['niveau'];
pour faire juste après :
echo $mat;
echo $fil;
echo $niv;
(en enlevant l'html entre)
pourquoi pas un simple ...
echo $qcm['matiere'];
echo $qcm['filiere'];
echo $qcm['niveau'];
pas la peine de surcharger la mémoire inutilement ;)
De plus :
$id=$_GET['id'];
$idmat=$_GET['idmat'];
$ntest=$_GET['ntest'];
$mat=$_GET['mat'];
$fil=$_GET['fil'];
$niv=$_GET['niv'];
Tu met tout ca dans une requete mysql sans les vérifier, donc mysql injection très facile à faire ;)
Encore une petite chose ... je crois que le niveau initié est un peu exagéré ;)
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 4 juil. 2006 à 15:54
C'est qui qui note comme ça sans mettre de commentaire... pffffffffff... .. .
18 mars 2010 à 03:17
18 mars 2010 à 03:11
18 mars 2010 à 03:10
ALTER TABLE `question`
ADD CONSTRAINT `testquestion` FOREIGN KEY (`idtest`) REFERENCES `test` (`idtest`);
ALTER TABLE `test`
ADD CONSTRAINT `matieretest` FOREIGN KEY (`idmatiere`) REFERENCES `matiere` (`idmatiere`);
12 avril 2007 à 00:01
Mieux vaut s'en tenir eloigne sauf si necessaire (envoi d'un cookie apres du code html ou un echo).
Et l'envoi de donnees vers le flux de sortie ne dure pas 3 sec non plus, il faut relativiser. La bande passante y est pour beaucoup, aussi mieux vaut tabler sur un minimum de calcul de la part du serveur et faire travailler la bande passante que l'inverse, question de choix surement :-)
4 avril 2007 à 17:07
Toutefois, en mettant
ob_start();
au début du code et
ob_end_flush();
à la fin, echo n'écrira pas directement sur le flux de sortie mais sur un tampon qui sera vidé à l'appel de ob_end_flush, ce qui fait que la virgule devient plus performante. On peut d'ailleurs à tout moment appeler la fonction ob_get_content pour récupérer le contenu actuel du tampon.
22 août 2006 à 01:05
Merci pour tous le deux !
17 juil. 2006 à 20:43
- utilise les ' plutot que les " (surtout dans une requete de type SELECT * FROM !!)
- dans connect.php
-> $cnx = mysql_connect($mysqlServerDB,$userDB,$passwdDB) or
die("Echec de la connection");
mysql_select_db($dataBaseNameDB) or die("Echec de la connection");
Ton mysql_select_db() doit etre de la frome : mysql_sql_db($dataBaseNameDB, $cnx);
Evite les echo en boucle :
echo '<tr height="25"><td bgcolor="#CCFFCC">';
echo '[matiere.php?id='.$id.' '.$mat.']';
echo '</td><td bgcolor="#CCFFCC">';
echo $niv;
echo'</td><td bgcolor="#CCFFCC">';
echo $fil;
echo'</td></tr>';
Utilise de preference le '.' =>
Moi perso je fais sa :
$Affichage = '';
$Affichage .= '<tr height="25"><td bgcolor="#CCFFCC">';
$Affichage .= [matiere.php?id='.$id.' '.$mat.']';
$Affichage .= </td><td bgcolor="#CCFFCC">';
$Affichage .= $niv;
$Affichage .= </td><td bgcolor="#CCFFCC">';
$Affichage .= $fil;
$Affichage .= </td></tr>';
echo $Affichage;
fais le en debut de page et tu verras sa sera mieux et plus digeste (a mon sens evidement)
<?php
$score=0;
//conection à la base
require ("connect.php");
$choice = $_POST['choice'];
//compter le nombre des questions
$nbq=count($choice);
?>
<?php [...]
Si tu doit encore utiliser php, pourquoi referme la balise pour la re-ouvrir ??
Sinon pour la suite, je dirais que c'est sympa comme code malgre les quelques erreurs (on est la pour apprendre), et te souhaite de continuer comme sa (par contre essaye de faire un truc un peu plus fun comme code parce que les qcm ... lol... :p)
@+
6 juil. 2006 à 03:12
@ tchaOo°
5 juil. 2006 à 13:38
quelqu'un peut confirmer ?
5 juil. 2006 à 11:30
Je rajouterai que ton doctype n'est pas en accord avec ton code...
pour mysql : "select * from" , ca c bof! y faut que tu selectionne ce dont tu a besoin..
Pour le php : pas faire des echo à la suite, privilegier le . (point)
bye
5 juil. 2006 à 10:22
$fil=$qcm['filiere'];
$niv=$qcm['niveau'];
pour faire juste après :
echo $mat;
echo $fil;
echo $niv;
(en enlevant l'html entre)
pourquoi pas un simple ...
echo $qcm['matiere'];
echo $qcm['filiere'];
echo $qcm['niveau'];
pas la peine de surcharger la mémoire inutilement ;)
De plus :
$id=$_GET['id'];
$idmat=$_GET['idmat'];
$ntest=$_GET['ntest'];
$mat=$_GET['mat'];
$fil=$_GET['fil'];
$niv=$_GET['niv'];
Tu met tout ca dans une requete mysql sans les vérifier, donc mysql injection très facile à faire ;)
Encore une petite chose ... je crois que le niveau initié est un peu exagéré ;)
4 juil. 2006 à 15:54
@ tchaOo°