8797 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je me lance dans l'univers du php ! Mais voila que deja des centaines de quéstions me viennent à l'esprit ! Je cherche beaucoup et j'arrive à les résoudres en générale mais la..Vraiment pas moyen !

Voici mon probléme :

<?
mysql_connect("localhost", "root", ""); // Connection de la base de données
mysql_select_db("styblue"); // Selection de la base de données

// Page Voyages
if ($_GET['id'] == "voyages")
{
$reponse = mysql_query("SELECT * FROM dossiers WHERE id='voyages'");
while ($voyages = mysql_fetch_array($reponse) )
{ 
echo $voyages['content'];
}
}

// Page Italie
if ($_GET['id'] == "italie")
{
$reponse = mysql_query("SELECT * FROM dossiers WHERE id='italie'");
while ($italie = mysql_fetch_array($reponse) )
{ 
echo $italie['content'];
}
}

mysql_close(); // Deconnection de mysql
?>


Voila donc quand mes lients pointe sur dossiers.php?id=italie ou dossiers.php?id=voyages, la page s'affiche car j'ai mis mon contenue sous mysql tout est nickel. En revanche, si la page pointe sur dossiers.php sans rien de plus...Il m'affiche une erreur de ce type :

Notice: Undefined index: id in e:\site web\site web perso\styblue\dossiers.php on line 17

Notice: Undefined index: id in e:\site web\site web perso\styblue\dossiers.php on line 27


Donc je cherche une solution pour que quand le liens pointe sur
dossiers.php qu'il m'affiche un contenue puis quand il pointe sur
dossiers.php?id=voyages il affiche ma page voyages et
dossiers.php?id=italie il m'affiche ma page italie

Et separement bien sur, si quelqu'un sait comment faire et qu'il veut bien partager sa façon de faire ! Je suis preneur !!

Merci d'avance à tous Smiley cligne

Amicalement

Styblue
Modifié par Styblue (14 Aug 2005 - 15:39)
Administrateur
Hello,

A tout hasard, je rappelle que ce forum n'est pas vraiment dédié au PHP (ou alors pour ses rapports avec les Standards et dans ton cas je ne vois pas vraiment le rapport) Smiley cligne
Modifié par Raphael (13 Aug 2005 - 23:30)
Ah..désolé je peux pas poster mon probléme sur ce forum alors ?? ah désolé !! Je savais pas désolé ! Si un admin passe viré le, je vais essayer de trouver
Administrateur
Styblue a écrit :
Si un admin passe viré le
Bah je ne suis pas loin en effet Smiley smile

Tu as le droit de poster ce sujet ici, mais il ne faut pas t'attendre ou espérer beaucoup de réponses vu que le forum n'est pas spécialisé dans ce domaine. Cela n'empêche pas que certains experts pourront te dépanner quand même.
Salut,

Enfait tu te compliques beaucoup trop la tâche en faisant comme ça, voici une méthode qui fait exactement la même chose et en beaucoup plus cours.
J'ai mis des commentaires pour bien expliquer le fonctionnement.
<?
// Connection de la base de données
mysql_connect("localhost", "root", ""); 
// Selection de la base de données
mysql_select_db("styblue"); 
//Envoie de lq requête au serveur mysql.
//On vérifie également si la requête fonctionne, si c'est pas le cas on affiche l'erreur retournée par mysql (or die(mysql_error());
$requete = mysql_query('SELECT * FROM dossiers WHERE id="'.$_GET['id'].'"') or die(mysql_error());
//On test s'il exists des dossiers pour l'id choisi.
if(mysql_num_rows($requete)=='0'){
//S'il y en a pas, on affiche une erreur.
	echo'Aucun résultat pour l\'id : '.$_GET['id'];
}else{
//S'il y en a, alors on affiches les résultats.
	//On parcours tous les résultats 
	while($resultats = mysql_fetch_array($requete)){ 
		//On affiches les résultats
		echo $resultats['content'];
	}
}
// Deconnection de mysql
mysql_close(); 
?>


Si tu comprend pas une fonction je te laisse voir sur php.net Smiley smile

A+
Les erreurs NOTICE ne sont pas vraiment important, tu peux les virer en mettant E_ALL & ~E_NOTICE dans php.ini.

En fait, j'ai jamais su résoudre les NOTICE comme les tiens... Ca vient de l'index 'id' non défini dans $_GET['id'] et je sais pas trop comment le définir...Le mieux serait de les ignorer comme je le fais Smiley cligne

Tu peux faire par exemple :

$id = $_GET['id'];

if ($id == 'voyage') // = dossiers.php?id_voyage
{
// blabla
}
elseif ($id == 'italie') // dossiers.php?id=italie
{
// blabla
}
else // = dossiers.php
{
// blabla
}
Mais j'ai à peu prés compris vos deux solutions...En revanche, dans les deux cas y'a toujours une erreur et je dois le mettre ou le E_ALL & ~E_NOTICE ? Sur le site de mon hébérgeur ? Parceque j'y est pas accés sur le site de mon hébérgeur si ? Je suis un peu noob désolé Smiley ohwell
Salut,

Pour faire tes tests du tu dois utiliser EasyPHP 1.7 ou > Personellement je l'aime pas beaucoup, ils ont faire une configuration de php qui obliga à déclarer toutes les variables, comme en C en gros.

Je te conseille de prendre Wamp server qui est, a mon gout, meilleure est en plus tu peux tester ton script sur php4 et php5.

a+
Ton fichier php.ini se trouve généralement dans le répertoire Windows, parfois dans Windows/System 32.

La section pour mettre le E_ERROR ressemble à ça :


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; error_reporting is a bit-field.  Or each number up to get desired error
; reporting level
; E_ALL             - All errors and warnings
; E_ERROR           - fatal run-time errors
; E_WARNING         - run-time warnings (non-fatal errors)
; E_PARSE           - compile-time parse errors
; E_NOTICE          - run-time notices (these are warnings which often result
;                     from a bug in your code, but it's possible that it was
;                     intentional (e.g., using an uninitialized variable and
;                     relying on the fact it's automatically initialized to an
;                     empty string)
; E_STRICT       - run-time notices, enable to have PHP suggest changes
;                     to your code which will ensure the best interoperability
;                     and forward compatability of your code
; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
;                     initial startup
; E_COMPILE_ERROR   - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR      - user-generated error message
; E_USER_WARNING    - user-generated warning message
; E_USER_NOTICE     - user-generated notice message
;
; Examples:
;
;   - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE
;
;   - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
;   - Show all errors except for notices and coding standards warnings
;
[b]error_reporting  =  E_ALL & ~E_NOTICE[/b]

Dans la ligne en gras, il faut mettre E_ALL & ~E_NOTICE à error_reporting

Par contre si c'est sur ton hébergeur, il te reste plus qu'à prier... Smiley murf Tu peux faire un phpinfo(); et voir comment est configuré error_reporting.
Heu ... avant de changer le fichier de configuration ...

C'est normal que tu aies une erreur quand tu charges la page dossiers.php ! En effet, dans ce cas, tu fais appel à la variable $_GET['id'] dans ton code alors qu'elle n'est pas définie !

Il te suffit de rajouter un test au début de ton code pour vérifier l'existence de cette variable :

 if (isset($_GET['id'])){ ... ton code ...} 

Modifié par Sopo (14 Aug 2005 - 13:03)
Hacken a écrit :
Pour faire tes tests du tu dois utiliser EasyPHP 1.7 ou > Personellement je l'aime pas beaucoup, ils ont faire une configuration de php qui obliga à déclarer toutes les variables, comme en C en gros.

Il n'y a rien d'obligatoire, c'est juste le niveau de rapport d'erreurs qui est le plus verbeux possible par défaut (E_ALL). Il suffit de modifier le php.ini comme indiqué par ALkyD.

ALkyD a écrit :
Par contre si c'est sur ton hébergeur, il te reste plus qu'à prier...

Pour modifier le niveau de rapport d'erreurs sans toucher à php.ini il existe la fonction error_reporting().
Bon, je voudrais d'abord tout vous remercier !!!
J'ai trouvé la réponse à mon probléme, je vous explique comment j'ai fais,
d'abord j'ai utilisé la méthode avec les erreurs et j'avais trouvé la fonction error_reporting() ! Mais j'ai essayer ce qu'à dit Sopo et la plus d'erreur du tout !! Merci à tous vous m'avez vraiment bien aidé !
Sujet résolu Smiley smile

Merci à tous

A une prochaine fois !

Styblue