IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème variable FOR ou Array. [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 9
    Points
    9
    Par défaut Problème variable FOR ou Array.
    Bonjour,

    J'utilise un CMS pour mon serveur, et je viens de trouvé une faute PHP assez gênante que je n'arrive pas encore à comprendre, c'est pour ceci que je viens demander votre aide.
    Je vais essayé de vous donné les éléments qui faut pour que vous puissiez m'aider:

    ERREUR:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Tout en haut: Warning: Cannot use a scalar value as an array in C:\wamp\www\pages\acheter.php on line 15
    La barre de sélection du personnage: <b>Notice</b>: Trying to get property of non-object in <b>C:\wamp\www\pages\acheter.php</b> on line <b>57</b>
    PAGE source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    <div class="titleSite"><b>₪</b> Boutique - Choix du personnage !</div>
     
    <center>
    <div style="font-size: 13px">
     
    <?php
    //$module = mysql_fetch_array(mysql_query("SELECT Valeur FROM status_modules WHERE Module='boutique'"));
    if (true)
     
    	{
     
    	// Créations des objets 'Perso'
    	$repListePerso = mysql_query("SELECT guid FROM personnages WHERE account = '".$compte->guid."' ORDER BY level DESC");
    	for ($i=0; $donListePerso = mysql_fetch_array($repListePerso); $i++)
    LIGNE 15	$perso[$i] = new Perso($donListePerso[0]);
    	$nbrPerso = mysql_num_rows($repListePerso);
     
    if (isset($_GET['objet']))
    {
    	$error = FALSE;
    	if (!$connect) $error = 1; // test si connecté
    	if (!$error) // Test si l'objet existe
    	{
    		$rep = mysql_fetch_array(mysql_query("SELECT ID FROM boutique_objets WHERE ID='".$_GET['objet']."'"));
    		if (!isset($rep[0])) $error = 2;
    	}
    	if (!$error) // test s'il a assez de points
    	{
    		$item = new Item($rep[0]);
    		if ($compte->points < $item->cout) $error = 3;
    	}
     
    	if (!$error) // Test si un personnage est séléctionné
    	{
    		if (isset($_POST['persoSelect']))
    		{
    			$error = 99;
    			$result = $item->buy($perso[$_POST['persoSelect']]->guid);
    		}
    	}
     
    	if (!$error)
    	{
    		?>
    		Vous êtes sur le point d'acheter l'item <b><?php echo $item->name ?></b> pour un coup de <b><?php echo $item->cout ?></b> points<br><br>
    		<span style="color: rgb(255, 0, 0)">ATTENTION : Vous devez impérativement avoir votre personnage connecté au jeu avant de valider la commande.</span><br><br>
    		Aucun remboursement ne pourra avoir lieu en cas de perte si vous ne respectez pas cette indication.<br>
    		Veuillez vérifier maintenant que vous n'avez pas été déconnecté du jeu avant de faire l'achat.<br><br>
    		Pour confirmer, selectionnez le personnage <b>connecté</b> sur lequel vous voulez recevoir votre achat :<br><br>
     
    		<?php if ($nbrPerso > 0) { ?>
    		<form method="POST" action="">
    		<select style="width:200px" class="input" name="persoSelect" class="champLong">
    		<?php
    		for ($i=0; $i < $nbrPerso; $i++)
    		{
    LIGNE 57			?><option value="<?php echo $i; ?>"><?php echo $perso[$i]->name; ?></option><?php
    		}
    		?>
    		</select>
    		<input type="hidden" name="obj" value="<?php echo $_GET['objet']; ?>">
    		<input class="input" type="submit" value="Confirmer">
    		</form>
    		<br />
    		<?php } else echo "Aucun personnage sur ce compte";
    	}
     
    	if ($error)
    	{
    		switch ($error)
    		{
    			case 1: echo "Erreur : Vous devez être connecté"; break;
    			case 2: echo "Erreur : Objet introuvable"; break;
    			case 3: echo "Erreur : Pas assez de points"; break;
    			case 6: echo "Trop de commandes sont en cours, veuillez réésayer plus tard."; break;
    			case 99:
     
    			switch ($result)
    			{
    				case 1: echo '<span style="color:green">Transaction effectuée avec succés, vous devrez recevoir votre commande dans les 10 minutes qui suivent...</span><br><br>
    				<b><span style="color: rgb(255, 0, 0)">IMPORTANT : Afin de valider totalement votre commande,<br>
    				il est impératif d\'utiliser la commande ".SAVE" sur le canal défaut afin de sauvegarder votre achat après l\'avoir reçus.</span><br><br></b>
    				Les pertes suites au reboots sont rarements rendus faute de preuves, donc merci de suivre notre conseil.<br><br>
    				<b><a href="index.php?p=boutique">Retourner à la boutique</a></b><br>
    				'; break;
    				case 2: echo "Erreurr : Vous n'avez pas assez de points"; break;
    				case 3: echo "Erreur : Emulateur non connecté"; break;
    				case 4: echo "Erreur : Connexion à la reception des commandes échouée."; break;
    				case 5: echo "Erreur : Atribution de personnage échouée"; break;
    			}
     
    			break;
    		}
    	}
     
    }
    else echo "Aucun objet séléctionné";
    ?>
     
    </div>
    </center>
     
    <?php
    } else echo "<center>Boutique en maintenance</center>";
    ?>
     
    <br />
    Voila, je vous ai fourni les ligne où j'ai trouvé l'erreur ainsi que la page PHP, j'espère que vous pourriez m'aider, si vous avez besoin d'autre chose faite le moi savoir, je suis prêt à tout pour résoudre cette erreur. MERCI ^^

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut


    Ce n'est pas la 1ère fois que je vois ça, et jusqu'à lors j'ai jamais compris l'utilité d'une telle condition/alternative.
    Dire : SI Vrai ALORS ... traitement ...
    Vrai n'est il pas toujours VRAI ?


    Mise à part ce détail, as tu fais un peu de débogage comme par exemple vérifier si la requête retourne quelque chose ?
    J'ai plutôt l'impression que non, du coup $donListePerso ne contiendrait rien, donc pas la valeur attendue par Perso.

    Vu que $perso ne serait pas créé, ça expliquerait plus bas ligne 57 que $perso ne serait pas un Objet.


    As tu essayé de faire une boucle que je qualifierais de plus conventionnelle sur les résultats de MySQL.
    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $i = 0;
    while ($donListePerso = mysql_fetch_array($repListePerso)) {
        $perso[$i] = new Perso($donListePerso['guid']);
        $i++;
    }

    [edit]
    Tiens donc, une nouveauté on dirait. Dans les BBCode il y a les N° de ligne.
    Très pratique ça.
    [/edit]

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Salut,

    Comme je suis débutant, je n'arriverais pas tout seule, j'utilise un CMS que je modifie à mon niveau mais ce problème je n'arrive pas le comprendre, je sais que je devrais prendre des cours mais le temps presse et je dois le mettre enligne aujourd'hui ^^.

    Si vous pouvez m’expliquer votre méthode je l'appliquerais et je vous dirais si sa marche.

    MERCI !

    [EDIT] J'ai tester ton code, sa ne donne rien, plutot un parse error ^^ [/EDIT]
    [EDIT] JE comprends uniquement que le code demande à la base de donnée et fait une liste des personnage qui commence du plus haut niveau. [/EDIT]

  4. #4
    Membre habitué Avatar de omar24
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 159
    Points : 172
    Points
    172
    Par défaut
    Salut;

    Pour la deuxième erreur c'est tout à fait naturel, parce que la première erreur empêche de créer un objet que tu utilises dans le ligne 57.
    pour la première erreur la variable $perso n'est pas déclarée comme array!!

    bonne chance.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par omar24 Voir le message
    pour la première erreur la variable $perso n'est pas déclarée comme array!!

    bonne chance.
    Comment faire en sorte qu'elle le soit ?

    [EDIT] J'accepte de l'aide via TEAM-VIEWER [/EDIT]

  6. #6
    Membre habitué Avatar de omar24
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 159
    Points : 172
    Points
    172
    Par défaut
    il faut ecrire tout simplement avant la boucle
    $perso = array();

  7. #7
    Membre habitué Avatar de omar24
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 159
    Points : 172
    Points
    172
    Par défaut
    Aussi une autre chose essaye de faire comme t'a dit RunCodePhp d'utilser la boucle while qui est la plus adaptée.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    TROP FORT Omar un grand merci du fonds du coeur.

    Si tu été là prêt de moi je t'aurais enlacer sa fait déjà 2 jours que je cherche une solution.


    +1 et encore merci !!!!!!

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Je remplace Whil par for?

  10. #10
    Membre habitué Avatar de omar24
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 159
    Points : 172
    Points
    172
    Par défaut
    Si le code marche ce n'est pas la peine mais à titre d'information presque tous les développeurs utilisent while au lieu de for quand ils veulent parcourir des informations provenant d'une base de données c'est très pratique.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    D'accord merci Omar, je note ceci. Encore un grand merci pour avoir résolu mon problème !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. boucle for et variable dans un array
    Par ledisciple dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/05/2011, 09h07
  2. Problème variable dans array
    Par mbsss dans le forum Langage
    Réponses: 2
    Dernier message: 23/04/2010, 17h03
  3. Réponses: 6
    Dernier message: 19/10/2009, 13h10
  4. [RegEx] problème variable au sein d'une boucle for
    Par mussara dans le forum Langage
    Réponses: 4
    Dernier message: 22/06/2006, 15h26
  5. problème variable extern
    Par HeKaz dans le forum C
    Réponses: 14
    Dernier message: 08/01/2003, 02h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo