PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » probleme de syntaxe » 08-02-2011 11:23:46

@XTG : il me semblait pourtant que je dois annoncer que je vais les utiliser non ? (je dois me tromper si je vous lis bien). ok donc je n'annonce pas les var session dans les parametres.
donc je met simplement qqch comme un truc du genre ...

1.<?php
2.if (!isset($_SESSION)) {session_start();}
3.
4.function loginout()
5.{
69.if (empty($_SESSION['MM_Username']))
10.  {echo '<a href="acces.php">acces privé</a>'; }
11.else
12.  {if (empty($_SESSION['MM_IdUser']))
13.    {echo '<a href="acces.php">acces privé</a>'; }
14.  else
15.    {if ($_SESSION['MM_UserGroup']==2) // membre + admin
16.      {echo '<a href="prive.php">panneau privé</a> | <a href="logout.php">LOGOUT</a>';}
17.    elseif ($_SESSION['MM_UserGroup']==3) // admin seul
18.      {echo '<a href="prive.php">panneau privé</a> | <a href="logout.php">LOGOUT</a>' ;}
19.    else {echo '<a href="acces.php">acces privé</a>'; }
20.    }
21.  }
22.}
23.?>

ok ca a l'air de marcher.

#2 Re : Forum Général PHP » probleme de syntaxe » 08-02-2011 11:23:46

bon ok apparemment je m'y prend mal.
je reprend depuis le début ce que j'ai voulu faire avec ce code.

1. j'ai un formulaire de login ou l'utilisateur entre son pseudo et son pw. avec ca, la page va comparer avec la base de donnée, vérifie, et place dans des variables de session le pseudo, l'id primaire, et le no de groupe de l'utilisateur (visiteur, utilisateur, webmaster...).

2. je veux que sur les pages du site, j'aie des affichages variables.
- soit c'est un visiteur non connecté et il empeche l'acces a la page (et renvoi vers le formulaire le login)
- soit il permet de lire la page (et affiche soit un menu utilisateur, soit un menu admin en focntion)

ou alors
- soit c'ets un visiteur et j'ai un certain affichage (dont un lien vers la page de login)
- soit c'ets un utilisateur connecté et j'ai d'autres liens (dont un lien vers un logout)

la procedure d'analyse est la meme, juste l'affichage est différent.

ca c'est ce que je veux faire. les variables de session ne correspondent pas a ce que j'ai besoin (ou manquent de sécurité ?). ok. j'utilise d'autres variables alors ? l'intéret des variables de session, c'est qu'il suffit de quitter l'explorer pour les effacer. c'est pour ca que j'ai préférer les utiliser.

si vous connaissez une meilleure facon de faire ceci, je suis ouvert a des exemples. la j'ai juste utilisé des trucs que je commence a connaitre avec mes modestes connaissances. (mais svp restez basique dans vos explications sinon je ne vous comprendrai pas tongue )

#3 Re : Forum Général PHP » probleme de syntaxe » 08-02-2011 11:23:46

disons plutot que j'apprécie hautement les conseils constructifs contenant des propositions d'aide, ou des corrections concretes

et tres peu les commentaires negatifs qui ne proposent rien pour m'aider a me corriger. critiquer est facile. mais critiquer sans aider ne sert en rien la progression.

si je poste ici c'est justement pour recevoir des critiques... ET de l'aide. sinon comment progresser ?

stp relis ton post et cherches y les commentaires constructifs avant de parler de "rancoeur".
et relis mes deux posts, je pense que tu y verras plusieurs phrases qui montrent que j'accepte la critique quand elle propose de l'aide et me permet de progresser en meme temps.

bon, pour ma part, fin de la discussion sur ce theme, on n'est pas ici pour cela.
parlons plutot "codes".

mon code actuel est :

<?php
if (!isset($_SESSION)) {session_start();}

function loginout($a,$b,$c)
{
$a=$_SESSION['MM_Username'];
$b=$_SESSION['MM_IdUser'];
$c=$_SESSION['MM_UserGroup'];
if (empty($_SESSION['MM_Username']))
  {echo '<a href="acces.php">acces privé</a>'; }
else
  {if (empty($_SESSION['MM_IdUser']))
    {echo '<a href="acces.php">acces privé</a>'; }
  else
    {if ($_SESSION['MM_UserGroup']==2) // membre + admin
      {echo '<a href="prive.php">panneau privé</a> | <a href="logout.php">LOGOUT</a>';}
    elseif ($_SESSION['MM_UserGroup']==3) // admin seul
      {echo '<a href="prive.php">panneau privé</a> | <a href="logout.php">LOGOUT</a>' ;}
    else {echo '<a href="acces.php">acces privé</a>'; }
    }
  }
}
?>

(oui, j'utilise le meme fragment pour diverses utilisations et affichages dynamiques sur mon site)
et a l'emplacement d'affichage, je place

<?php loginout($_SESSION['MM_Username'],$_SESSION['MM_IdUser'],$_SESSION['MM_UserGroup']);?>

ca marche tres bien quand les variables de session existent et sont remplies. ou quand ces variables existaient et ont été vidées. mais je viens de faire le test, quand les var session n'ont pas encore été créées et utilisées, ca indique des "erreurs variables indéfinies".
puis je dire que ces var session existent (en début de page) meme si elles ne sont pas remplies ?

#4 Re : Forum Général PHP » probleme de syntaxe » 08-02-2011 11:23:46

merci pour vos réponses
@zad34 : t'as tappé dans le mille. en mettant $a,$b,$c dans la fonction et $a=$session ensuite, ca marche.
@pierrot et maljuna : le header focntionne et me sert simplement a rediriger les utilisateurs n'entrant pas dans les conditions (login) vers le formulaire d'identification. maintenant si vous connaissez mieux...

@Maljuna : je n'ai jamais caché ma "méconnaissance" de php. mais merci de me le rappeller et d'enfoncer le clou. juste pour info, si j'etais un expert, je ne serais pas ici pour demander de l'aide et des avis.

probleme résolu, le code fonctionne maintenant. merci.

#5 Forum Général PHP » probleme de syntaxe » 08-02-2011 11:23:46

himron
Réponses : 14

aujourd'hui est un grand jour... (enfin pour moi)

apres des mois a aborder les codes "des autres", a suivre des manuels et des tutos, a bidouiller des codes deja écrits.... je me suis mis a écrire mon premier code moi meme
(ouais bon je sais, c'est comme un enfant qui est fier de son premier chateau de sable mais bon...)

par contre j'ai un "parse error" et j'ai besoin que qqn regarde mon code (débile et basique) pour le corriger...

> j'ai une page "contact.php" avec un formulaire pour entrer le pseudo et le password. cette page remplit aussi les variables de session, puis envoit vers une page "prive.php"

> dans cette page "prive.php", je veux que le menu de navigation s'affiche différemment si on est simple utilisateur ou si on est administrateur. la différence est qu'un des champs de la base de donnée donne un chiffre 3 pour admin et 2 pour utilisateur > ces valeurs sont répercutées dans les variables de session.

donc voici le code que je pensais placer sur la page "prive.php". et c'est la que j'ai un "parse error" en ligne 4 :?:

<?php
if (!isset($_SESSION)) {session_start();}

function menuprive($_SESSION['MM_Username'],$_SESSION['MM_IdUser'],$_SESSION['MM_UserGroup'])
{
if (empty($_SESSION['MM_Username']))
  {header("Location: acces.php"); }
else
  {if (empty($_SESSION['MM_IdUser']))
    {header("Location: acces.php"); }
  else
    {if ($_SESSION['MM_UserGroup']==2)
      {//afficher menu membre
      include "admin/menu1.php";
      }
    elseif ($_SESSION['MM_UserGroup']==3)
      {//afficher menu membre + admin
      include "admin/menu1.php";
      include "admin/menu2.php";
      }
    else {header("Location: acces.php"); }
    }
  }
}
?>


<?php
echo "test de menu";
menuprive($_SESSION['MM_Username'],$_SESSION['MM_IdUser'],$_SESSION['MM_UserGroup']);
?>

#6 Re : Forum Général PHP » var "global" » 02-02-2011 20:59:35

ok xTG, t'es le meilleur.
je te remercie pour tes conseils et explications.
j'ai corrigé les lignes de codes comme tu l'as conseillé et ca marche.

de ce que j'en sais, un fetch array aurait été en effet plus lisible.
et de ce que constate (des pages imbriquées dans des pages etc...) ce code est tout sauf simplifié.
mais je dois faire avec.

un tout grand merci.

#7 Re : Forum Général PHP » var "global" » 02-02-2011 20:59:35

exccellent cette recherche avec notepad++, en effet ca m'aide.
si je comprend bien, les 1eres lignes que j'avais posté plus haut, indiquent simplement que des variables nommées .... vont etre utilisées plus bas. pas qu'elles contiennent deja qqch.

bon, ci dessous le code complet de la page index.php
d'apres ce que je comprend, il y a un bloc de codes (ligne 26-49 ) qui va rechercher les données "en vrac" dans plusieurs tables, et ensuite un bloc de codes (lignes 52-80 ) qui organise ces données.

dans le 1er bloc (lignes 26-49 ) je dois supprimer toute mention de la base calilink.xxxxxx
dans le 2eme bloc (ligne 52-80 ) je dois réécrire tout pour qu'il n'y ait pas d'incohérence avec les suppressions de données ci dessous (je suppose que les [no] vont changer...)

est ce que vous pouvez m'aider ? je ne suis pas assez a l'aise pour refaire ce code par moi meme sans mettre de bugs et faire foirer cela encore plus... wink

<?php

/* Grab Dates Function */
// Queries database and dumps events into an array.
// $start and $end are date ranges in 20060118 format
// $category_array is arrays of categories to be included
function grabDates($start,$end,$category_array) {
  $cats = implode(",",$category_array);
  global $table_prefix, $supergroup;
  global $title, $niceday, $start_time, $end_time, $venue, $city, $state, $cat,$ed, $usr, $color, $background,$lang, $w, $ap, $status;
  /* get applicable events */
  $superedit = false;
  if (!$supergroup) {
    $q = "select moderate from ".$table_prefix."users_to_groups where group_id = ".$w." and user_id = ".$_SESSION["user_id"];
    $query = mysql_query($q);
    if (mysql_num_rows($query) > 0) {
      $mod = mysql_result($query,0,0);
      if ($mod > 2) {
        $superedit = true;
      }
    }
  } else {
    $superedit = true;
  }
  if (($mod > 0) || ($superedit)) {
    $q = "select DATE_FORMAT(calidates.date, '%Y%m%d'),
    DATE_FORMAT(calidates.date, '%H%i'),
    calievents.event_id,
    calievents.title,
    DATE_FORMAT(calidates.date, '%W, %M %e, %Y'),
    DATE_FORMAT(calidates.date, '%l:%i %p'),  
    DATE_FORMAT(calidates.end_date, '%l:%i %p'),
    calilinks.company, calilinks.city, calilinks.state,
    calievents.category_id, calievents.user_id,
    calidates.date,
    calicategories.color, calicategories.background,
    calievents.status_id
   
    from calievents, calidates, calilinks, calicategories, caligroups
    where calidates.date >= '$start'
    and calidates.date < '$end'
    and calidates.event_id = calievents.event_id
    and calievents.venue_id = calilinks.link_id
    and calievents.category_id in ("
.$cats.")
    and calievents.category_id = calicategories.category_id
    and calievents.group_id = caligroups.group_id
    and calievents.group_id = "
.$w."
   
    order by calidates.date"
;
    $query = mysql_query($q);
    //echo $q."<br>";
    while ($row = mysql_fetch_row($query)) {
      $edit = false;
      if ($row[11] == $_SESSION["user_id"]) {
        $edit = true;
      } elseif ($superedit) {
        $edit = true;
      }
      if ($edit==true) $ed[$row[2]]=true;
      if ($superedit==true) $ap[$row[2]]=true;
      $title[$row[2]]=strip_tags($row[3]);
      $niceday[$row[0]][$row[12]][$row[2]]=$row[4];
      if (($row[5] == "12:00 AM") && ($row[6] == "11:59 PM")) {
        $start_time[$row[0]][$row[12]][$row[2]]=$lang["all_day"];
      } elseif (($row[5] == "12:00 AM") && ($row[6] == "12:00 AM")) {
        $start_time[$row[0]][$row[12]][$row[2]]=$lang["tba"];
      } else { 
        $start_time[$row[0]][$row[12]][$row[2]]=$row[5];
        if ($row[6]) $end_time[$row[0]][$row[12]][$row[2]]=$row[6];
      }
      if ($row[7]) $venue[$row[2]]=$row[7];
      if ($row[7] && $row[8]) $city[$row[2]]=$row[8];
      if ($row[7] && $row[8] && $row[9]) $state[$row[2]]=$row[9];
      $cat[$row[2]]=$row[10];
      $usr[$row[2]]=$row[11];
      $color[$row[2]]=$row[13];
      $background[$row[2]]=$row[14];
      $status[$row[2]]=$row[15];
    }
  }
}

function grab($start,$end,$category) {
  global $include_child_categories, $include_parent_categories, $category_array,$supercategory,$supergroup,$category_permissions,$w,$table_prefix;
  $canview = false;
  $groupview = false;
  if (!$supergroup) {
    $q = "SELECT * from ".$table_prefix."users_to_groups where group_id = ".$w." and  user_id = ".$_SESSION["user_id"];
    $query = mysql_query($q);
    if (mysql_num_rows($query) > 0) $groupview = true;
  } else {
    $groupview = true;
  }
  if ($groupview) {
    if (!$supercategory) {
      //build permission array
      $q = "SELECT category_id from ".$table_prefix."users_to_categories where user_id = ".$_SESSION["user_id"];
      //echo $q."<br>";
      $query = mysql_query($q);
      if (mysql_num_rows($query) > 0) {
        while ($row = mysql_fetch_row($query)) {
          $category_permissions[] = $row[0];
         
        }
      }
      if (in_array($category,$category_permissions)) $canview = true;
    } else {
      $canview = true;
    }
    if ($canview) {
      $category_array[] = $category;
      if ($include_child_categories) grab_child($start,$end,$category,true);
      if ($include_parent_categories) grab_parent($start,$end,$category,true);
      grabDates($start,$end,$category_array);
     
    }
 
  }
}

function grab_child($start,$end,$category,$starter=false) {
  global $table_prefix, $category_array,$supercategory,$category_permissions;
  $canview = false;
  if (!$supercategory) {
    if ($category_permissions) {
      if (in_array($category,$category_permissions)) $canview = true;
    }
  } else {
    $canview = true;
  }
  if ($canview) {
    if (!$starter) $category_array[] = $category;
    $q = "select category_id from ".$table_prefix."categories where sub_of = ".$category;
    //echo $q."<br>";
    $query = mysql_query($q);
    if (!$query) $msg = "Database Error : ".$q;
    else {
      while ($row = mysql_fetch_row($query)) {
        grab_child($start,$end,$row[0],false);
      }
    }
  }
}

function grab_parent($start,$end,$category,$starter=false) {
  global $table_prefix, $category_array, $supercategory,$category_permissions;
  $canview = false;
  if (!$supercategory) {
    if ($category_permissions) {
      if (in_array($category,$category_permissions)) $canview = true;
    }
  } else {
    $canview = true;
  }
  if ($canview) {
    if (!$starter) $category_array[] = $category;
   
    $q = "select sub_of from ".$table_prefix."categories where category_id = ".$category;
    //echo $q."<br>";
    $query = mysql_query($q);
    if (!$query) $msg = "Database Error : ".$q;
    else {
      while ($row = mysql_fetch_row($query)) {
        grab_parent($start,$end,$row[0],false);
      }
    }
  }
}

include "includes/start.php";
$canview = false;
//if no access, then kick them out!
if (!$superview) {
  mysql_close($link);
  $msg = $lang["must_log_in"];
  header("Location: login.php?msg=".$msg."&".$common_get);
}

if (($supergroup) && ($supercategory)) {
  $canview = true;
 
} else {
 
  if (!$supercategory) {
    $canview = false;
    $q = "select * from ".$table_prefix."users_to_categories where category_id = ".$c." and user_id = ".$_SESSION["user_id"];
    //echo $q;
    $qu = mysql_query($q);
    if (mysql_num_rows($qu) > 0) {
      $canview = true;
     
    } else {
      $msg .= "<p>".$lang["no_permission_to_view_category"]."</p>";
      $canview = false;
     
    }
  }
  if ((!$supergroup) && $canview) {
    $q = "select * from ".$table_prefix."users_to_groups where group_id = ".$w." and user_id = ".$_SESSION["user_id"];
    //echo $q;
    $qu = mysql_query($q);
    if (mysql_num_rows($qu) > 0) {
      $canview = true;
     
    } else {
      $msg .= "<p>".$lang["no_permission_to_view_group"]."</p>";
      $canview = false;
     
    }
  }
}
if (($canview == true)&& $script) {
  include "modules/".$script;
} else {
  include "includes/header.php";
  include "includes/footer.php";
}

?>

#8 Re : Forum Général PHP » var "global" » 02-02-2011 20:59:35

ok je ne connaissais pas cette fonction. deja qqch d'appris aujourd'hui wink
mais par contre : aucun resultat trouvé. (or il doit y en avoir puisque la grille de l'agenda affiche 4 evenements, et un 5eme ne s'affiche pas.)
ca s'arrange pas.

je précise encore ceci :
le probleme est la variable $venue.
lorsque cette variable = un chiffre (faisant anciennement référence a une autre table), l'evenement s'affiche dans la grille du mois.
lorsque $venue = du texte, cela ne s'affiche pas.
dans la base de donnée, l'entrée "venue" est bien en varchar et l'encodage se fait tres bien, tant en chiffre qu'en texte.
le probleme est donc bien de l'ordre de l'encodage de la valeur dans $venue et son utilisation php.

mais j'ignore comment trouver la ligne problématique. le code ci dessus commence la page index.php. il n'y a rien avant cela. pourtant les valeurs doivent bien etre mise dans ces variables d'une facon ou d'une autre...

help me...

#9 Forum Général PHP » var "global" » 02-02-2011 20:59:35

himron
Réponses : 7

salut a tous,

je me casse la tete depuis quelques jours sur un script que j'ai récupéré et que j'essaye d'adapter.
c'est pour faire un agenda sur mon site (et je n'ai pas les competances pour gérer completement tout le systeme de datation donc je récupere un agenda existant, mais...)

pour localiser un evenement, il y a tout un systeme de mémorisation (adresse, nom de contact, fax, telephone........) dans une base secondaire. systeme que j'ai fait sauter (un menu deroulant pour selectionner l'endroit, que j'ai remplacé par un champ de texte, ou on indique simplement la ville).
ceci ca marche, l'encodage dans la base de donnée principale fonctionne bien.


la ou ca se corse, c'est pour l'affichage des données. les pages php vont chercher des données "global" (ci dessous), et je pense qu'il ne les prends (ou traite)  pas dans le bon format parce que ca ne s'affiche pas. le code que j'ai est :

function grabDates($start,$end,$category_array) {
  $cats = implode(",",$category_array);
  global $table_prefix, $supergroup;
  global $title, $niceday, $start_time, $end_time, $venue, $city, $state, $cat,$ed, $usr, $color, $background,$lang, $w, $ap, $status;

donc il signale que des données "global" sont utilisées dans la page, mais ou et comment va t il les cherchers, comment leur donne t il une valeur ? je ne trouve nulle part de fonction les liant a une base de donnée. j'ai beau fouiller plusieurs pages, je ne trouve rien.

je suis preneur pour toute information/piste que vous auriez a ce sujet. merci d'avance
(s'il vous fauut plus de code, dites le moi)

#10 Re : Forum Général PHP » php gestion d'images » 10-01-2011 17:35:27

update. j'avais juste mal placé le bouton radio et j'ai reformulé le code en focntion de la remarque de ziko :

 
<p class="scroll">
          <?php
      $photo = $row_rsmembre['photo'] ;
      $fd = opendir('membres/');
      if($fd)
      {
        while(($file = readdir($fd)))
          {
        if($file == '.' or $file == '..') {continue;}  
        else {?>
               
    <input type="radio" name="photo" id="photo" value="<?php echo "membres/".$file; ?>"
    <?php if($photo == ("membres/".$file)) echo 'checked="checked"'; ?> />  
           
              <?php echo "$file  <br>";   }
        }
          closedir($fd);
      } ?>      
        </p>

#11 Re : Forum Général PHP » php gestion d'images » 10-01-2011 17:35:27

retour sur le sujet (désolé).

je reviens vers vous parce que j'ai un autre petit soucis concernant la gestion de certaines images (photos d'identité des membres) et leur affichage.

voila, les photos sont regroupées dans un directory spécifique
racinedemonsite/membres/
(les pages sont directement sur la racine, donc le chemin relatif est "membres/")

dans le formulaire pour créer/mettre a jour un profil, j'ai un code "readdir" qui permet de voir la liste des photos dans ce directory et de cocher celle qu'on veut placer.

 <label for="photo" class="texte">Choix de la photo d'identité :</label><br />
        <p class="scroll">
          <?php
      $photo = $row_rsmembre['photo'] ;
      if ($handle = opendir('membres/'))
      {
      while (false !== ($file = readdir($handle)))
        {
        echo "$file  <br>";?>
    <input type="radio" name="photo" id="photo" value="<?php echo "membres/".$file; ?>"
    <?php if($photo == ("membres/".$file)) echo 'checked="checked"';?> />
        <?php }
        closedir($handle);
      }
      ?>
        </p>
        <br /><br />

ce qui affiche ceci dans le formulaire
[img align=C]http://www.francsarchers.be/temp/test-photo.jpg[/img]
comme vous pouvez le voir, en tete de liste il affiche un "." et un ".." qui ne devraient pas s'y trouver.
premiere question : comment les retirer ?

la question est importante parce que en réalité, quand je coche une photo (alienor par exemple), il retient les coordonnées de la photo précédente (alchimiste, donc). ce qui n'est pas du tout pratique.
deuxieme question : quy'a t il de faux dans le code php, qui induise cette erreur ??? et comment corriger cela ?

merci d'avance.

#12 Re : Forum Général PHP » php gestion d'images » 10-01-2011 17:35:27

Maljuna Kris a écrit :

Le comparateur d'égalité c'est == et non pas = (erreur de débutant)

je ne te le fais pas dire.
le pire c'est que je le savais... mais effectivement, en digne débutant j'y ai plus pensé.

ok ca marche nickel cette fois ci.
un vrai plaisir d'apprendre avec vous les gars
(merci MK pour ton soutient)

#13 Re : Forum Général PHP » php gestion d'images » 10-01-2011 17:35:27

"photo1" est renommé "photo2", "photo3" etc... ce qui fait bien des identifiants uniques
j'ai juste mis un des scripts en exemple. wink

pour revenir au probleme de "checked", voici le code que j'ai essayé

<label for="photo1" class="texte">Choix de la photo 1 :</label><br />
        <p class="scroll">
          <?php
      $photo1 = $row_rspagedetail['photo1'] ;  // ici je vais rechercher l'info dans la bdd
      if ($handle = opendir('images/'))
      {
      while (false !== ($file = readdir($handle)))
        {
        echo "$file  <br>";?>
    <input type="radio" name="photo1" id="photo1" value="<?php echo "images/".$file; ?>"
    <?php if($photo1 = ("images/".$file)) echo 'checked="checked"';?> />
        <?php }
        closedir($handle);
      }
      ?>
        </p>
        <br /><br />

mais ca ne marche pas : systématiquement il coche la derniere image de la liste. (donc pas la bonne).

#14 Re : Forum Général PHP » php gestion d'images » 10-01-2011 17:35:27

alors, j'ai avancé ici aussi.
dans le formulaire pour mettre a jour les infos dans la bdd, j'ai ceci concernant les champs pour les photos (4* le meme avec des identifiants différents)

<label for="photo1" class="texte">Choix de la photo 1 :</label><br />
        <p class="scroll">
          <?php
      if ($handle = opendir('images/'))
      {
      while (false !== ($file = readdir($handle)))
        {
        echo "$file  <br>";?>
<input type="radio" name="photo1" id="photo1" value="<?php echo "images/".$file; ?>" />
        <?php }
        closedir($handle);
      }
      ?>
        </p>

j'obtiens donc une zone de texte d'espace limité et avec scrollbar (pour que ma page ne s'étende pas a l'infini au plus il y a d'images listées) et des boutons radio a cocher en focntion de l'image selectionnée. ca marche nickel autant pour créer que pour updater les pages.

question : je n'arrive pas a modifier le code pour qu'il garde l'image cochée sur la page d'update.
si c'etait une liste faite a la main, il suffirait que l'inclue l'information "checked" a coté de la bonne image, mais vu que c'est une liste dynamique... et que l'image checked est focntion de ce qui a été mémorisé dans la bdd, j'ignore comment faire.
des idées ?

#15 Re : Forum Général PHP » Pb Identification » 03-01-2011 21:12:38

Salut a tous,
plutôt que d'ouvrir une nouvelle discussion sur le même thème (ou presque), je poursuis celle ci.

j'ai ma page formulaire (login-password) qui va vérifier dans ma base de données et permet (ou pas) l'accès aux pages privées. là variable de session MM_Username retient automatiquement le login de l'utilisateur.
le système fonctionne bien et je ne pense pas le changer.

mais j'aimerais pouvoir garder en mémoire de session l'id unique de l'utilisateur. qu'il faut donc aller chercher dans la base de donnée, juste a coté du login, au moment de la connexion.

et là je bloque. l'aller se passe bien (vérification du login-pw vers la bdd), mais pas le retour (prise en mémoire de la valeur id de la bdd vers une variable de session).
quels sont les codes actuels dont vous avez besoin pour me conseiller  (je veux pas vous flooder avec des codes inutiles) ?

#16 Re : Forum Général PHP » formulaire et date » 03-01-2011 20:58:25

ok. je suis un double imbé...e wink
désolé.

bien, avec ce code

<input name="dateupdate" type="hidden" id="dateupdate" value="<?php $date = date('D j-M-Y H:i:s')  ; echo $date ?>" />

j'arrive a avoir une date et une heure. j'ai remplacé partout les NOW() que j'avais mis et utilisé cette fonction autant pour dateauteur que pour dateupdate. mais j'ai du configurer la base mysql en "varchar (30)" au lieu de "datetime". pas grave tant que ca fonctionne.

nickel, un probleme de résolu et non des moindres.
un grand merci a tous les intervenants pour les conseils.

#18 Re : Forum Général PHP » formulaire et date » 03-01-2011 20:58:25

xTG a écrit :

NOW() est une fonction SQL et non PHP. ^^'
L'équivalent en PHP est : date("Y-m-d")

mon dieu mais quel c.. je suis.
voila une tres belle preuve de mon niveau en programmation wink
huhummm bon...

je reprend mes tests.

#19 Re : Forum Général PHP » formulaire et date » 03-01-2011 20:58:25

des que j'arrive sur la page avec le formulaire de mise a jour des données, le message d'erreur s'inscrit.

est ce qu'il est possible de ne pas travailler dans les scripts php de mise a jour de la bdd, script alimenté par le formulaire ?
mais de travailler directement sur le script de formulaire ?
j'ai une ligne pour la valeur "dateupdate", une ligne cachée (ca doit etre du html cette partie ci)

<input name="dateupdate" type="hidden" id="dateupdate" value="" />

et insérer la valeur "now()" dedans directement ?

<input name="dateupdate" type="hidden" id="dateupdate" value=NOW() />

evidemment ca ne marche pas. (trop simple)

<input name="dateupdate" type="hidden" id="dateupdate" value="NOW()" />

non plus, la bdd ne tient pas compte de la modification, mais ca ne plante pas.

<input name="dateupdate" type="hidden" id="dateupdate" value="<?php NOW() ?>" />

j'obtiens

<input name="dateupdate" type="hidden" id="dateupdate" value="
Fatal error: Call to undefined function NOW() in D:\sites\WAMP\www\fablc3\admin-page-update00.php on line 206

cette fonction m'aura embetté jusqu'au bout.

#20 Re : Forum Général PHP » php gestion d'images » 10-01-2011 17:35:27

ok ca marche.
ca me rassure de voir que je ne suis pas le seul a me planter dans l'écriture wink

ok donc :
j'ai mon formulaire pour aller chercher les images sur le PC
je renomme la photo "nom-1-11.jpg" d'apres le titre de la page, un numéro d'ordre sur la page, et j'ai rajouté un no aléatoire de 2 chiffres pour éviter d'ecraser par erreur une autre image qui aurait malencontreusement le meme nom.
cette photo est envoyée dans le répertoire au nom de l'utilisateur, tous ces repertoires etant regroupés dans /images/

ca marche. et ca marche tres bien meme. ca avance. super. (un grand merci deja pour cette partie).

maintenant, il me reste a mettre au point la suite : permettre a l'utilisateur de retrouver l'image dans son repertoire, et envoyer son URL relative via formulaire vers la base de donnée concernée. (pour pouvoir afficher l'illustration a coté du texte de la page selectionnée).

la fonction glob() ne me semble pas correspondre (en fait j'ai pas tout compris sur les exemples trouvés sur les sites)
la fonction readdir() me permet de lister lineairement le contenu d'un directory. ca peut aider si j'arrive a coupler cela avec une liste a cocher ou un menu déroulant de formulaire.
au travail...

#21 Re : Forum Général PHP » formulaire et date » 03-01-2011 20:58:25

je suis de plus en plus largué par cette discussion je pense

la fonction echo est entre les bornes "body" de ma page, alors que le code php qui contient le sprintf est bien avant le "head". donc ca voudrait dire que la condition du sprintf n'est jamais vraie ou n'a pas lieu.

bon... qu'est ce qui foire dans mon code alors ? ou cette fichue erreur se produit elle ?????
qu'est ce qu'il faut que je fasse pour que ce champ "dateupdate" accepte la valeur de la fonction NOW() ????

j'ai comme l'impression que cette question (que je pensais stupide) est plus compliquée que prévue...

#22 Re : Forum Général PHP » php gestion d'images » 10-01-2011 17:35:27

ok je me doutais avoir fait une erreur d'ecriture. wink
par contre avec cette ligne ainsi corrigée, il m'indique une "parse error"

Parse error: parse error in D:\sites\WAMP\www\img-add.php on line 5

glob ou readdir, ok je fais une recherche la dessus, merci.

#23 Re : Forum Général PHP » php gestion d'images » 10-01-2011 17:35:27

ok, voici deux avis tres clairs qui éliminent définitivement l'option base de donnée. c'est vrai qu'alourdir une base de donnée et la ralentir n'est pas une bonne option.

créer un dossier par utilisateur me semble une bonne idée. je vais creuser la question. mais au pire je peux regrouper toutes les images uploadées sur un meme dossier /image/ sans que cela soit une grosse difficuleté. (mais moins bien classé je l'admet).

quelques questions techniques maintenant :

1.  la navigation sur le serveur
je fais completer les pages (des champs "texte" de la base de donnée) via un formulaire.
si les photos sont dans la base de donnée (option écartée), je peux inclure dans le formulaire un menu deroulant dont le contenu sera la liste des images (liste d'un champ de la base de donnée).
si les photos sont dans un directory sur le serveur, comment l'utilisateur pourrait selectionner la photo qu'il lui faut ? autrement dit, je dois, via un formulaire, faire selectionner une photo sur le seveur... et envoyer son URL relative dans le champ de la base de donnée.

est ce possible ? un menu déroulant qui listerait le contenu d'un directory et pas le contenu d'un champ de bdd ?
(menu deroulant ou liste a cocher ou autre moyen de selectionner la photo voulue).

2. je suppose que je dois utiliser une fonction "define" pour créer et définir le directrory ou placer les images sur le serveur. j'ai testé ca marche dans une certaine mesure

define('TARGET', 'images/');

ceci fonctionne mais pour un seul directory global. si je veux créer un directory par personne, je dois utiliser une variable de session avec le username (plus parlant que un no abstrait venant de la base de donnée), ce qui devrait donner

define('TARGET', 'images/'$_SESSION['MM_Username']'/');

mais ca ne marche pas. une erreur dans l'ecriture probablement ????

merci d'avance wink

#24 Forum Général PHP » php gestion d'images » 10-01-2011 17:35:27

himron
Réponses : 17

salut a tous,

j'ai besoin de vos avis

sur mon site, j'ai des pages dynamiques (php, mysql). sur ces pages, je veux pouvoir donner la possibilité aux auteurs de placer 1 a 4 images d'illustration (tailles et volume limités).
ces images devront etre uploadées du PC local  et identifiées dans la base reprenant les pages.

j'ai donc je pense deux possibilités
- soit uploader les images vers le serveur dans un fichier bien défini. mais dans ce cas, comment permettre aux auteurs des pages, de selectionner ensuite leurs images sur le serveur, et de référencer les URL dans le champ adéquat de la base de donnée des pages ? il faudrait un menu déroulant reprenant les images sur le serveur ou une popup permettant de visualiser ces images et de les selectionner en envoyent l'url vers la bdd...

- soit envoyer l'image directement dans la bdd (via un champ BLOB)... mais dans ce cas il faut pouvoir controler strictement l'image au moment de l'upload parce que ensuite difficile de la reprendre pour en réduire les dimensions (par exemple).

j'aimerais vos avis (le plus pratique, le plus facile a mettre en oeuvre etc) et savoir dans quelle voie vous aurez le plus simple a guider mes pas vers sa concretisation.

merci d'avance.

#25 Re : Forum Général PHP » formulaire et date » 03-01-2011 20:58:25

ah ok je vois. ce n'est cependant pas un probleme actuellement. le candide ne l'est pas tellement : il développe son site en local. aucun risque donc de géner les visiteurs avec des codes foireux... vu qu'il n'y a pas de visiteurs a part moi wink

donc l'afficher en commentaire ou visible, le resultat est le meme normalement (si je me goure pas dans mon raisonnement) : j'ai un message d'erreur (repris ci dessus )

Notice: Undefined variable: updateSQL in D:\sites\WAMP\www\fablc3\admin-page-update.php on line 139

je reviens donc a ma question : la variable est indéfinie, qu'est ce que ca m'apprend et en quoi cela peut il résoudre mon probleme de NOW() dans mon formulaire ?


merci d'avance

Pied de page des forums

Propulsé par FluxBB