[RESOLU] simplifier script PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] simplifier script PHP

Re: simplifier script PHP

par bob56@ » 31 août 2015, 19:36

OK Ryle çà roule., encore merci ! =D>
<?php 

// connextion base
$base = mysql_connect ('127.0.0.1', 'root', '');  
    mysql_select_db ('essais_tarifs', $base) ;

$sql = "SELECT  f1, f2, f3   FROM table_tarifs";  
// envoie requête 
$req = mysql_query($sql) or die('Erreur SQL!<br>'.$sql.'<br>'.mysql_error());
// on ferme la connexion à mysql 
mysql_close();  

$tarifs = array( // déclaration du tableau des tarifs
   'f1' => array()
   , 'f2' => array()
   , 'f3' => array()
);


  
  
  while ($data = mysql_fetch_assoc($req)) { // alimentation du tableau
  $tarifs['f1'][] = $data['f1']; 
  $tarifs['f2'][] = $data['f2'];
  $tarifs['f3'][] = $data['f3'];
  
 
  
}
  
?>
Image

Re: simplifier script PHP

par Ryle » 31 août 2015, 13:53

La flèche => ne s'utilise que pour la déclaration du tableau et des sous tableaux :
$tarifs = array( // déclaration du tableau des tarifs
   'f1' => array()
   , 'f2' => array()
   , 'f3' => array()
);
Ensuite c'est le "=" que l'on utilise pour affecter de nouvelles valeurs dans les sous tableaux :)
while ($data = mysql_fetch_assoc($req)) { // alimentation du tableau
  $tarifs['f1'][] = $data['f1']; 
  $tarifs['f2'][] = $data['f2'];
  $tarifs['f3'][] = $data['f3'];
}

Re: simplifier script PHP

par bob56@ » 31 août 2015, 13:31

Salut Ryle ,
j'ai bien essayé ton script mais lorsque je met => j'ai ce message d'erreur :

Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW) in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\essai_tarifs\index.php on line 69

Re: simplifier script PHP

par Ryle » 31 août 2015, 12:28

Bonjour,

Ton alimentation de la variable $tarifs n'est effectivement pas bonne :
while ($data = mysql_fetch_assoc($req)) { // alimentation du tableau
  $tarifs['f1'][] = $data['f1']; // créer un nouvel index à la fin du tableau $tarifs['f1'], et y affecte la valeur de $data['f1']
  $tarifs['f2'][] = $data['f2'];
  $tarifs['f3'][] = $data['f3'];
}
"=" est l'opérateur d'affectation,
"==" est l'opérateur de comparaison,
"=>" permet d'associer une valeur à un index dans un tableau associatif
la syntaxe " $tarifs = array ('f1' => array(), ...) " revient à dire que $tarifs est un tableau contenant un index "f1", qui est lui même un sous-tableau
enfin, " $tarifs['f1'][] = xxx ", signifie que l'on créer un nouvel index dans le sous-tableau $tarifs['f1'] et que l'on y affecte la valeur xxx

Re: simplifier script PHP

par Megadeth » 31 août 2015, 10:38

Salut,

Si tu as un tableau, il faut parcourir ce dernier.

Une piste :
for($i=0; $i<count($array); $i++)
{
	echo "Id numéro $i vaut ".$id[$i]."<br/>"; 
}
on peut le faire avec while,

Sinon jette un oeil aux fonctions implode, explode et in_array qui sont bien utiles :)

Mega
;)

Re: simplifier script PHP

par bob56@ » 30 août 2015, 21:50

Excuse moi, f4 n'existe pas dans mon essai, j'ai rectifier mon post précédent !

donc avec print_r($data['f3']); j'ai le chiffre 10
chiffre qui correspond bien à celui de ma base de donnés

je veux afficher cette valeur dans ma page php

Re: simplifier script PHP

par martineP » 30 août 2015, 20:50

Je suis archi nulle dans les tableaux, mais j'essaierais de faire un print_r($data['f4']); voir ce qui s'affiche :/
Tu veux afficher un tableau dans un tableau, c'est ca ?

Re: simplifier script PHP

par bob56@ » 30 août 2015, 20:36

Bonsoir martine,

et non rien de visible

Re: simplifier script PHP

par martineP » 30 août 2015, 20:15

Peut etre que si tu mets ta derniere accolade a la fin de ton script, tu verras qque chose ?

Re: simplifier script PHP

par bob56@ » 30 août 2015, 19:26

Me revoilà le miel est en pot :D

Il doit y avoir un petit problème au niveau du script ? Fatal error: Cannot use [] for reading > au niveau alimentation tableau

Donc j'ai recréé une base et les pages PHP pour comprendre d'ou vient l'erreur.

avec ce script modifier au niveau alimentation tableau pas de message d'erreur j'ai la page qui s'ouvre dans le navigateur mais aucun retour de données avec implode ?
<?php 

// connextion base
$base = mysql_connect ('127.0.0.1', 'root', '');  
    mysql_select_db ('essais_tarifs', $base) ;

$sql = "SELECT  f1, f2, f3   FROM table_tarifs";  
// envoie requête 
$req = mysql_query($sql) or die('Erreur SQL!<br>'.$sql.'<br>'.mysql_error());
// on ferme la connexion à mysql 
mysql_close();  

$tarifs = array( // déclaration du tableau des tarifs
   'f1' => array()
   , 'f2' => array()
   , 'f3' => array()
);
while ($data = mysql_fetch_assoc($req)) { // alimentation du tableau
 // $tarifs['f1'][] = $data['f1'];
 // $tarifs['f2'][] => $data['f2'];
 // $tarifs['f3'][] => $data['f3'];
  
  $tarifs['f1'] == $data['f1'];
  $tarifs['f2'] == $data['f2'];
  $tarifs['f3'] == $data['f3'];
  
  
}
?> 				
           <p><i>Les nouveautés</i></p>
          <div class="contenu_gauche_panneau_gauche">
            <table>
                <tr>
                <td>Menu enfant</td><td><?php echo implode($tarifs['f1'], '<br />');?>€</td>
              </tr>
              <tr>
                <td>Formule midi</td><td><?php echo implode($tarifs['f2'], '<br />');?>€</td>
              </tr>
              <tr>
                <td>Supplément frites</td><td><?php echo implode($tarifs['f3'], '<br />');?>€</td>
              </tr>

Re: simplifier script PHP

par bob56@ » 27 août 2015, 13:26

OK, je vais travailler là dessus dès moment libre. Pris pour les jours à venir par mon rucher.

A bientôt !

Re: simplifier script PHP

par Ryle » 27 août 2015, 12:31

Si si, le tableau va te simplifier le travail, il s'alimente très facilement avec un while, et peut encore plus facilement être lu et affiché grâce à implode() :)
<?php (...)
$sql = "SELECT  menu_enfant, formule_midi, supplement_frites   FROM table_tarifs";  
// envoie requête 
$req = mysql_query($sql) or die('Erreur SQL!<br>'.$sql.'<br>'.mysql_error());
// on ferme la connexion à mysql 
mysql_close();  

$tarifs = array( // déclaration du tableau des tarifs
   'menu_enfant' => array()
   , 'formule_midi' => array()
   , 'supplement_frites' => array()
);
while ($data = mysql_fetch_assoc($req)) { // alimentation du tableau
  $tarifs['menu_enfant'][] = $data['menu_enfant'];
  $tarifs['formule_midi'][] => $data['formule_midi'];
  $tarifs['supplement_frites'][] => $data['supplement_frites'];
}
?> 				
           <p><i>Les nouveautés</i></p>
          <div class="contenu_gauche_panneau_gauche">
            <table>
                <tr>
                <td>Menu enfant</td><td><?php echo implode($tarifs['menu_enfant'], '<br />');?>€</td>
              </tr>
              <tr>
                <td>Formule midi</td><td><?php echo implode($tarifs['formule_midi'], '<br />');?>€</td>
              </tr>
              <tr>
                <td>Supplément frites</td><td><?php echo implode($tarifs['supplement_frites'], '<br />');?>€</td>
              </tr>
...

Re: simplifier script PHP

par bob56@ » 27 août 2015, 10:59

oui Ryle j'ai plusieurs lignes.
Je vais étudier la question car récupérer le résultat dans un tableau ne me simplifie pas le travail.
sinon je vais copier ma centaines de lignes pour punition
Merci à tous !

Re: simplifier script PHP

par Ryle » 27 août 2015, 10:16

Bonjour,

S'il n'y a qu'une seule ligne d'enregistrement retourné, il n'est pas nécessaire de faire plusieurs requête et des boucles :
<?php (...)
$req = mysql_query($sql) or die('Erreur SQL!<br>'.$sql.'<br>'.mysql_error());
// on ferme la connexion à mysql 
//mysql_close();  

if ($data = mysql_fetch_assoc($req)) { // s'il y a (au moins) un résultat
?> 				
           <p><i>Les nouveautés</i></p>
          <div class="contenu_gauche_panneau_gauche">
            <table>
                <tr>
                <td>Menu enfant</td><td><?php echo $data['menu_enfant'];?>€</td>
              </tr>
              <tr>
                <td>Formule midi</td><td><?php echo $data['formule_midi'];?>€</td>
              </tr>
              <tr>
                <td>Supplément frites</td><td><?php echo $data['supplement_frites'];?>€</td>
              </tr>
...
<? } //  fin du if ?>
Si par contre tu as plusieurs lignes d'enregistrement et plusieurs valeurs possible pour chaque bloc, Le mieux sera alors de ne faire qu'une seule requête, stocker le résultat de celle-ci dans un tableau php, puis d'exploiter les données contenues dans ce tableau sans avoir à solliciter ta base à nouveau :)

Re: simplifier script PHP

par Megadeth » 27 août 2015, 00:24

cela fonctionnera aussi bien avec une seule requete sql.
s'il n'y a qu'un seul résultat, alors les while sont superflus.
+1