[DEV] Mod de cours

Forum de développements privés.

Modérateur: Equipe

Règles du forum
A lire impérativement sur notre page : Règlement

[DEV] Mod de cours

Messagepar Babacooll » 13 Aoû 2004 à 11:49

Salut je développe tjs mon mod de cours, mais j'obtiens quelques problèmes, avant j'utilisais tjs dans mon admin, un fichier de formulaire et un ficheir de traitement... Mais j'ai trouvé un système de plus simple, en utilisant les variables $mode dans l'adresse, mais le problème est que, quand je clique sur envoyer, la page de droite de l'admin se redirige automatiquement vers l'index du forum... Voilà le fichier en quesiton, merci de votre aide ^^
Code: Tout sélectionner
<?php
define('IN_PHPBB', 1);

if(	!empty($setmodules) )
{
	$file = basename(__FILE__);
	$module['General']['Matières de Poudlard'] = $file;
	return;
}

$phpbb_root_path = '../';
require($phpbb_root_path . 'extension.inc');
require('pagestart.' . $phpEx);



if( $userdata['user_level'] != ADMIN )
{
	message_die(GENERAL_MESSAGE, $lang['Not_Authorised']);
}


$template->set_filenames(array(
	'body' => 'admin/admin_matiere.tpl')
);
	$template->assign_vars(array(
		'USERNAME' => $userdata['username'])
	);


if ( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
{
$mode = ( isset($HTTP_GET_VARS['mode']) ) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
$mode = htmlspecialchars($mode);


	if ( $mode == 'add' )
	{
$template->set_filenames(array(
	'body' => 'admin/admin_matiere_add.tpl')
);
	$template->assign_vars(array(
		'USERNAME' => $userdata['username'])
	);
	}



	else if ( $mode == 'delete' )
	{
$template->set_filenames(array(
	'body' => 'admin/admin_matiere_delete.tpl')
);
	$template->assign_vars(array(
		'USERNAME' => $userdata['username'])
	);
	}	
	
$template->pparse('body');	
include('page_footer_admin.' . $phpEx);
?>
Avatar de l’utilisateur
Babacooll
Floodeur expérimenté
Floodeur expérimenté
 
Messages: 1889
Enregistré le: 20 Déc 2003 à 15:45
Localisation: Belgique

Messagepar gendo » 13 Aoû 2004 à 12:05

A/ tu as un double appel avec la fonction set_filenames():
Code: Tout sélectionner
$template->set_filenames(array(
   'body' => 'admin/admin_matiere.tpl')

+ un appel selon le mode.

B/ Ton problème de redirection est très probablement du à une erreur dans l'assignation de ta balise form, dans ce cas, ton tpl serait le bienvenue.
|--------------------------------------------------- Image ---------------------------------------------------|
| Utilisateurs d'internet explorer, je vous deteste......... | Une académie virtuelle? c'est par ICI | Mods phpBB |
| phpBBhacks :: base de données de mods | Denturax | Firefox | Vive Google... Et le délire... Et delirax !!!!!! |
+------------------------------------------------------------------------------------------------------------+
Avatar de l’utilisateur
gendo
Posteur habitué
Posteur habitué
 
Messages: 285
Enregistré le: 25 Fév 2004 à 21:30
Localisation: $userdata['user_interests']

Messagepar Babacooll » 13 Aoû 2004 à 12:18

j'ai po bien compris la première erreur, mais voilà le form de mon tpl (en simplifié sans les variables)

Code: Tout sélectionner
<form method="POST" action="admin_matiere.php?mode=add">
<U>Nom de la Matière: </U> <input type="text" name="name" size="20">
<U>Description de la Matière: </U> <textarea rows="5" name="desc" cols="40"></textarea>
<input type="submit" value="Continuer">
</form>
Avatar de l’utilisateur
Babacooll
Floodeur expérimenté
Floodeur expérimenté
 
Messages: 1889
Enregistré le: 20 Déc 2003 à 15:45
Localisation: Belgique

Messagepar Babacooll » 13 Aoû 2004 à 12:20

ah oui, c bon j'ai capté la premier erreur ;) mais comment la régler, et surtout comment régler le 2ème problème, car c un bug récurent chez moi :s
Avatar de l’utilisateur
Babacooll
Floodeur expérimenté
Floodeur expérimenté
 
Messages: 1889
Enregistré le: 20 Déc 2003 à 15:45
Localisation: Belgique

Messagepar korko » 13 Aoû 2004 à 12:41

lol si le mec utilise le mod add, tu lui assign 2 templates
change ta page par sa :
Code: Tout sélectionner
<?php
define('IN_PHPBB', true);

if( !empty($setmodules) )
{
	$file = basename(__FILE__);
	$module['General']['Matières de Poudlard'] = $file;
	return;
}

$phpbb_root_path = '../';
require($phpbb_root_path . 'extension.inc');
require('pagestart.' . $phpEx);



if( $userdata['user_level'] != ADMIN )
{
	message_die(GENERAL_MESSAGE, $lang['Not_Authorised']);
}

if ( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
{
	$mode = ( isset($HTTP_GET_VARS['mode']) ) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
	$mode = htmlspecialchars($mode);
}

if ( $mode == 'add' )
{
	$template->set_filenames(array(
		'body' => 'admin/admin_matiere_add.tpl')
	);
}
else if ( $mode == 'delete' )
{
	$template->set_filenames(array(
		'body' => 'admin/admin_matiere_delete.tpl')
	);
}   
else
{
	$template->set_filenames(array(
		'body' => 'admin/admin_matiere.tpl')
	);
}
   
$template->assign_vars(array(
	'USERNAME' => $userdata['username'])
);

$template->pparse('body');   

include('page_footer_admin.' . $phpEx);

?>


et tu avais oublier un } :)

Mais vu que dans les 3 cas, tu n'envoi que 'USERNAME', il vaux mieux ne le faire qu'une fois plutot que 3 ;)
korko
Apprenti-floodeur
Apprenti-floodeur
 
Messages: 1334
Enregistré le: 09 Aoû 2003 à 14:48
Localisation: Entre 2 variables

Messagepar Babacooll » 13 Aoû 2004 à 13:39

Oui mais c'est une feuille de test, et sinon ,ca ne marche pas le truc :s J'arrive tjs sur l'idnex, vous pouriez tester chez vous?
Avatar de l’utilisateur
Babacooll
Floodeur expérimenté
Floodeur expérimenté
 
Messages: 1889
Enregistré le: 20 Déc 2003 à 15:45
Localisation: Belgique

Messagepar Babacooll » 13 Aoû 2004 à 14:36

j'avais penser faire ca alors:
Code: Tout sélectionner
<?php
define('IN_PHPBB', true);

if( !empty($setmodules) )
{
   $file = basename(__FILE__);
   $module['General']['Matières de Poudlard'] = $file;
   return;
}

$phpbb_root_path = '../';
require($phpbb_root_path . 'extension.inc');
require('pagestart.' . $phpEx);
if( $userdata['user_level'] != ADMIN )
{
   message_die(GENERAL_MESSAGE, $lang['Not_Authorised']);
}
   $template->set_filenames(array(
      'body' => 'admin/admin_matiere_add.tpl')
   );
$template->assign_vars(array(
   'TRAIT' => $sql)
);

$template->pparse('body');
$sql = "requete";
include('page_footer_admin.' . $phpEx);

?>

Et dans mon tpl

Code: Tout sélectionner
<form method="POST" action="{TRAIT}">
<U>Nom de la Matière: </U> <input type="text" name="name" size="20">
<U>Description de la Matière: </U> <textarea rows="5" name="desc" cols="40"></textarea>
<input type="submit" value="Continuer">
</form>
Avatar de l’utilisateur
Babacooll
Floodeur expérimenté
Floodeur expérimenté
 
Messages: 1889
Enregistré le: 20 Déc 2003 à 15:45
Localisation: Belgique

Messagepar korko » 13 Aoû 2004 à 15:36

si tu va ssur l'index c'est que tu ne donne pas la bonne action. l'action dans <form c'est un fichier. Donc par exemple index.php ou autre. la page que je t'ai donnée est bonne il suffit que tu mette don nom en tant qu'action.
korko
Apprenti-floodeur
Apprenti-floodeur
 
Messages: 1334
Enregistré le: 09 Aoû 2003 à 14:48
Localisation: Entre 2 variables

Messagepar Babacooll » 13 Aoû 2004 à 16:37

ok merci ;) je vous tiendrai au courant ;)
Avatar de l’utilisateur
Babacooll
Floodeur expérimenté
Floodeur expérimenté
 
Messages: 1889
Enregistré le: 20 Déc 2003 à 15:45
Localisation: Belgique

Messagepar Babacooll » 15 Aoû 2004 à 13:46

j'ai encore un problème, j'ai fait lz formulaire pour envoyer le devoir, et j'aimerai d'abord vérifier si un devoir sur le même cours et envoyé par le même élève existe déjà dasn la base, le cas échéant, un message s'affiche pour lui dire qu'il a déjà fait le devoir... J'ai donc fait ainsi:
Code: Tout sélectionner
$sql6 = 'SELECT devoir FROM phpbb_devoir WHERE id_cours='.$id_cours.' AND user_id_eleve='.$userdata['user_id'].'';
$req6 = mysql_query($sql6) or die('Erreur SQL !<br>'.$sql6.'<br>'.mysql_error());
$res6 = mysql_numrows($req6);
while($data7 = mysql_fetch_array($req6))
{
if ( $res6 = 0 )
{
echo 'FORMULAIRE';
}
else if ( $res6 != 0 )
{
echo 'Pas formulaire';
}
}


Mais ca ne m'affiche aucune des 2 propositions, qu'il y ait le devoir correspondant au WHERE dedans ou non, il ne m'affiche aucune des 2 propositions... Que faire???

PS: La valeur '.$id_cours.' du WHERE est bien définie dans le fichier, le problème ne vient pas de là ...
Avatar de l’utilisateur
Babacooll
Floodeur expérimenté
Floodeur expérimenté
 
Messages: 1889
Enregistré le: 20 Déc 2003 à 15:45
Localisation: Belgique

Messagepar Babacooll » 15 Aoû 2004 à 14:48

excusez moi, je me suis trompé de forum, ct pour le coding, mais si ici quelqun connait la réponse ^^
Avatar de l’utilisateur
Babacooll
Floodeur expérimenté
Floodeur expérimenté
 
Messages: 1889
Enregistré le: 20 Déc 2003 à 15:45
Localisation: Belgique

Messagepar korko » 15 Aoû 2004 à 21:00

je ne sais pas pour ta question et on va dire j'ai pas bien fait attention. Mais tu devrait histoire de bien le rendre compatible remplacer tout les "mysql_" par "$db->sql_"
korko
Apprenti-floodeur
Apprenti-floodeur
 
Messages: 1334
Enregistré le: 09 Aoû 2003 à 14:48
Localisation: Entre 2 variables

Messagepar gendo » 15 Aoû 2004 à 21:12

Exactement:

Code: Tout sélectionner
mysql_num_rows($query_id = 0) =  $db->sql_numrows($query_id)

mysql_affected_rows()  =  $db->sql_affectedrows()

mysql_num_fields($query_id = 0)  =  $db->sql_numfields($query_id)

mysql_field_name($query_id, $offset)  =  $db->sql_fieldname($offset, $query_id = 0)

mysql_field_type($query_id, $offset)  =  $db->sql_fieldtype($offset, $query_id = 0)

mysql_fetch_array($query_id, MYSQL_ASSOC)  =  $db->sql_fetchrow($query_id = 0)

mysql_data_seek($query_id, $rownum)  =  $db->sql_rowseek($rownum, $query_id = 0)

mysql_insert_id()  =  $db->sql_nextid()

mysql_free_result($query_id)  =  $db->sql_freeresult($query_id = 0)
|--------------------------------------------------- Image ---------------------------------------------------|
| Utilisateurs d'internet explorer, je vous deteste......... | Une académie virtuelle? c'est par ICI | Mods phpBB |
| phpBBhacks :: base de données de mods | Denturax | Firefox | Vive Google... Et le délire... Et delirax !!!!!! |
+------------------------------------------------------------------------------------------------------------+
Avatar de l’utilisateur
gendo
Posteur habitué
Posteur habitué
 
Messages: 285
Enregistré le: 25 Fév 2004 à 21:30
Localisation: $userdata['user_interests']

Messagepar Babacooll » 15 Aoû 2004 à 22:07

étant encore un pitit peu apprenti, quelle est la différence exacte entre mysql_ et votre méthode???
Avatar de l’utilisateur
Babacooll
Floodeur expérimenté
Floodeur expérimenté
 
Messages: 1889
Enregistré le: 20 Déc 2003 à 15:45
Localisation: Belgique

Messagepar gendo » 15 Aoû 2004 à 23:16

La DB compliance, fonctionnement avec plus des bases que Mysql.
La classe dont est issu l'objet $db est différente selon la base de donéne utilisée. Et donc les fonctions de la classe sont différentes. Toujours le même nom, mais pas les mêmes inctructions,pour traduire par exemple un requête de selection pour mysql, oracle, protogrestsql, etc...
|--------------------------------------------------- Image ---------------------------------------------------|
| Utilisateurs d'internet explorer, je vous deteste......... | Une académie virtuelle? c'est par ICI | Mods phpBB |
| phpBBhacks :: base de données de mods | Denturax | Firefox | Vive Google... Et le délire... Et delirax !!!!!! |
+------------------------------------------------------------------------------------------------------------+
Avatar de l’utilisateur
gendo
Posteur habitué
Posteur habitué
 
Messages: 285
Enregistré le: 25 Fév 2004 à 21:30
Localisation: $userdata['user_interests']

Suivante

Retourner vers Développements privés

 


  • Articles en relation
    Réponses
    Vues
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

cron