Boucle dans fonction avec affichage html.

Résolu
vermich89 Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   -  
vermich89 Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   -
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;
  

			}
	

}
?>

8 réponses

Gigatrappeur Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   25
 
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   Statut Membre Dernière intervention   13
 
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   Statut Membre Dernière intervention   25
 
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   Statut Membre Dernière intervention   13
 
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   Statut Membre Dernière intervention   25
 
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   Statut Membre Dernière intervention   13
 
ç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   Statut Membre Dernière intervention   25
 
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   Statut Membre Dernière intervention   13
 
pas de souci, ca fonctionne maintenant.

Un grand merci pour ton aide !!!
0