2 fonctions MySQL resultat 0

Eléphanteau du PHP | 13 Messages

02 août 2005, 03:04

Bonjour voici mon code
function categorie(){
	require_once('Connections/bdaop.php');
	mysql_select_db($database_bdaop, $bdaop);
	$query_categories = "SELECT * FROM activite ORDER BY activite ASC";
	$categories = mysql_query($query_categories, $bdaop) or die(mysql_error());
	$row_categories = mysql_fetch_assoc($categories);
	$totalRows_categories = mysql_num_rows($categories);
	$cat = "CATEGORIES<br>";
	while($row_categories = mysql_fetch_assoc($categories)){
		foreach($row_categories as $value){
			$cat .= "<option>$value</option>";
		}
	}
	return $cat;
};

function sscate($sscat){
		if(isset($sscat)){
		require_once('Connections/bdaop.php');
		mysql_select_db($database_bdaop, $bdaop);
		
		$query_sscat = "SELECT ssactivite FROM ss_activite WHERE activite LIKE CONVERT( _utf8 '$sscat' 
USING latin1) ORDER BY ssactivite ASC";
		$scat = mysql_query($query_sscat, $bdaop) or die(mysql_error());
		$row_sscat = mysql_fetch_assoc($ssat);
		$totalRows_sscat = mysql_num_rows($scat);
		
		$souscat = "<option value=\"\">--Sous-Catégories--</option>";
		do{
			foreach($row_sscat as $valeur){
				$souscat .= "<option id=\"$valeur\" value=\"$valeur\">$valeur</option>";
			}
		} while($row_sscat = mysql_fetch_assoc($scat));
	} else {
		$souscat = "<option value=\"\" selected >--Sous-Catégories--</option>";
	}
	return $souscat;
};
$a = categorie();
$b = sscate('alimentation');
printf("les categories %s et les sous cat de alim %s",$a, $b);
j'explique le probleme, le printf n'inscrit rien sauf si je supprime la premiere fonction et il m'affichera le resultat pour la seconde ou bien si je supprime la seconde il m'affichera le resultat de la premiere, apparemment les 2 ensemble me donnent une page blanche !! je ne comprends pas.
Je précise juste que le code est bon, séparément c'est 2 fonctions fonctionnent parfaitement
Quelqu'un pourrai-til m'éclairer ?
Merci

Mammouth du PHP | 19672 Messages

02 août 2005, 08:39

Je n'ai rien trouvé de suspect mais je propose quelques petites modifications de détail :
<?php
function categorie()
{
    require_once('Connections/bdaop.php');
    mysql_select_db($database_bdaop, $bdaop);
    $query_categories = "SELECT * FROM activite ORDER BY activite ASC";
    $categories = mysql_query($query_categories, $bdaop) or die(mysql_error());
    $row_categories = mysql_fetch_assoc($categories);
    $totalRows_categories = mysql_num_rows($categories);
    $cat = "CATEGORIES<br>";
    while($row_categories = mysql_fetch_assoc($categories))
    {
        foreach($row_categories as $value)
        {
            $cat .= "<option>". $value ."</option>";
        }
    }
    return $cat;
}

function sscate($sscat)
{
    if(isset($sscat))
    {
        require_once('Connections/bdaop.php');
        mysql_select_db($database_bdaop, $bdaop);

        $query_sscat = "SELECT ssactivite FROM ss_activite WHERE activite LIKE CONVERT( _utf8 '". $sscat ."' USING latin1) ORDER BY ssactivite ASC";
        $scat = mysql_query($query_sscat, $bdaop) or die(mysql_error());
        $row_sscat = mysql_fetch_assoc($ssat);
        $totalRows_sscat = mysql_num_rows($scat);

        $souscat = "<optgroup label=\"--Sous-Catégories--\">";
        while($row_sscat = mysql_fetch_assoc($scat))
        {
            foreach($row_sscat as $valeur)
            {
                $souscat .= "<option id=\"". $valeur ."\" value=\"". $valeur ."\">". $valeur ."</option>";
            }
        }
    }
    else
    {
        $souscat = "<optgroup label=\"--Sous-Catégories--\" selected>";
    }
    return $souscat;
}

/* Tests de vérification : */
$a = categorie();
$b = sscate('alimentation');
print("les categories ". $a ." et les sous cat de alim ". $b);
?>
Essaye ça et reviens nous dire ce que tu obtiens...
Note que j'ai mis entre autres suggestions le remplacement de l'option avec un titre de sous-catégorie par la balise optgroup qui est plus appropriée.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

02 août 2005, 09:43

Modération : question avec des requêtes ? (bon ok, c'est le PHP qui merd****** mais, on peut le mettre dans "Base de données", non ?

edit : bon ok , mais je le re-déplace pas :)
Modifié en dernier par mere-teresa le 02 août 2005, 09:48, modifié 1 fois.

Mammouth du PHP | 19672 Messages

02 août 2005, 09:45

Non non mere-teresa, à priori un problème PHP, mais que je n'ai pas encore correctement identifié.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 13 Messages

02 août 2005, 11:29

Bonjour Cyrano et Bonjour Mere-Teresa,

Ton code ne fonctionne toujours pas, c'est vraiment étrange, je ne vois pas comment la présence de 2 fonctions peut empecher l'une ou l'autre de fonctionner, je vais essayer de mettre d'autres fonctions en enlevant une des 2.
Je viens de voir que le site est a présent hébergé en php 5.03 est-ce que ca peut venir de la ?

Eléphanteau du PHP | 13 Messages

02 août 2005, 12:02

Bon j'ai fais le necessaire pour repasser sur un php4 histoire de voir si le souci vient de la mais le temps de propagation des dns ne me permettra pas de savoir cela avant 24 ou 48h je vais faire d'autres essais pour essayer de comprendre

ViPHP
ViPHP | 1380 Messages

02 août 2005, 15:29

Il s'agit effectivement d'un problème php mais qui n'a rien à voir avec la version. Tu perds ton temps à remonter une ancienne version de php.

Le problème se situe probablement au niveau du require_once().

Si il est invoqué dans la première fonction, il ne le sera plus dans la deuxième. Tu perds donc tes paramètres de connexion au serveur MySQL.

Active tes error_reporting - error_reporting(E_ALL); - et tu devrais avoir un:
mysql_select_db(): supplied argument is not a valid MySQL-Link

Solution: dans chacune de tes fonctions remplace require_once par include. Ca devrait passer.

Edit: Vérifie également ta ligne
        $row_sscat = mysql_fetch_assoc($ssat);
d'où vient $ssat ???
ripat

Eléphanteau du PHP | 13 Messages

02 août 2005, 18:45

Effectivement c'était le
require_once
qui posait problème, j'ai remplacé par
require
et depuis ca fonctionne, c'était la premiere fois que j'utilisais le "once" et je crois qu'on ne m'y reprendra plus !! en tout cas merci pour votre aide je vais maintenant me dépecher de supprimer les modif DNS et resté en PHP5 :wink:

Mammouth du PHP | 19672 Messages

02 août 2005, 19:21

un petit [Résolu] peut-être :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: