Demande de laide en php de type offset

Signaler
-
Messages postés
16109
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
23 juillet 2021
-
Bonjour, mon nom est KINTO koffi,jadore votre communaué
voici mon code je suis un debutant. php m'affiche l'erreur suivant:Notice: Undefined offset: 0 in D:\wamp\www\commerce\panier.php on line 12,veuillez m'aidez merci.cette erreur est survenue lorsque je stock les information dans un tableau de type array().

dans Addcaddi.php jai ce code
<?php
session_start();
if(!isset($_SESSION['panier'])) {
    $panier=$_SESSION['panier'];
  }  else {
     $panier=array() ;
     
  }
$index=count($panier);
$panier['$index']['code']=$_POST['code'];
$panier['$index']['desi']=$_POST['desi'];
$panier['$index']['prix']=$_POST['prix'];
$panier['$index']['quantite']=$_POST['quantite'];
$_SESSION['panier']=$panier;
header('location:index.php?panier=1');


puis dans panier.php j'ai ce code dans panier.php

<?php
session_start();
$panier=$_SESSION['panier'];
?>
<table border="1">
    <tr>
        <th>Designation</th> <th>Prix</th> <th>Quantité</th>
    </tr>
    <?php 
    $total=0;
    for ($i=0;$i<count($panier);$i++){
      $total=$total+$panier[$i]['prix']*$panier[$i]['quantite'];
       ?>
    <tr>
        
         <td><?php echo ($panier[$i]['code']);?></td>
        <td><?php echo ($panier[$i]['designation']);?></td>  
         <td><?php echo ($panier[$i]['prix']);?></td>  
          <td><?php echo ($panier[$i]['quantite']);?></td>  
    </tr>
    <?php }?>
    <tr>
        <td colspan="3">total</td>
        <td><?php echo$total;?></td>
    </tr>
</table>


Edité pour ajout des balises de code.

3 réponses

Messages postés
33124
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juillet 2021
351
Bonjour,

1 - Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
=> J'édite ton message pour les mettre...

2 - Merci de modifier ton titre... car là.. il ne reflète en rien le souci rencontré....

3 - Merci de nous dire exactement quel est ton souci.... car là... tu nous donnes du code... mais tu ne nous dis pas sur quoi tu bloques !


Pour rappel :

Merci de garder à l'esprit que CodeS-SourceS est une communauté d'entraide dans
laquelle toutes les réponses sur le forum sont assurées par des bénévoles
qui donnent de leur temps libre pour aider à résoudre les problèmes.

A noter également que nous ne faisons pas dans le "tout cuit"
et ne sommes pas là pour remplacer votre moteur de recherches...
... Soit tu trouves ton bonheur dans la partie source du site, soit à l'aide de ton moteur de recherche favori.

Ici, nous aidons volontiers sur des sujets techniques précis.

Je t'invite à lire avec attention le contenu du lien suivant :
charte-de-commentcamarche-net : conseils-d-ecriture

Ainsi que celui concernant l'utilisation de la coloration syntaxique :
Utilisation des Balises de code

Merci donc de reformuler ta demande en respectant ces quelques points.

Quelques points essentiels à retenir :
- On ne pose qu' UNE question par discussion
- Le titre de la question doit refléter le souci rencontré ( Help.. SOS.. Urgent.. n'apporte aucune information utile !)
- Lorsque votre question est résolue.. merci de clore le sujet (lien Marquer comme résolu se trouvant sous le titre de votre question).
- Une question obtiendra de meilleurs réponses si elle est correctement rédigée, que les explications sont clairs et qu'éventuellement vous postez le code qui pose problème.
- Si vous avez un message d'erreur..... MARQUEZ LE (dans son intégralité).

Merci.


Messages postés
33124
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juillet 2021
351
Bon... tu as édité ton message...
L'erreur est donc :

php m'affiche l'erreur suivant:Notice: Undefined offset: 0 in D:\wamp\www\commerce\panier.php on line 12
,veuillez m'aidez merci.cette erreur est survenue lorsque je stock les information dans un tableau de type array().

Donc ton souci se trouve sur la ligne 12 du fichier panier.php
....
   $total=$total+$panier[$i]['prix']*$panier[$i]['quantite'];

le message t'indique que tu as un problème avec l'offset 0 ... qui est indefini...
C'est à dire... que lorsque $i=0 ... tes variables n'existent pas....

Donc... première chose que tu peux faire (le temps des tests) c'est de faire un PRINT de ta variable pour savoir ce qu'elle contient :
<?php
session_start();

// Utilise ISSET pour t'assurer que ta variable existe
//$panier=$_SESSION['panier'];
$panier=isset($_SESSION['panier'])?$_SESSION['panier']:'error';

// Affichage de la variable le temps des tests :
echo "<br> La variable PANIER contient :<br>";
print_r($panier);


?>



Tu peux aussi, pour éviter les problèmes ajouter un test au moment du calcul pour ne tenir compe que des variables qui "existent" :
<?php 
    $total=0;
    for ($i=0;$i<count($panier);$i++){
     $prix = isset($panier[$i]['prix'])?$panier[$i]['prix']:0;
     $qte = isset($panier[$i]['quantite'])?$panier[$i]['quantite']:0;
   
   //NB :  Pour le total .. la ligne :  $total=$total+$prix*$qte;
   // peut s'écrire plus simplement :
    $total += $prix*$qte;    


?>



Messages postés
6
Date d'inscription
lundi 15 septembre 2014
Statut
Membre
Dernière intervention
15 septembre 2014

A la ligne 4 du code c'est a dire print_r($panier); affiche 1 mais au nivau tu tableau rien ne s'affiche. merci


voici le code que j'ai tentè suite a votre correction,dans panier.php

<?php
session_start();
$panier= isset($_SESSION['panier']);
echo 'la variable panier contient ';
print_r($panier);
?>
<table border="1">
    <tr>
        <th>Désignation</th> <th>Prix</th> <th>Quantité</th>
    </tr>
    <?php 
    $total=0;
    for ($i=0;$i<count($panier);$i++){
      $prix = isset($panier[$i]['prix'])?$panier[$i]['prix']:0;
     $qte = isset($panier[$i]['quantite'])?$panier[$i]['quantite']:0;
      //$total=$total+$panier[$i]['prix']*$panier[$i]['quantite'];
      $total += $prix*$qte;
       ?>
    <tr>
        
         <td><?php echo($panier[$i]['code']);?></td>
        <td><?php  echo($panier[$i]['designation']);?></td>  
         <td><?php echo($panier[$i]['prix']);?></td>  
          <td><?php echo($panier[$i]['quantite']);?></td>  
    </tr>
     <?php }?>
    <tr>
        <td colspan="3">total</td>
        <td><?php echo$total;?></td>
    </tr>
</table>
Messages postés
33124
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juillet 2021
351
Soit tu utilises les balises de code pour poster ton code sur le forum. ..soit je ne repond plus et je ferme ta question !!!
Messages postés
33124
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juillet 2021
351
De plus... regarde ce que j'ai écris comme code...et compare le à celui que tu as écris !!
Tu verras qu'il t'en manque une partie. ..
Messages postés
6
Date d'inscription
lundi 15 septembre 2014
Statut
Membre
Dernière intervention
15 septembre 2014

excusez moi je suis le processus mais jen'arrive pas a reussi sa .s'il vous plait donnez moi le un peu temps ca va aller que Dieu appaise votre coeur .
Messages postés
16109
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
23 juillet 2021
554
Bonjour, message modifié par l'ajout des balises de code.
Voir ici comment bien utiliser la coloration syntaxique.
Messages postés
6
Date d'inscription
lundi 15 septembre 2014
Statut
Membre
Dernière intervention
15 septembre 2014

ok excusez le probléme n'est pas resolue il se pose encore le problème de offset a la ligne 22 mais prinr(panier) affiche bien les valeurs: voici l'erreur Notice: Undefined offset: 0 in D:\wamp\www\commerce\panier.php on line 22 .voici la où se situe l'erreur.
 <td><?php echo($panier[$i]['code']);?></td>
Messages postés
33124
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juillet 2021
351
Et bien. ..tu suis la même logique que pour l'erreur précédente et tu devrais t'en sortir je pense. ..