IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Modifier mon code de mysql en mysqli avec des include et require


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut Modifier mon code de mysql en mysqli avec des include et require
    Bonsoir,

    Je galère depuis 1H pour modifier mon code, en degageant MYSQL au profit de MYSQLI et il semblerait que les fichiers include ou inquire me posent des problemes.

    Fichier conx.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    function getmicrotime(){   list($usec, $sec) = explode(" ",microtime());   return ((float)$usec + (float)$sec);  }
    $Date_start = getmicrotime();
     
    $DBhost  = "xxxx"; 
    $DBowner = "xxxxx"; 
    $DBpw    = "xxxxxx"; 
    $DBName  = $DBowner;
    $mysqli = new mysqli($DBhost, $DBowner, $DBpw, $DBName);
     
    $suff_table="extra2_";



    config.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    <?php
    $mysqli->real_query("SELECT * FROM `".$suff_table."config` where idC='1'");   // Requête
    $res = $mysqli->use_result();
    while ($cl = $res->fetch_assoc()){
    .......
    $base_site='http://'.$url_index.'/'.$rep_extranet.'/accueil.php';
    $base_site_err='http://'.$url_index.'/'.$rep_extranet.'/';
    }
     
    function enleveaccents($chaine, $charset='utf-8')
    {
        $chaine = htmlentities($chaine, ENT_NOQUOTES, $charset);
        $chaine = preg_replace('#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $chaine);
        $chaine = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $chaine); // pour les ligatures e.g. '&oelig;'
        $chaine = preg_replace('#&[^;]+;#', '', $chaine); // supprime les autres caract�res
        $chaine=str_replace(' ','-',$chaine);
        return $chaine;
    }
     
    function enleveaccents_0($chaine){$chaine = htmlentities($chaine, ENT_NOQUOTES, "UTF-8");
    if ( !function_exists('htmlspecialchars_decode')){function htmlspecialchars_decode($chaine){return strtr($chaine, array_flip(get_html_translation_table(HTML_SPECIALCHARS)));}}return $chaine;}
     
    function enleveaccents_1($str, $charset='utf-8')
    	{
    	$url = $str;
        $url = preg_replace("#'#", "_", $url);
        $url = preg_replace("# #", "_", $url);
        $url = preg_replace('#Ç#', 'C', $url);
        $url = preg_replace('#ç#', 'c', $url);
        $url = preg_replace('#è|é|ê|ë#', 'e', $url);
        $url = preg_replace('#È|É|Ê|Ë#', 'E', $url);
        $url = preg_replace('#à|á|â|ã|ä|å#', 'a', $url);
        $url = preg_replace('#@|À|Á|Â|Ã|Ä|Å#', 'A', $url);
        $url = preg_replace('#ì|í|î|ï#', 'i', $url);
        $url = preg_replace('#Ì|Í|Î|Ï#', 'I', $url);
        $url = preg_replace('#ð|ò|ó|ô|õ|ö#', 'o', $url);
        $url = preg_replace('#Ò|Ó|Ô|Õ|Ö#', 'O', $url);
        $url = preg_replace('#ù|ú|û|ü#', 'u', $url);
        $url = preg_replace('#Ù|Ú|Û|Ü#', 'U', $url);
        $url = preg_replace('#ý|ÿ#', 'y', $url);
        $url = preg_replace('#Ý#', 'Y', $url);
    	$url = stripslashes($url);
    	return ($url);
    	}
     
    function enleveaccents_2($str, $charset='utf-8')
    	{
    	$url = $str;
        $url = preg_replace('#Ç#', 'C', $url);
        $url = preg_replace('#ç#', 'c', $url);
        $url = preg_replace('#è|é|ê|ë#', 'e', $url);
        $url = preg_replace('#È|É|Ê|Ë#', 'E', $url);
        $url = preg_replace('#à|á|â|ã|ä|å#', 'a', $url);
        $url = preg_replace('#@|À|Á|Â|Ã|Ä|Å#', 'A', $url);
        $url = preg_replace('#ì|í|î|ï#', 'i', $url);
        $url = preg_replace('#Ì|Í|Î|Ï#', 'I', $url);
        $url = preg_replace('#ð|ò|ó|ô|õ|ö#', 'o', $url);
        $url = preg_replace('#Ò|Ó|Ô|Õ|Ö#', 'O', $url);
        $url = preg_replace('#ù|ú|û|ü#', 'u', $url);
        $url = preg_replace('#Ù|Ú|Û|Ü#', 'U', $url);
        $url = preg_replace('#ý|ÿ#', 'y', $url);
        $url = preg_replace('#Ý#', 'Y', $url);
    	return ($url);
    	}
     
     
    function code($txt)
    {
    $txt = htmlentities($txt, ENT_QUOTES, "UTF-8");
    $txt = preg_replace('`\&lt;b&gt;(.+)\&lt;/b&gt;`isU', '<b>$1</b>', $txt); 
    $txt = preg_replace('`\&lt;b style=&quot;color:red&quot;&gt;(.+)\&lt;/b&gt;`isU', '<b style="color:red">$1</b>', $txt); 
    $txt = preg_replace('`\&lt;b style=&quot;color:green&quot;&gt;(.+)\&lt;/b&gt;`isU', '<b style="color:green">$1</b>', $txt); 
    $txt = preg_replace('`\&lt;b style=&quot;color:blue&quot;&gt;(.+)\&lt;/b&gt;`isU', '<b style="color:blue">$1</b>', $txt); 
    $txt = preg_replace('`\&lt;p&gt;(.+)\&lt;/p&gt;`isU', '<p>$1</p>', $txt);
    $txt = preg_replace('`\&lt;ul&gt;(.+)\&lt;/ul&gt;`isU', '<ul>$1</ul>', $txt);
    $txt = preg_replace('`\&lt;li&gt;(.+)\&lt;/li&gt;`isU', '<li>$1</li>', $txt);
    $txt = preg_replace('`\&lt;i&gt;(.+)\&lt;/i&gt;`isU', '<i>$1</i>', $txt);
    $txt = preg_replace('`\&lt;u&gt;(.+)\&lt;/u&gt;`isU', '<u>$1</u>', $txt);
    $txt = preg_replace('`\&lt;div style=&quot;clear:both&quot;&gt;&lt;/div&gt;`isU', '<div style="clear:both"></div>', $txt);
    $txt = preg_replace('`\&lt;img src=&quot;(.+)\&quot; alt=&quot;(.+)\&quot; style=&quot;float:left; margin:0 5px 5px 0&quot;&gt;`isU', '<img src="$1" alt="$2" style="float:left; margin:0 5px 5px 0">', $txt);
    $txt = preg_replace('`\&lt;strike&gt;(.+)\&lt;/strike&gt;`isU', '<strike>$1</strike>', $txt);
    $txt = preg_replace('`&lt;a href=&quot;(.+)\&quot;&gt;(.+)\&lt;/a&gt;`isU', '<a href="$1">$2</a>', $txt);
    $txt = preg_replace('`&lt;a href=&quot;(.+)\&quot; target=&quot;_blank\&quot;&gt;(.+)\&lt;/a&gt;`isU', '<a href="$1" target="_blank">$2</a>', $txt);
    return $txt;
    }
    $copysimple ='<div class="copyright">2014 - 2016 &copy; IOBnet.com - Extranet V15. </div>';

    session.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    <?php
    if (($_GET['action'] == 'logout'))
    {
    	$utlog=$_GET['utlog'];
    	$date_compare = strtotime(date("Y-m-d"));
    	$date_con = strtotime(date("Y-m-d H:i:s"));
    	$mysqli->real_query("SELECT * FROM `".$suff_table."journal` where idUT='$utlog' and date='$date_compare' and connexion<>''");
    	$res = $mysqli->use_result();
    	$nbres=mysql_num_rows($res);
    	if ($nbres<>"0"){$mysqli->query("UPDATE `".$suff_table."journal` SET `deconnexion` = '$date_con' where idUT='$utlog' and date='$date_compare' and connexion<>''");}
    	$_SESSION = array();
    	session_destroy();
    	header('Location: '.$base_site_err);
    }
    if (($_GET['action'] <> 'logout'))
    {
       if (isset($_POST) && (!empty($_POST['username'])) && (!empty($_POST['password'])))
       {
    	   extract($_POST);
    	   $cmail = (isset($_POST['username'])) ? $_POST['username'] : '';
       	   $cpass = (isset($_POST['password']))  ? $_POST['password']  : '';
    	   $cpass=md5($cpass);
       }
       else 
       {
       $cmail = $_SESSION['username'];
       $cpass = $_SESSION['password'];
       }
    $mailOK= false;
    if ($cmail<>'')
    {
    	$mysqli->real_query("SELECT * FROM `".$suff_table."utilisateur` where a_mail='$cmail' or a_pseudo='$cmail'");
    	$req = $mysqli->use_result();
    	$nbcon=mysql_num_rows($req);
    	if ($nbcon =="1") 
    	{ 
    	    $data = mysql_fetch_assoc($req);
    		    $idUT=$data['idUT'];
    		    $passdata=$data['a_pass'];
    		     if ($cpass==$passdata and $data['a_acc']=="1") 
    			 {
    				if($data['a_pseudo']==""){$_SESSION['username'] = $data['a_mail'];}else {$_SESSION['username'] = $data['a_pseudo'];}
    				$_SESSION['password'] = $data['a_pass'];
    				$mailOK = true; 
    				$mysqli->query("UPDATE `".$suff_table."utilisateur` SET `a_ip` = '$ip' where idUT='$idUT'");
    				$MB_ip=$data['ip'];
    				$mysqli->query("UPDATE extra_utilisateur SET a_dateconx='".strtotime(date("Y-m-d H:i:s"))."' where idUT='$idUT'");
    				$MB_mail=$data['a_mail'];
    				$MB_pass=$data['a_pass'];
    				$MB_pseudo=$data['a_pseudo'];
                                     .....
     
     
     
     
    				$connexion="ok";
    				if ($MB_idUT<>$id_iobnet)
    				{
    					$date_compare = strtotime(date("Y-m-d"));
    					$date_con = strtotime(date("Y-m-d H:i:s"));
    					$mysqli->real_query("SELECT * FROM `".$suff_table."journal` where idUT='$MB_idUT' and date='$date_compare' and connexion<>''");
    					$res = $mysqli->use_result();
    					$nbres=mysql_num_rows($res);
    					if ($nbres=="0"){$mysqli->query("INSERT INTO `".$suff_table."journal` (idUT, date, connexion,ip) VALUES ('$MB_idUT', '$date_compare', '$date_con', '$ip')");}
    				}
    			}
     
    			if ($cpass<>$passdata) {header('Location: '.$base_site_err.'?error=error');}
    			if ($data['a_acc']=='0') {header('Location: '.$base_site_err.'?error=comptesupprime');}
    		}
    		else {header('Location: '.$base_site);	}
    	}
    	else {header('Location: '.$base_site_err);}
    }
    ?>



    et enfin ma page qui ne veut pas s'ouvrir a cause des include ou require
    accueil.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    session_start();
    include ('conx.php');
    include ('config.php');
    include ('session.php');
    $toto=@$_GET['toto'];
    header('Content-Type: text/html; charset=UTF-8');
    extract($_POST);
     
    include ('menu.php');

    Alors que menu.php appelle aussi une fonction mysqli :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    session_start();
    include ('session.php');
    $mysqli->query("SELECT * FROM `".$suff_table."dem_com` where toto='$toto");
    $com = $mysqli->use_result();
    $nb_com =mysql_num_rows($com);
    echo $nb_com;

    En conclusion a cause du fichier menu.php, la page accueil.php ne s'affiche pas completement, il semblerait que la page bloque au niveau de l'appel de l'include.
    Il ne faut pas quand meme que je rappel le fichier conx.php dans tous les include et require quand meme ?

    Merci pour toute votre aide et si le code ci-dessous est pourri n'hesitait pas, j'ai besoin d'optimiser et de progresser.

    Bonne soirée a tous
    Guillaume

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    il semblerait que
    As-tu vérifié ?

    Déjà le session_start() dans menu.php est à retirer puisque tu l'as déjà accueil.php.
    Ensuite utilise require() plutôt que include() et veille à ce que ton serveur affiche bien toutes les erreurs PHP.
    Également n'utilise pas extract(), c'est une mauvaise pratique.

    Au passage, question de logique d'organisation, je ne vois pas pourquoi la gestion des sessions est dans le fichier "menu".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    Je ne comprends pas tout fonctionnait quand j'avais mysql en lieu et place de mysqli, j'ai voulu mettre a jour et plus rien de fonctionne .....

    J'ai supprimé les session_start() de tous les fichiers, sauf accueil.php, j'ai modifié les include par des require.

    Par contre que puis je utiliser de mieux que le extract(), car il me rend bien service pour toute variable en POST ?

    Enfin, la premiere erreur vient du fichier session, quand je le lance seul, je vois bien qu'il me renvoi vers la bonen page, mais appelée au travers de acuueil.php, j'ai une erreur 500

    Merci pour ton aide

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Utilise $_POST directement... d'ailleurs tu le fais déjà donc ton extract ne sert à rien, par exemple ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       extract($_POST);
    	   $cmail = (isset($_POST['username'])) ? $_POST['username'] : '';
    Au passage cette partie de code ne sert à rien puisque tu as un test une ligne au dessus qui a deja vérifie que $_POST['username'] existe.

    qui ne semble pas
    As-tu contrôlé, vérifié, testé ?
    Dans ton fichier tu as toujours tes fonctions mysql au lieu de mysqli.
    Personnellement j'abandonnerai de toute façon mysqli qui est une plaie pour utiliser PDO qui est tellement plus simple.

    Ecris proprement tes enchainement logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (($_GET['action'] == 'logout'))
    {
    	....
    }
    if (($_GET['action'] <> 'logout'))
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (($_GET['action'] == 'logout'))
    {
    	....
    }
    else {
    Ne met pas des " partout :
    =>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    J'ai procédé a tous les changements car oui effectivement, a force de modifier petit bout de code par petit bout, on ecrit des sequences inutiles et on met des doubles quotes au chiffres...bref... désolés.

    Cependant, j'ai toujours un double dysfonctionnement

    1 - qui doit venir de la fonction mysqli_num_rows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $mysqli->real_query("SELECT * FROM `".$suff_table."utilisateur` where a_mail='$cmail' or a_pseudo='$cmail'");
    $req = $mysqli->use_result();
    $nbcon=mysqli_num_rows($req);
    meme si j'utilise orienté objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $req = $mysqli->real_query("SELECT * FROM `".$suff_table."utilisateur` where a_mail='$cmail' or a_pseudo='$cmail'");
    $nbcon= $req ->num_rows;
    printf("il y a %d lignes", $nbcon);
    le print est vide

    2 dans le fichier accueil.php, dans le meme genre mais avec SUM et mysqli_result ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $mysqli->real_query("SELECT SUM(totfin) FROM `".$suff_table."utilisateur` U, `".$suff_table."dem` D, `".$suff_table."dem_pro` P, `".$suff_table."dem_suivi` S where P.idCLIENT=D.idCLIENT and D.idCLIENT=S.idCLIENT $prp_0 and D.idUT=U.idUT and ((P.pro_nombanque_1='$vari' and P.pro_select_1='1') or (P.pro_nombanque_2='$vari' and P.pro_select_2='1') or (P.pro_nombanque_3='$vari' and P.pro_select_3='1')) and D.supp='0'"); 
    $res = $mysqli->use_result();
    $total = mysqli_result($res,0);$total=$total/1000; $total=ceil($total);
    Dans ces deux cas j'ai soit un plantage Erreur 500 soit rien????


    Sinon, PDO me parait tellement plus compliqué, car mysqli est natif donc ça me parle plus que PDO qui semble plus long en quantité de ligne quand on debute....

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par kaolivier Voir le message
    ...a force de modifier petit bout de code par petit bout...
    commence déjà par "nettoyer" ton code.
    Tu y verras plus clair...


    Ensuite, comme ça t'a déjà été conseillé, passe à PDO, d'autant que tu utilises mysqli en orienté objet, donc ça ne devrait pas être trop difficile de changer.

Discussions similaires

  1. [XL-2007] Modifier mon code
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/08/2014, 10h20
  2. [MySQL] aider moi a modifier mon code
    Par tapoza dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 11/06/2011, 17h59
  3. [Tableaux] comment doit-je modifier mon code
    Par teen6517 dans le forum Langage
    Réponses: 10
    Dernier message: 27/02/2007, 13h22
  4. Qui modifie mon code PL?
    Par flonardi dans le forum Oracle
    Réponses: 3
    Dernier message: 31/05/2006, 10h44
  5. CSS comment puis-je modifier mon code pr avoir un bord blanc
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 30/09/2005, 20h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo