Je débute en PHP

Je débute en PHP - PHP - Programmation

Marsh Posté le 21-12-2005 à 12:31:18    

J'ai un problème avec un '$' qui apparement n'apparait pas dans mon code.

Citation :


<?
 
 /*---------------  
 DEBUT DU CODE PHP
 ---------------*/
 
 echo("<HTML>" );
 echo("<HEAD>" );
 echo("<TITLE>Plan d adressage IP</TITLE>" );
 echo("<LINK REL='stylesheet' HREF='feuille_de_style.css'>" );
 echo("</HEAD>" );
 echo("<BODY>" );
 echo("<A HREF='index.html'>Aller au formulaire</A>" );
 echo("<BR />" );
 
 /*---------------------------------------------------------------------------------
 Différentes en-têtes comme des feuilles de style ou des script php sont insérés ICI.
 ---------------------------------------------------------------------------------*/
 include("connexion_mysql.php" );
 
   
 /*--------------------------------  
 Requêtes à effectuer dans la base
 --------------------------------*/
 
 $affichage_table=mysql_query("SELECT * FROM adressage" );
 $affichage_champs=mysql_query("SHOW COLUMNS FROM adressage" );
 
 /*--------------------
 Requêtes de supression
 --------------------*/
 if(isset($_GET["enregistrement"])) {
  $enregistrement=$_GET['enregistrement'];
  $del_occ="DELETE FROM adressage WHERE id='$enregistrement'";
  mysql_query($del_occ); }
   
 /*--------------
 Requêtes d'ajout
 --------------*/
 if(isset($_GET["type"]) || isset($_GET["role"]) || isset($_GET["description"]) || isset($_GET["netbios"]) || isset($_GET["user"]) || isset($_GET["systeme"]) || isset($_GET["av"]) || isset($_GET["cd"]) || isset($_GET["domaine"]) || isset($_GET["notes"])) {
  $type=$_GET['type'];
  $role=$_GET['role'];
  $description=$_GET['description'];
  $netbios=$_GET['netbios'];
  $user=$_GET['user'];
  $systeme=$_GET['systeme'];
  $av=$_GET['av'];
  $cd=$_GET['cd'];
  $domaine=$_GET['domaine'];
  $notes=$_GET['notes'];
  $add_occ="INSERT INTO adressage VALUES ('$ip','$type','$role','$description','$netbios','$user','$systeme','$av','$cd','$domaine','$notes')";
  mysql_query($add_occ); //ajoute une occurence. }
 
 
 /*---------------------------------------  
 AFFICHAGE DE LA BASE DANS UN TABLEAU HTML  
 ---------------------------------------*/
  echo("<TABLE BORDER='1' CLASS='tableau' WIDTH='100%'>" );
  echo("<TR>" );
  while($champs_tableau=mysql_fetch_assoc($affichage_champs)) {
  echo("<TD>".$champs_tableau['Field']."</TD>" ); }
  echo("</TR>" );
  while($lignes_tableau=mysql_fetch-array($affichage_table)) {
  echo("<TR>" );
  for($i=0;$i<12;$i++) {
  echo("<TD>".$ligne[$i]."</TD>" ); }
  echo("<TD><A HREF='bdd.php?enregistrement='".$ligne["id"].">Supprimer</A></TD>" );
  echo("</TR>" );
  echo("</TABLE>" );
  echo("<BR />" );
   
 /*------------------
 Fermeture de la base
 ------------------*/
 
 
 /*----------------------
 DEBUT DU CODE JAVASCRIPT
 ----------------------*/
 /*  
 echo("<SCRIPT LANGUAGE='JavaScript'>" );
 echo("var longueur_tableau=document.links.length;" );
 echo("</SCRIPT>" );
 */
   
 echo("</BODY>" );
 echo("</HTML>" );
 
?>


Merci de bien vouloir y jeté un coup d'oeil et de me proposer des conseils.
 
PS: voila le message du d'erreur:
Parse error: parse error, unexpected $ in /home/e-smith/files/ibays/testphp/html/bdd.php on line 89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Reply

Marsh Posté le 21-12-2005 à 12:31:18   

Reply

Marsh Posté le 21-12-2005 à 12:33:48    

oui mais la ligne 89 correspond à quelle ligne ici :/

Reply

Marsh Posté le 21-12-2005 à 12:36:45    

Excusez mes lacunes je ne maitrise pas encore les forums
Pour information la ligne 89 est la dernière ligne soit "?>".
L'erreur doit surement apparaitre avant cette ligne j'imagine.

Reply

Marsh Posté le 21-12-2005 à 12:40:21    

bin t'as plein de trucs qui ch#ent dans ton code :o

Code :
  1. mysql_query($add_occ); //ajoute une occurence. }


La du coup tu fermes pas ton while, vu que l'accolade est commentée
 
et là:

Code :
  1. while($lignes_tableau=mysql_fetch-array($affichage_table)) {
  2.   echo("<TR>" );
  3.   for($i=0;$i<12;$i++) {
  4.   echo("<TD>".$ligne[$i]."</TD>" ); }
  5. ...


tu as carrement oublié l'accolade fermante de ton while.
 
Petit conseil pour finir: je sais pas sur quel livre/site tu apprends le php, mais change... je te conseille php debutant plutôt!

Reply

Marsh Posté le 21-12-2005 à 12:44:18    

Il a pas oublié l'accolade, elle est sur la dernière ligne de la boucle. :/
 
Moralité : style à la con, changer de style : indentation visible et cohérente, et accolade fermante seule sur une ligne. :o

Reply

Marsh Posté le 21-12-2005 à 13:04:00    

Bon merci pour les remarques sur mon code mais par contre vos commentaires d'ados prépubert vous auriez pu vous les gardez.
En vous remerçiant.

Reply

Marsh Posté le 21-12-2005 à 13:10:19    

Dans la plupart des cas quand lorsque l'erreur se trouve à la dernière ligne de code, c'est à dire ?> c'est qu'il y a une boucle qui n'est pas fermé.
Avec le temps tu repèreras vites les erreurs, c'est pas tous de suite mais ça viendra :)
Ce que Alerim à voulu dire mais avec un manque de finesse car il a surement oublié ses premiers codes ;).  
Il y a une maniere de presenter son code pour des raisons de lisibilité, pour toi et pour les autres. Elle est importante pour repérer les erreurs, alors au début c'est normal parce que tu n'as pas encore t'es repere et une erreur ne te sautera pas au yeux mais avec la pratique tu vas pouvoir coder en commetant un minimum d'erreur de synthaxe.


Message édité par Berceker United le 21-12-2005 à 13:13:11
Reply

Marsh Posté le 21-12-2005 à 13:12:41    

En tout cas je suis content avec seulement j'ai appris pas mal de choses du genre l'accolade dans un com. Bon je ferais appel à vous surement dans le futur. A la prochaine :)

Reply

Marsh Posté le 21-12-2005 à 14:05:24    

Une autre partie de mon code devrait avoir subir quelques modifications du fait de sa syntaxe trés mauvaise, de plus la requête ne marche pas. Merci de m'apporter votre savoir.

Citation :


 if((isset($_GET['ip'])) /*$_GET["type"]))*/ || (isset($_GET["role"])) || (isset($_GET["description"])) || (isset($_GET["netbios"])) || (isset($_GET["user"])) || (isset($_GET["systeme"])) || (isset($_GET["av"])) || (isset($_GET["cd"])) || (isset($_GET["domaine"])) || (isset($_GET["notes"]))) {
  $add_occ="INSERT INTO adressage VALUES ('$ip','$type','$role','$description','$netbios','$user','$systeme','$av','$cd','$domaine','$notes')";
  mysql_query($add_occ); //ajoute une occurence.
  printf("L'enregistrement s'est déroulé correctement." ); }
  else printf("Aucune variable n'a été enregistrée dans le formulaire" );


Explication du code, je souhaite si les variables en question sont définies au préalable, ajouter une occurence dans ma base de donnée.

Reply

Marsh Posté le 21-12-2005 à 14:06:40    

et voila le code plus lisible. :)

Code :
  1. if((isset($_GET['ip'])) /*$_GET["type"]))*/ || (isset($_GET["role"])) || (isset($_GET["description"])) || (isset($_GET["netbios"])) || (isset($_GET["user"])) || (isset($_GET["systeme"])) || (isset($_GET["av"])) || (isset($_GET["cd"])) || (isset($_GET["domaine"])) || (isset($_GET["notes"]))) {
  2.  $add_occ="INSERT INTO adressage VALUES ('$ip','$type','$role','$description','$netbios','$user','$systeme','$av','$cd','$domaine','$notes')";
  3.  mysql_query($add_occ); //ajoute une occurence.
  4.  printf("L'enregistrement s'est déroulé correctement." ); }
  5.  else printf("Aucune variable n'a été enregistrée dans le formulaire" );

Reply

Marsh Posté le 21-12-2005 à 14:06:40   

Reply

Marsh Posté le 21-12-2005 à 14:15:10    

[:ciler] couuaacc!.... Je dis rien tu débute :o

Reply

Marsh Posté le 21-12-2005 à 14:18:18    

Heyboy a écrit :

et voila le code plus lisible. :)
...


 :love:  :lol:  :love:  
 
euh sinon je pense que c'est des "&&" et non des "||" que tu voulais mettre dans ton if!

Reply

Marsh Posté le 21-12-2005 à 14:25:47    

si vous avez mieux à proposer je suis prêt à voir. :)

Citation :


euh sinon je pense que c'est des "&&" et non des "||" que tu voulais mettre dans ton if!  


non c'est bien des OU logiques il ya besoin qu'une variable soit défini pour valider la condition.

Reply

Marsh Posté le 21-12-2005 à 14:30:41    

Heyboy a écrit :

...
non c'est bien des OU logiques il ya besoin qu'une variable soit défini pour valider la condition.


 
Donc il suffit qu'une seule des valeurs soit "settée" pour que tu fasses ton insert?
En d'autres termes j'ai uniquement $_GET["ip"] je fais quand même l'insert avec tous les autres champs à vide?
 
Par ailleurs tu dois egalement utilisé $_GET pour tes variables dans ta requête...

Reply

Marsh Posté le 21-12-2005 à 14:39:50    

Oui c'est bien ca. Biensûr ce ne sera pteut être pas l'algo finale mais bon... En tout cas ca ne marchait pas je vais voir avec ce que tu m'a dis...

Reply

Marsh Posté le 21-12-2005 à 14:40:57    

En fait je les aies initialisé avec des variables PHP du type $ip=$_GET['ip']

Reply

Marsh Posté le 21-12-2005 à 15:50:01    

en plus des autres remarques y'a ca qui ne fonctionnera pas
 

Code :
  1. while($lignes_tableau=mysql_fetch-array($affichage_table)) {


 
C'est plutot
 

Code :
  1. while($lignes_tableau=mysql_fetch_array($affichage_table)) {


---------------
MZP est de retour
Reply

Marsh Posté le 21-12-2005 à 15:50:36    

Heyboy a écrit :

En fait je les aies initialisé avec des variables PHP du type $ip=$_GET['ip']


 
Par la suite, n'oublie de les tester avant de t'en servir. Injection de code tres facile.


---------------
MZP est de retour
Reply

Marsh Posté le 21-12-2005 à 16:15:58    

cinocks a écrit :

Par la suite, n'oublie de les tester avant de t'en servir. Injection de code tres facile.


Quand il parle d'injection de code il veut dire par là qu'il est facile de taper un morceau de synthaxe SQL dans ton champs de formulaire et lorsque tu le postes ben ta requete a une autre forme.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed