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

Langage PHP Discussion :

Problème de compréhension.


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 1
    Points
    1
    Par défaut Problème de compréhension.
    Bonjour a tous,

    Je dois changer d'hebergeur un site internet.
    Jusque la pas de soucis changement de la base de données, des donnée de connection a la bdd ect. ( Le site n'as pas était réaliser par mes soins )

    Tous c'est bien passer mais j'ai un soucis:

    Cette portion de code fonctionne mal :

    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
     
     
    ]$formats = categories_produits::getFormats($categorie_produit_id);
     
    $quantites = categories_produits::getQuantites($categorie_produit_id);
     
    $objProduits =& new produits();
     
    $cases = array();
     
    if( (isset($formats) && count($formats) > 0) && (isset($quantites) && count($quantites) > 0) ){
    	$cases[0][0] = "<tr><th>&nbsp;</th>";
     
    	$ligne = 1;
     
    	$parite = "impaires";
     
    	foreach($quantites as $key=>$val){
    		$cases[$ligne][0] = "<tr><th class='th_lignes_" . $parite . "'>" . $val . "</th>";
     
    		foreach($formats as $key2=>$val2){
    			if($ligne < 2){
    				$cases[0][count($cases[0])] = "<th>" . $val2 . "</th>";
    			}
     
    			$produitsTemp = $objProduits->getall(array("categorie_produit_id"=>$categorie_produit_id, "quantite_id"=>$key, "format_id"=>$key2, "produit_en_ligne"=>1 ), 0, true );
    			if(isset($produitsTemp) && count($produitsTemp) > 0){
    				$produitTemp = $produitsTemp[0];
     
    				// $lien_positionne = $produitTemp->produit_positionne?" class='lien_positionne'":"";
    				if($produitTemp->produit_promotion){
    					$class_lien = $produitTemp->produit_positionne?" class='lien_promo_positionne'":" class='lien_promo'";
    					$cases[$ligne][count($cases[$ligne])] = "<td class='td_lignes_" . $parite . "'><form action='/panier/ajouter' name='ajouter_panier_" . $produitTemp->produit_id . "' method='post' ><input type='hidden' name='produit_id' value='" . $produitTemp->produit_id . "' /><input type='hidden' name='qte' value='1' /><a" . $class_lien . " href='javascript:document.ajouter_panier_" . $produitTemp->produit_id . ".submit();'><font style=\"text-decoration:line-through;\">" . $produitTemp->produit_prix_public_ht_affichage . " &euro;</font></a><br /><a" . $class_lien . " href='javascript:document.ajouter_panier_" . $produitTemp->produit_id . ".submit();'>" . $produitTemp->produit_prix_public_temp_ht_affichage . " &euro;</a></form></td>";
    				}
    				else{
    					$class_lien = $produitTemp->produit_positionne?" class='lien_positionne'":"";
    					$cases[$ligne][count($cases[$ligne])] = "<td class='td_lignes_" . $parite . "'><form action='/panier/ajouter' name='ajouter_panier_" . $produitTemp->produit_id . "' method='post' ><input type='hidden' name='produit_id' value='" . $produitTemp->produit_id . "' /><input type='hidden' name='qte' value='1' /><a" . $class_lien . " href='javascript:document.ajouter_panier_" . $produitTemp->produit_id . ".submit();'>". $produitTemp->produit_prix_public_ht_affichage . " &euro;</a></form></td>";
    				}
     
    			}
    			else{
    				$cases[$ligne][count($cases[$ligne])] = "<td class='td_lignes_" . $parite . "'>-</td>";
    			}
    		}
     
    		$cases[$ligne][count($cases[$ligne])-1] .= "</tr>";
     
    		$ligne++;
     
    		if($parite == "impaires")
    			$parite = "paires";
    		else{
    			$parite = "impaires";
    		}
     
    	}
     
    	$cases[0][count($cases[0])-1] .= "</tr>";
     
     
    	$chaineCases = "";
    	foreach($cases as $ligne){
    		foreach($ligne as $case){
    			$chaineCases .= $case;		
    		}
    	}
     
    	$t->setvar("cases", $chaineCases);
    }
    Lorsque je clique sur un produit au lieu de m'afficher le tableau, il me redirige vers la page de maintenance...
    Les fonctions associer :

    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
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
    	function getSatut($categorie_produit_id){
    		$sSQL = "SELECT categorie_produit_en_ligne FROM categories_produits WHERE categorie_produit_id = $categorie_produit_id";
    		$result =& fwkdb::array_query ("db", $sSQL, "");
     
    		return $result[0]["categorie_produit_en_ligne"];
     
    	}
     
     
    	function getFamilleID($categorie_produit_id){
    		$sSQL = "SELECT famille_produit_id FROM categories_produits WHERE categorie_produit_id = $categorie_produit_id";
    		$result =& fwkdb::array_query ("db", $sSQL, "");
     
    		return $result[0]["famille_produit_id"];
     
    	}
     
    	function getNiveau($categorie_produit_id){
    		$sSQL = "SELECT categorie_produit_niveau FROM categories_produits WHERE categorie_produit_id = $categorie_produit_id";
    		$result =& fwkdb::array_query ("db", $sSQL, "");
     
    		return $result[0]["categorie_produit_niveau"];
     
    	}
     
     
    	function getNom($categorie_produit_id){
    		$sSQL = "SELECT categorie_produit_nom FROM categories_produits WHERE categorie_produit_id = $categorie_produit_id";
    		$result =& fwkdb::array_query ("db", $sSQL, "");
     
    		return $result[0]["categorie_produit_nom"];
     
    	}
     
    	function getFormats($categorie_produit_id){
    		$sSQL = "SELECT DISTINCT format_id FROM produits WHERE produit_en_ligne = 1 AND categorie_produit_id = $categorie_produit_id";
    		$resultTemp =& fwkdb::array_query ("db", $sSQL, "");
     
    		$resultTemp2 = array();
     
    		for($i=0;$i<count($resultTemp);$i++){
    			$codes_formats =& new codes_formats($resultTemp[$i]['format_id']);
    			$resultTemp2[$i]["lib"] = $codes_formats->lib;
    			$resultTemp2[$i]["id"] = $codes_formats->ID;
    		}
     
    		$resultTemp2 = sort_by_key($resultTemp2, "lib", "ASC");
     
    		for($i=0;$i<count($resultTemp2);$i++){
    			$codes_formats =& new codes_formats($resultTemp2[$i]['id']);
    			$resultTemp[$i]["format_id"] = $codes_formats->ID;
    		}
     
    		$result = array();
     
    		for($i=0;$i<count($resultTemp);$i++){
    			$codes_formats =& new codes_formats($resultTemp[$i]['format_id']);
    			$result[$codes_formats->ID] = $codes_formats->lib;
    		}
     
    		return $result;
    	}
     
    	function getCouleurs($categorie_produit_id){
    		include_once( 'classes/kernel/fwkdb.php' );
    		$db =& fwkDB::instance("db");
     
    		$sSQL = "SELECT couleur_id FROM categories_produits WHERE categorie_produit_id = $categorie_produit_id";
     
    		$result =& fwkdb::array_query ("db", $sSQL, "");
     
    		$codes_couleurs =& new codes_couleurs($result[0]['couleur_id']);
     
    		return $codes_couleurs->lib;
     
    	}
     
    	function getImpression($categorie_produit_id){
    		include_once( 'classes/kernel/fwkdb.php' );
    		$db =& fwkDB::instance("db");
     
    		$sSQL = "SELECT impression_id FROM categories_produits WHERE categorie_produit_id = $categorie_produit_id";
     
    		$result =& fwkdb::array_query ("db", $sSQL, "");
     
    		$codes_impressions =& new codes_impressions($result[0]['impression_id']);
     
    		return $codes_impressions->lib;
     
    	}
     
     
    	function getQuantites($categorie_produit_id){
    		$sSQL = "SELECT DISTINCT quantite_id FROM produits WHERE produit_en_ligne=1 AND categorie_produit_id = $categorie_produit_id";
    		$resultTemp =& fwkdb::array_query ("db", $sSQL, "");
     
    		$resultTemp2 = array();
     
    		for($i=0;$i<count($resultTemp);$i++){
    			$codes_quantites =& new codes_quantites($resultTemp[$i]['quantite_id']);
    			$resultTemp2[$i]["lib"] = $codes_quantites->lib;
    			$resultTemp2[$i]["id"] = $codes_quantites->ID;
    		}
     
    		$resultTemp2 = sort_by_key($resultTemp2, "lib", "ASC");
     
    		for($i=0;$i<count($resultTemp2);$i++){
    			$codes_quantites =& new codes_quantites($resultTemp2[$i]['id']);
    			$resultTemp[$i]["quantite_id"] = $codes_quantites->ID;
    		}
     
     
    		$result = array();
     
    		for($i=0;$i<count($resultTemp);$i++){
    			$codes_quantites =& new codes_quantites($resultTemp[$i]['quantite_id']);
    			$result[$codes_quantites->ID] = $codes_quantites->lib;
    		}
     
     
    		return $result;
    	}

    J'espère avoir était assez clair et avoir posté dans la bonne section, si il vous manque des élements pour m'aider je suis a votre disposition.

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    c'est peut-être dû à un problème de changement de mécanisme des références entre les versions 4 et 5 de PHP mais c'est compliqué à debugger.
    Dans un premier temps peux-tu nous donner la source HTML générée car le problème vient peut-être de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    href='javascript:document.ajouter_panier_" . $produitTemp->produit_id . ".submit();'

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je cherche ou sont placer les script java et je poste sa .
    Par contre j'ai oublier de preciser que je suis passer d'un serveur sous windows vers un hebergement chez phpnet sous linux.

    Il y a des problème courant de compatibilité ?

  4. #4
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    A priori, c'est surtout entre les différentes versions/config de php.

    Par contre, quand je demandais la source, je parlais de consulter ta page, puis de faire "afficher source" dans ton navigateur.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Je vous l'ai envoyé par MP

  6. #6
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Ok voici donc la sortie du code posté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <tbody><tr><th width="20" height="20"></th></tr>
    </tbody>
    Je comprends d'ailleurs pas d'où vient width="20" height="20", le code a été modifié entre temps ?

    L'une des variables doit être vide, que donne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $quantites = categories_produits::getQuantites($categorie_produit_id);
    var_dump($quantites);
    Est-ce que le tableau est déjà vide à ce niveau-là ?

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Pour le début de tableau j'allais refaire le code sans utiliser les fonctions deja faite et refaire les miennes c'est pour cela ^^.

    var_dump($quantites); retourne : array(0) { }
    La fonction :

    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
    	function getQuantites($categorie_produit_id){
    		$sSQL = "SELECT DISTINCT quantite_id FROM produits WHERE produit_en_ligne=1 AND categorie_produit_id = $categorie_produit_id";
    		$resultTemp =& fwkdb::array_query ("db", $sSQL, "");
     
    		$resultTemp2 = array();
     
    		for($i=0;$i<count($resultTemp);$i++){
    			$codes_quantites =& new codes_quantites($resultTemp[$i]['quantite_id']);
    			$resultTemp2[$i]["lib"] = $codes_quantites->lib;
    			$resultTemp2[$i]["id"] = $codes_quantites->ID;
    		}
     
    		$resultTemp2 = sort_by_key($resultTemp2, "lib", "ASC");
     
    		for($i=0;$i<count($resultTemp2);$i++){
    			$codes_quantites =& new codes_quantites($resultTemp2[$i]['id']);
    			$resultTemp[$i]["quantite_id"] = $codes_quantites->ID;
    		}
     
     
    		$result = array();
     
    		for($i=0;$i<count($resultTemp);$i++){
    			$codes_quantites =& new codes_quantites($resultTemp[$i]['quantite_id']);
    			$result[$codes_quantites->ID] = $codes_quantites->lib;
    		}
     
     
    		return $result;
    	}
    Ps : PHP Version 5.3.3-7+squeeze13 sur le nouveau serveur

  8. #8
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Il te reste plus qu'à tester toutes tes variables avec var_dump(), $resultTemp, etc. ^^
    Le problème vient peut-être de l'assignation par référence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultTemp =& fwkdb::array_query ("db", $sSQL, "");
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $resultTemp = fwkdb::array_query ("db", $sSQL, "");
    T'étais sous < 5 sur l'hébergement précédent ?

    Je pense à un autre truc :
    "db" c'est le nom de ta BDD ? car t'as peut-être simplement une erreur de connexion finalement.

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    La connection se fait bien, les variable était bonne :/ il devait surement y avoir un soucis dans une fonction qui appellai une autre fonction ect.. ect.. donc j'ai abandonner l'idée de trouver cette erreur a perdre du temps ... est j'ai retaper le code ^^

    Et j'ai un soucis dans ma table j'ai des champ de type varchar(255) losque je met une ODER BY 'Champ' DESC il me met une erreur. Le order by ne fonctionne que sur les nombres ? ( j'ai toujours eut l'habitude de order sur les id donc chiffre et nombre )

    Je m'explique les entré de ma table : "1000 ex." "2000 ex." ect..

    La il les classe par id mais la personne ayant fait le code a fait sa un peu a l'arrache et par exemple "50 ex." a pour id "10" et "2000 ex." a pour id "1" donc le tableau est un peut désorganiser.

    Quelqu'un aurait une solution ?

  10. #10
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Peut-être à cause des guillemets ?
    ODER BY 'Champ'
    =>
    ODER BY Champ

    Pour ton problème de base, c'est dommage car il aurait peut être suffit de virer la plupart des & mais bon un peu dur à debugger

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    J'ai une erreur même sans les guillement :

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in


    ma requete : SELECT format_libelle FROM formats ORDER BY format_libelle ASC WHERE format_id = $format_id";

  12. #12
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    L'ORDER BY doit être placé après le WHERE.

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    oui, c'était comem cela avant j'ai eu un doute donc je l'ai placé la mais toujours le même resultat erreur -__-


    edit : plus d'erreur (Mauvais nom de table -____-)

    Par contre sa ne les classe toujours pas dans le bonne ordre :/

    500 ex.
    1000 ex.
    2000 ex.
    250 ex.
    3000 ex.
    4000 ex.
    5000 ex.
    10000 ex.
    20000 ex.
    30000 ex. -
    40000 ex

    au lieu de

    250 ex
    500 ex
    1000 ex
    2000 ex
    3000 ex
    4000 ex
    5000 ex
    10000 ex
    20000 ex
    30000 ex.
    40000 ex.

  14. #14
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Comme je vois que tu utilises les mysql_xxx essaie d'afficher les erreurs potentielles :

    mysql_query($sql) or die(mysql_error());

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Aucune erreur :/


    EDIT :

    Le soucis venait du fait que je fesait un while depuis un requete SQL et que j'essayer de classer 1 seule donnée.

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Je revien encore vers vous car je vien de passer une redirection sur mon serveur et la :

    Bad Request

    Your browser sent a request that this server could not understand.

    alors que sans passer par la redirection cela fonctionne ou dois-je chercher ?

Discussions similaires

  1. [Débutant] problème de compréhension
    Par Sylvester dans le forum Général Java
    Réponses: 18
    Dernier message: 21/07/2005, 09h16
  2. Réponses: 5
    Dernier message: 11/04/2005, 10h21
  3. [C#] Problème de compréhension de System.Convert ET Provider
    Par papouAlain dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/11/2004, 21h52
  4. onclipevent (problème de compréhension)
    Par stephane eyskens dans le forum Flash
    Réponses: 8
    Dernier message: 24/09/2003, 15h09
  5. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 22h07

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