Boucle dans fonction avec affichage html.

Résolu/Fermé
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 - 7 mai 2013 à 09:50
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 - 7 mai 2013 à 13:42
Bonjour à tous,


Je sollicite votre aide car je suis en train de créer un module prestashop mais je reste bloqué.

je souhaite afficher le contenu d'une table sous forme de tableau et pour cela j'ai créer une boucle qui est censé affiché chaque ligne de la table. Mais j'ai eu beau la retravailler 15 fois je vois plus du tout comment ça doit marcher. voici la page php du module

Si quelqu'un a un peu de temps pour m'aider , merci d'avance.

<?php
if (!defined('_PS_VERSION_'))
  exit;
 
class CodeCe extends Module
{
 public function __construct()
  {
    $this->name = 'codece';
    $this->tab = 'administration';
    $this->version = '1.0';
    $this->author = 'vermeeren romain';
    $this->need_instance = 0;
    $this->ps_versions_compliancy = array('min' => '1.5', 'max' => '1.6'); 
 
    parent::__construct();
 
    $this->displayName = $this->l('Code CE');
    $this->description = $this->l('champs code CE lors de l\'inscription permettant de rejoindre automatiquement un groupe préalablement crée');
 
    $this->confirmUninstall = $this->l('Are you sure you want to uninstall?'); 
  }
 	
	public function install()
	{
	  if(!parent::install()
		|| !$this->registerHook('leftColumn')
		|| !$this->installModuleTab('AdminTutorial', array(1=>'My Tutorial Tab', 2=>'Mon onglet tutoriel'), 2))
		return false;
	  return true;
	}		 
		 
	public function uninstall()
	{
	  if(!parent::uninstall()
		|| !$this->uninstallModuleTab('AdminTutorial'))
		return false;
	  return true;
	 }
	 public function getContent()
{

	mysql_connect("localhost","admin","m4vri2ll");
	mysql_select_db("shop.admin.charlet.com");
	$requete = "select * from ps_group_code";
	$resultat = mysql_query($requete);
	
	$html = '';
  if(Tools::isSubmit('submitCode'))
  {
		$date=date("d-m-Y H:i:s");
		//$mysql_query("Insert into ps_group_code ('$submitNom','$submitCode','$date')");
        $html .= $this->displayConfirmation($this->l('Settings updated.'));
	
  }
  $html .= '<h2>'.$this->l('Tutorial Module').'</h2>
  <form action="'.$_SERVER['REQUEST_URI'].'" method="post">
    <fieldset>
      <legend>'.$this->l('Settings').'</legend> 
      <table align="center" width="200px">
		<tr>
			<td><label width="150px">'.$this->l('Nom:').'</label>
				<input type="text" name="submitCode" value="'.$submitCode.'" placeholder="Nouveau Nom" />
			</td>
			<td><label>'.$this->l('Code:').'</label>
				<input type="text" name="submitNom" value="'.$submitNom.'" placeholder="Nouveau Code" />
			</td>
		</tr>
	  </table>
	   'While($enreg=mysql_fetch_array($resultat))
			{
				Echo "<table><tr><td>"$enreg['nom'];"</td><td>"$enreg["code_ce"];"</td></tr></table>;"
			}'
    </fieldset>
  </form>';
  return $html;
  

			}
	

}
?>
A voir également:

8 réponses

Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
7 mai 2013 à 10:43
Bonjour,

En effet, je serai étonné si cela fonctionne.

Quelque piste :
ta méthosde "public function getContent()" doit très probablement retourner une chaine HTML. (D'après ce que je vois !).

Pourquoi donc as-tu un appel à "echo" dans ton while ?

Tu utilise quoi comme éditeur ?

Aller, je te donne vite fais le code pour afficher ton tableau :
$html .= '<h2>'.$this->l('Tutorial Module').'</h2>
<form action="'.$_SERVER['REQUEST_URI'].'" method="post">
<fieldset>
  <legend>'.$this->l('Settings').'</legend> 
  <table align="center" width="200px">
    <tr>
        <td><label width="150px">'.$this->l('Nom:').'</label>
            <input type="text" name="submitCode" value="'.$submitCode.'" placeholder="Nouveau Nom" />
        </td>
        <td><label>'.$this->l('Code:').'</label>
            <input type="text" name="submitNom" value="'.$submitNom.'" placeholder="Nouveau Code" />
        </td>
    </tr>
  </table>';
$column = array('nom', 'code_ce');
$html .= '<table>';
while ($line = mysql_fetch_object($resultat))
{
    $html .= '<tr>';
    foreach($i = 0; $i < count($column); $i++)
        $html .= '<td>'.$line[$column[$i]].'</td>';
    
    $html .= '</tr>';
}
$html .= '</table>';

$html .= '</fieldset>
</form>';
return $html;
0
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
7 mai 2013 à 10:58
Oui comme tu a pu le voir j'ai finit pas coder à la truelle, je suis partie dans tous les sens. Merci pour ton aide, par contre le module ne se charge plus :

Le(s) module(s) suivant(s) ne peuvent pas être chargé.:
codece (erreur de syntaxe dans /modules/codece/codece.php)
codece (classe manquante dans /modules/codece/codece.php)
0
Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
7 mai 2013 à 11:19
Tu n'aurais pas le numéro de ligne ou il y a l'erreur de syntaxe ?
0
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
7 mai 2013 à 11:34
il n'y a pas le numéro mais en testant tout il semblerai que ce soit sur le foreach.
0

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

Posez votre question
Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
7 mai 2013 à 11:42
c'est pas faux.
Remplace foreach par for.

C'est juste que j'étais parti sur une version avec foreach et que en cours de route j'ai changé d'avis. C'est ma faute, désolé.

Gigatrappeur
0
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
Modifié par vermich89 le 7/05/2013 à 12:00
ça bloque même avec le for:

[PrestaShop] Fatal error in module codece:
Cannot use object of type stdClass as array

Comment tu va chercher nom et code_ce pour les mettre dans $column ?
0
Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
Modifié par Gigatrappeur le 7/05/2013 à 12:08
Autre erreur de ma part
Remplace la ligne :
$html .= '<td>'.$line[$column[$i]].'</td>';

par
$html .= '<td>'.$line->$column[$i].'</td>';

Désoles, je suis allé un peu vite...
0
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
7 mai 2013 à 13:42
pas de souci, ca fonctionne maintenant.

Un grand merci pour ton aide !!!
0