PHP|Débutant :: Forums

Advertisement

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

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

#26 Re : Javascript » Pb de unescape() dans un script php appelé par Ajax » 27-12-2009 22:45:57

Ce dont je suis sûr, c'est que mon hébergeur utilise utf-8.
J'ai donc, comme tu m'as dit, essayé de mettre le charset à utf-8 dans mon en-tête html:


<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 

Et ça me supprime toujours le premier accent et ce qui suit...

Mais faut-il utiliser escape() ?

Ralph303

#27 Javascript » Pb de unescape() dans un script php appelé par Ajax » 27-12-2009 22:45:57

Ralph303
Réponses : 4

Bonsoir,

j'ai remarqué que qd je passais des arguments qui contiennent des caractères accentués à un script php via une requête Ajax, ça ne marchais pas.
J'ai donc utilisé la fonction escape...

Le pb, c'est que qd je récupère l'argument dans mon script PHP avec $_GET['value'], les caractères accentués ont été remplacés par des '?'...
Et encore, seulement sur mon serveur local avec Wamp.
Sur mon hébergeur, l'accent et ce qui le suit sont purement et simplement effacés...

Logiquement, il faut utiliser unescape($_GET['value']); pour récupérer les accents.

Mais je suis dans un script PHP, et la fonction unescape n'existe pas en PHP.

Je sais utiliser des variables PHP dans un JavaScript, mais pas récupérer des variables JavaScript dans un script PHP.

Comment faut-il faire ?

Merci d'avance !

Ralph303

#28 Re : Forum Général PHP » Bug trivial avec variable de session » 27-12-2009 13:57:54

Oui, effectivement, j'ai mis la checkbox dans mon formulaire d'authentification et je teste $_POST['souvenir'] dans login.php tout simplement.
Comme j'ai fais pas mal de JavaScript avec Ajax dans un autre formulaire, j'ai tendance à vouloir tout faire en JavaScript et à compliquer les
choses en fin de compte...

Merci encore, xTG ! smile

Ralph303

#29 Re : Forum Général PHP » Bug trivial avec variable de session » 27-12-2009 13:57:54

Ah d'accord xTG !

Merci pour cette précision ! smile

Je vais réfléchir à une autre manière de procéder...

Ralph303

#30 Forum Général PHP » Bug trivial avec variable de session » 27-12-2009 13:57:54

Ralph303
Réponses : 4

Bonjour,

j'ai un bug du style "c'est un bug du compilateur !"... (C'est ce que je disais qd j'étais étudiant).
Non, en fait, il y a un truc qui m'échappe:

Je voudrais utiliser les cookies pour que lorsque l'utilisateur coche la case "Se souvenir de moi", le site le reconnaisse et le logge direct
sans avoir à taper son pseudo et son mot de passe. Et lorsque la case est décochée, ça efface le cookie.
C'est donc un cookie qui s'appelle "pseudo" et qui a pour valeur le pseudo.

dans index.php, j'ai:


<?php
  // Déclaration des variables de session
  session_start();
  $_SESSION['souvenir']=false;
?>
 

Et, plus loin, le formulaire d'authentification et la case à cocher gérée en JavaScript:


<form action="login.php" method="post">
     <input type="text" name="pseudo" value="pseudo" style="{color:#999999; font-style:italic;}" onFocus="focusPseudo(this);" onBlur="blurPseudo(this);">
     <input type="password" name="password" value="mot de passe" style="{color:#999999; font-style:italic;}" onFocus="focusPasswd(this);" onBlur="blurPasswd(this);">
     <input type="submit" value="Entrer">
</form>
<div id="membres_remember">
     Se souvenir de moi
</div>
<div id="membres_remember_form">
     <form name="remember" action="" method="post">
          <input type="checkbox" name="souvenir" value="1" onclick="se_souvenir()">
     </form>
     <script type="text/javascript">
          function se_souvenir() {
               if(document.remember.souvenir.checked) {
                    // On se souviendra du pseudo
                    <?php
                         $_SESSION['souvenir']=true;
                    ?>
                    alert("<?php echo $_SESSION['souvenir']; ?>");
               }
               else {
                     // On ne se souviendra pas du pseudo
                    <?php
                         $_SESSION['souvenir']=false;
                    ?>
                    alert("<?php echo $_SESSION['souvenir']; ?>");
               }
          }
     </script>
</div>
 

Donc, normalement, dans login.php, la variable de session $_SESSION['souvenir'] contient false si la case n'a pas été cochée et true sinon.
D'autant plus que les alert("<?php echo $_SESSION['souvenir']; ?>"); que j'ai mis dans la fonction se_souvenir() affiche bien 1 lorsque la case
est cochée.

Là où ça ne marche pas, c'est dans login.php appelé par le formulaire d'authentification:


<?php
  session_start();
  if($_SESSION['souvenir']) {
    setcookie("pseudo", $_POST['pseudo'], time()+3600*24*30);
    echo "On s'en souvient";
  }
  else {
    setcookie("pseudo");
    echo "On ne s'en souvient pas";
  }
?>
 

Le bug, c'est que ça m'affiche toujours "On ne s'en souviens pas"... $_SESSION['souvenir'] contient donc toujours false.
Que je ne coche pas, que je coche, que je coche puis décoche, enfin, tous le temps, ça m'affiche "On ne s'en souviens pas".

Alors, j'ai essayé de mettre une chaine de caractères dans $_SESSION['souvenir'] puis de l'afficher, ça m'affiche toujours "false" ou "faux" ou
ce que je met dans cette variable de session dans le cas où la case n'est pas cochée dans ma fonction se_souvenir()...

Alors que si je met un alert dans le cas ou elle est cochée, ça m'affiche bien l'alert.

Je ne comprend pas pourquoi ça ne marche pas.
Merci pour votre aide !

Ralph303

#31 Re : Forum Général PHP » Pb avec update » 22-12-2009 00:08:25

Cool !

Mais pour améliorer la lisibilité de ton code tu peux utiliser les simples quotes:


echo '<input type="submit" name="button" id="submit" value="submit" />';
 

Ralph303

#32 Re : Forum Général PHP » Pb avec update » 22-12-2009 00:08:25

Comme je le disais avant, il y a gros pb de logique dans ton code.
A chaque tuple de ton select avec la boucle while, tu mets à jour les tuples dont les ids vont de 2 à 4 avec la boucle for...
Le refaire à chaque fois ca sert à rien.

Si j'ai bien compris, ce que tu veux faire, c'est concaténer les champs A et D avec un "-" entre ?

Dans ce cas, la boucle for ne sert à rien...

Mais je ne vais pas écrire le code à ta place...

Bon courage !

Ralph303

#33 Re : Forum Général PHP » Pb avec update » 22-12-2009 00:08:25

Bonjour !

Il me semble qu'il y ait un pb de logique dans ton code.
Lors du UPDATE, dans la clause WHERE, tu mets id='$dat[id]', or c'est donc toujours sur le même tuple que tu fais le UPDATE...

Peut être que si tu mettais WHERE id='$data1', cela marcherais mieux...

Ralph303

#34 Re : Forum Général PHP » Calculer age précis » 09-12-2009 16:27:54

Moi, j'ai une solution que j'utilise et que j'ai piquée dans un bouquin:


  // Calcul de l'âge
 
  $day=intval($journaiss);
  $month=intval($moisnaiss);
  $year=intval($anneenaiss);
             
  $bdayunix=mktime(0, 0, 0, $month, $day, $year);
  $nowunix=time();
  $ageunix=$nowunix-$bdayunix;
  $age=floor($ageunix / (365*24*60*60));
 

Voilà...

Ralph303

#35 Re : Forum Général PHP » Pb d'éxécution PHP avec Wamp 2.0 sous Windows 7 » 04-12-2009 05:46:24

C'est impeccable !

Vous aviez raison, même avec un seul espace avant <? session_start(); ?>, ça ne marchait pas...
J'ai placé cette ligne au tout début de mes scripts et ça marche ! big_smile

Un grand merci à tous ! Et vive ce forum qui m'a souvent aidé ! smile

Souvent, je regarde les posts pour voir si je peux aider qq'un, moi aussi, mais je suis débutant et je ne comprend pas toujours... hmm

Voilà, maintenant je fonctionne avec Wamp5 et notepad++ sous Windows 7.

Encore merci !

Ralph303

#36 Re : Forum Général PHP » Pb d'éxécution PHP avec Wamp 2.0 sous Windows 7 » 04-12-2009 05:46:24

Bon, j'ai installé Wamp5, et ça marche !
Apache et MySQL marchent !! big_smile

J'ai plus que le pb des variables de session, pb que je n'avais pas avec EasyPHP 2.0b1 et que je n'ai pas avec mon hébergeur...

Alors, j'ai une question simple:
Faut-il écrire session_start(); au début de chaque pages de script ou suffit-il de l'écrire une fois pour toutes dans l'index.php ?

Voilà, il n'y a plus que ce pb à résoudre, et c'est bon ! cool

Ralph303

#37 Re : Forum Général PHP » Pb d'éxécution PHP avec Wamp 2.0 sous Windows 7 » 04-12-2009 05:46:24

Oui, voici le code:


  <?php
    // Déclaration des variables de session
    session_start();
    $_SESSION['nomsite']="123kiss.fr";
    $_SESSION['boite_de_reception']="Boîte de réception";
    $_SESSION['logge']=false;
    $_SESSION['lien']="index.php";
 

Et c'est avec EasyPHP 1.8, le seul qui marche. Les autre versions d'EasyPHP ne marchent pas (le serveur MySQL ne démarre pas et avec
Wamp 2.0 ça ne marche pas non plus.).
Je suis désespéré, aucun serveur local ne veux marcher. Je ne peux plus travailler. sad

#38 Re : Forum Général PHP » Pb d'éxécution PHP avec Wamp 2.0 sous Windows 7 » 04-12-2009 05:46:24

Oui, il y a <html>, je l'ai enlevé et ça ne marche toujours pas...

#39 Re : Forum Général PHP » Pb d'éxécution PHP avec Wamp 2.0 sous Windows 7 » 04-12-2009 05:46:24

Merci pour ta réponse.

En fait, index.php est le point d'entrée de mon site et la première instruction exécutée est session_start();

Voici le début de mon code:


<html>
  <?php
    // Déclaration des variables de session
    session_start();
    $_SESSION['nomsite']="123kiss.fr";
    $_SESSION['boite_de_reception']="Boîte de réception";
    $_SESSION['logge']=false;
    $_SESSION['lien']="index.php";
 

Donc, il n'y a rien avant...
Et mes variables de session ne sont pas définies.

Sinon, pour my.ini et php.ini, je me demande où ils peuvent se trouver vu que j'efface les répertoire d'installation avant d'installer une nouvelle
version de EasyPHP ou de Wamp.

#40 Re : Forum Général PHP » Pb d'éxécution PHP avec Wamp 2.0 sous Windows 7 » 04-12-2009 05:46:24

Ooooops ! J'ai une erreur dans mon code, désolé, c'est:


if($num_result==0) {
    echo "Il n'y a pas d'inscrits";
}
 

Et non pas avec le !...

C'est pour ça que ça n'affichait pas "Il n'y a pas d'inscrits"...

Donc, j'ai essayé avec Wamp 2.0, EasyPHP 2.0b1, EasyPHP 3.0 et EasyPHP 5.3.0.
Tous refusent de démarrer le serveur MySQL ! (Pour Wamp, je ne suis pas sûr, mais d'après ce que j'ai dit précédement, ça semble être le cas.)

Donc, j'ai installé EasyPHP 1.8 et là ça marche !!
C'est une ancienne version que j'utilisais avant, lorsque j'étais un vrai débutant et que je n'utilisais pas encore les variables de session.
Mais, justement, à cause des variables de session, j'ai ces Warning avec mon site:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\program files (x86)\easyphp1-8\www\index.php:2) in c:\program files (x86)\easyphp1-8\www\index.php on line 4

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files (x86)\easyphp1-8\www\index.php:2) in c:\program files (x86)\easyphp1-8\www\index.php on line 4

Comment éviter ces warnings et faire marcher les variables de session ? Car, ça ne marche plus, elles sont toutes 'undefined index'...

Merci pour votre aide.

Ralph303

#41 Forum Général PHP » Pb d'éxécution PHP avec Wamp 2.0 sous Windows 7 » 04-12-2009 05:46:24

Ralph303
Réponses : 12

Bonjour !

Décidément, j'ai de gros pbs avec mes serveurs locaux...

Ayant eu de gros pbs avec EasyPHP 2.0b1 qui refusait de me démarrer le serveur Apache, j'ai décidé d'installer Wamp 2.0.
Et là, je suppose que c'est le serveur MySQL qui foire.
Un peu de code:


<?php
  echo "test1";

  // connexion à la base
  $db = mysql_connect('localhost', 'user', 'passwd')  or die('Erreur de connexion '.mysql_error());
     
  // sélection de la base  
  mysql_select_db('ma_base', $db)  or die('Erreur de selection '.mysql_error());  
       
  // On définit le charset
  mysql_query('SET NAMES utf8') or die('Erreur de selection '.mysql_error());
       
  // On écrit la requête sql
  $sql="SELECT userid, pseudo FROM inscription";
   
  // On récupère la liste des inscrits
  $result=mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  $num_result=mysql_num_rows($result);
 
  if(!$num_result==0) {
    echo "Il n'y a pas d'inscrits";
  }
  else {
    for($i=1; $i<=$num_result; $i++) {
      $pseudo=mysql_result($result, $i, 'pseudo');
      echo $pseudo;
    }
  }
  echo "test2";
 
//  mysql_close();  // on ferme la connexion  

?>
 

Qd je lance ceci, ça m'affiche test1test2.
Mais ça ne m'affiche pas "Il n'y a pas d'inscrits", comme ça devrait le faire vu que ma table est vide.

Si je retire le commentaire avant mysql_close(); IE8 m'affiche "Internet Explorer ne peut pas afficher cette page web".

Manifestement, il s'agit d'un pb MySQL...

Je ne sais plus quoi faire, j'ai EasyPHP 2.0b1 qui refuse de faire démarrer le serveur Apache, et Wamp 2.0 qui me pose pb avec MySQL !
C'est dommage, car Wamp s'installe sur C:\wamp et ça évite pas mal de pbs que j'ai déjà eu avec les droits d'accès Administrateur.

Voilà, merci pour votre aide.

Ralph303

#42 Re : Forum Général PHP » Pb étrange avec EasyPHP 2.0b1 sous Windows 7 » 02-12-2009 11:53:43

Bon, j'ai installé Wamp et ça marche car ça affiche bien la page index.php par défaut.

Mais il m'arrive encore un truc étrange...
Lorsque j'écris mon code avec des erreurs, ça m'affiche bien les erreurs.
Mais lorsque le code est correct, ça m'affiche "Internet Explorer ne peut pas afficher cette page web".

Voici un code simple qui affiche la liste des pseudos des inscrits de ma table "inscription":


<?php
  // connexion à la base
  $db = mysql_connect('localhost', 'user', 'passwd')  or die('Erreur de connexion '.mysql_error());
     
  // sélection de la base  
  mysql_select_db('ma_base', $db)  or die('Erreur de selection '.mysql_error());  
       
  // On définit le charset
  mysql_query('SET NAMES utf8') or die('Erreur de selection '.mysql_error());
       
  // On écrit la requête sql
  $sql="SELECT userid, pseudo FROM inscription";
   
  // On récupère la liste des inscrits
  $result=mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  $num_result=mysql_num_rows($result);
 
  if(!$num_result==0) {
    echo "Il n'y a pas d'inscrits";
  }
  else {
    for($i=0; $i<=$num_result; $i++) {
      $pseudo=mysql_result($result, $i, 'pseudo');
      echo $pseudo;
    }
  }
 
  mysql_close();  // on ferme la connexion  
?>
 

Voilà, c'est un code qui devrait marcher, pourtant...

Sinon, j'utilise dorénavant notepad++ pour éditer mon code, et c'est vrai qu'il est génial ! Mieux que Dreamweaver !

Merci pour votre aide.

Ralph303

#44 Re : Forum Général PHP » Pb étrange avec EasyPHP 2.0b1 sous Windows 7 » 02-12-2009 11:53:43

Bon, maintenant, j'ai un pb avec EasyPHP 2.0b1...

Lorsque je le désinstalle/réinstalle, il marche la première fois que je le lance, puis, le serveur Apache n'arrive plus à démarrer.
Je fais "Démarrer" et il passe en jaune puis en rouge.
J'ai regardé dans les logs, il n'y a rien de spécial...
J'ai pas de chance.

Je vais essayer WAMP...

Sinon, pour Dreamweaver, je n'utilise que l'éditeur de code car j'aime bien sa coloration syntaxique, mais, évidement, je ne fais pas
de wysiwyg, car, effectivement, il génère un code douteux.

Ralph303

#45 Re : Forum Général PHP » Pb étrange avec EasyPHP 2.0b1 sous Windows 7 » 02-12-2009 11:53:43

J'ouvre le navigateur et je tape l'adresse du localhost: http://localhost/index.php
Je n'y comprend rien...

J'ai donc été obligé de désinstaller/réinstaller EasyPHP et maintenant, ça m'affiche bien mon site...
Mais, effectivement, lorsque je supprime tous les fichiers, il me l'affiche encore...

Est-ce que tu utilise le www qui se trouve dans program files ou as-tu modifié le path afin de pouvoir écrire dedans sans avoir à lancer
ton éditeur en tant qu'administrateur ?

#46 Forum Général PHP » Pb étrange avec EasyPHP 2.0b1 sous Windows 7 » 02-12-2009 11:53:43

Ralph303
Réponses : 7

Bonjour !

J'avais eu un pb du même genre avec Windows 7:
Je n'arrivais pas à écrire mes fichiers php dans le répertoire www avec Dreamweaver car je n'avais pas les droits d'administrateur.
Alors, j'ai utilisé DevPHP, un autre éditeur, qui "semblait" réussir à écrire dans www car il me gardait toujours la même version de mon code,
et Internet Explorer m'affichait toujours la dernière version de mon site. Donc, tout semblait rouler...

Or, je sauvegarde régulièrement les dernières versions de mon site dans "Mes documents" sous la forme www_jj_mm_aa_hh_mn.
Et j'ai remarqué que, dans tous ces répertoires, il s'agissait toujours de la version que j'avais gardée dans ma clé USB depuis le crash de
mon ancien ordi avant d'acheter le nouveau qui tourne donc sous Windows 7.
Donc, j'avais perdu une journée de travail (seulement, heureusement...).

Et, mon sauveur a été xTG, usager de ce forum, qui m'a dit de faire un clic droit sur l'icône de Dreamweaver et de cliquer sur "exécuter en
tant qu'administrateur". Ce qui autorise à écrire dans "www" malgré le fait qu'il soit dans "program files"...

Donc, j'en arrive à mon pb actuel qui est tout à fait étrange:
Tant que je travaillais sur la même version de mon site, tout allait bien. Code à jour dans Dreamweaver et dans Internet Explorer.
Mais j'ai effacé index.php pour faire un petit test, et lorsque j'ai recopié l'ancienne version de "Mes documents" vers "www", c'est toujours le
petit test qui s'affiche !!!

Alors que, lorsque je l'ouvre avec Dreamweaver ou même avec le bloc note, j'ai bien le code de l'ancienne version que je viens de restaurer
et non pas le petit test !

Alors, j'ai essayé pleins de trucs:
J'ai effacé l'historique d'Internet Explorer, j'ai installé Firefox sans importer l'historique, j'ai même effacé purement et simplement tous les
fichiers de "www", et ça m'affiche toujours le petit test dans Internet Explorer ou Firefox !
Alors qu'il n'y a plus d'index.php !

Je n'y comprends rien ! Windows 7 est maudit !

A l'aide !

Merci d'avance !

Ralph303

#47 Re : Forum Général PHP » Exécuter le submit d'un formulaire dans la même page: valeur d'une lis » 14-01-2010 15:59:32

Merci pour la piste !
J'ai pu voir que si l'on clique sur le bouton OK, cela recharge la page et $_POST['test'] est défini cette fois-ci et cela m'affiche la bonne valeur.
Mais tant qu'on a pas cliqué, ça exécute le code php situé après sans attendre que l'on clique et donc $_POST['test'] est indéfini...

empty($_POST['test']) m'a fait penser à essayer isset($_POST['test']) mais cela semble ne pas marcher sur les tableaux.

Existe-t-il une fonction pour vérifier si l'index d'un tableau est défini ?

Je voudrais donc  éviter ce message d'erreur qui s'affiche même si j'utilise empty:

Notice: Undefined index: test in C:\Program Files (x86)\EasyPHP 2.0b1\www\index.php on line 11

Est-il possible de n'exécuter le code php qui suit qu'après avoir cliqué sur le bouton OK ? (Sans avoir à appeler un fichier php avec action).

Merci !

Ralph303

#48 Re : Forum Général PHP » protection d'une page web avec un mot de passe php » 30-11-2009 23:10:32

Bonsoir !

Je vais essayer de répondre à ta question:

Effectivement, le lien entre ces deux pages est l'attribut "action".
Il est normal que qq soit le mot de passe, la page acces.php appelle la page page1.php car il n'y a pas encore eu de contrôle du mot de passe.

C'est donc dans page1.php que tu dois faire le contrôle du mot de passe en php et décider de ce qui doit se passer par la suite.

En fait, il faut faire comme dans le tuto qui est présenté plus haut...

Ralph303

#49 Forum Général PHP » Exécuter le submit d'un formulaire dans la même page: valeur d'une lis » 14-01-2010 15:59:32

Ralph303
Réponses : 19

Bonjour !

Je souhaite exécuter le code php du traitement d'un formulaire dans la même page, cad à la suite.
Un exemple:


<form method="post" action="#">
<select name="test">
    <option value="test1">
    <option value="test2"> 
</select>
<input type="submit" value="OK">
</form>
<?php
     // code php du traitement
?>
 

Voilà, dans le code php du traitement, je souhaite récupérer la valeur du "select".
Mais comme la méthode est post, celà ne doit pas être $_POST['test']; car on n'appelle pas un autre fichier .php avec action="#"...
D'ailleurs, j'ai essayé, et ça me fait undefined index 'test'...

Donc, comment récupérer la valeur sélectionnée ?

Merci d'avance !

Ralph303

#50 Re : Javascript » Ouverture d'une nouvelle fenêtre après un clic sur Google AdSense. » 29-11-2009 20:59:14

OK ! Merci Pierrot !

Je me doutais qu'il s'agissait d'un truc comme ça...

Mais il y a un truc que je trouve bizarre, c'est que sur certains autres ordis que le mien, ça ouvre une nouvelle fenêtre lorsqu'on clique sur
une pub Google AdSense, alors que sur le mien, ca écrase mon site...

Je ne sais pas quoi faire, est ce que je dois ouvrir une nouvelle fenêtre "artificiellement" avec window.open ou laisser comme ça ?
Je pose la question à ceux qui ont mis des pubs Google sur leur site.

Ralph303

Pied de page des forums

Propulsé par FluxBB