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 :

Passer mysql en mysqli


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    retraité bidouilleur informatique
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraité bidouilleur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Par défaut Passer mysql en mysqli
    Bonjour à tous,

    Le virus m'a repris et j'essai d'écrire un nouveau site...
    J'avais il ya quelques années utilisé l'excellent inlinemod de M Olivier LANCE, qui fonctionait super bien.
    Mais depuis quelques années mysql a progressé et je ne peux pas en dire autant pour ma part !
    Donc voila le problème:
    les commandes Mysql sont devenues Mysqli...
    Je suis arrivé non sans mal a mettre à jour "index.php" mais pas "sauvMod.php"
    Par contre aucun message d'erreur mais la sauvegarde ne fonctionne pas.
    voici où j'en suius du code :
    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
    <?php
    include 'connect.php';
    //On sort en cas de paramètre manquant ou invalide
    if(empty($_GET['id']) or empty($_GET['type']) or empty($_GET['champ']) or empty($_GET['valeur'])
       or !is_numeric($_GET['id'])
       or !in_array(
       		$_GET['champ'],
            array('nom', 'prenom', 'adresse', 'code_postal', 'ville', 'niveau', 'email')
            ))
    {
        exit;
    }
     
        //Connexion à la base de données
        $connexion = mysqli_connect($DB_HOST, $DB_USER, $DB_PASSWORD, $DB_NAME) or die(mysqli_error());
     
        //Construction de la requête en fonction du type de valeur
    switch($_GET['type'])
    {
        case 'texte':
        case 'texte-multi':
            $sql  = 'UPDATE `'.DB_TABLE_NAME;
            $sql .= '` SET ' . mysqli_real_escape_string($connexion, $_GET['champ']) . '="';
            $sql .= mysqli_real_escape_string($connexion, $_GET['valeur']) . '" WHERE id=' . intval($_GET['id']);
            break;
     
        case 'nombre':
            $sql  = 'UPDATE `'.DB_TABLE_NAME;
            $sql .= '` SET ' . mysqli_real_escape_string($connexion, $_GET['champ']) . '=' . intval($_GET['valeur']);
            $sql .= ' WHERE id=' . intval($_GET['id']);
            break;
     
        default:
            exit;
    }
        //Exécution de la requête
        mysqli_query($connexion, $sql) or die(mysqli_error());
     
        mysqli_close($connexion);
    ?>
    Si quelqu'un peut me donner un coup de pouce (enfin un gros!)

    D'avance merci

    Naje83

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... or die(mysqli_error($connexion));
    Et si pas d'erreur retournée et que le problème persiste fais afficher ta requête (echo $sql) pour voir si elle est bien formée et contient les valeurs attendues.

  3. #3
    Membre confirmé
    Homme Profil pro
    retraité bidouilleur informatique
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraité bidouilleur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Par défaut
    Merci beaucoup pour ta réponse.
    Mais l'erreur persiste, tout s'affiche super, le double click dans une case fonctionne et affiche la nouvelle valeur mais si je raffraichi la page l'ancienne valeur revient donc pas de sauvegarde...

    voici le code où j'ai mis le echo ($sql)
    et cela me donne :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `inlinemod`SELECT * FROM `inlinemod`

    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
    <?php
    	//Connexion à la base de données
        include 'connect.php';
        $connexion = mysqli_connect($DB_HOST, $DB_USER, $DB_PASSWORD, $DB_NAME )or die ("erreur");
        mysqli_connect($DB_HOST, $DB_USER, $DB_PASSWORD, $DB_NAME )or die ("erreur");
    	$sql = "SELECT * FROM `" . $DB_TABLE_NAME . "`";
    	$req = mysqli_query($connexion, $sql) or die(mysqli_error($connexion));
     
    	mysqli_close($connexion);
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    	<head>
    		<meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
    		<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
     
    		<title>Modification "Inline" d'éléments dans une page web</title>
     
    		<link rel="StyleSheet" type="text/css" href="index.css"/>
    		<script type="text/javascript" src="inlinemod.js"></script>
       </head>
     
      <body>
    	<h1>Répertoire des initiés</h1>
     
     
    	<table id="table-utilisateurs">
    		<tr>
    			<th>Nom</th>
    			<th>Prénom</th>
    			<th>Adresse</th>
    			<th>Code Postal</th>
    			<th>Ville</th>
    			<th>Niveau</th>
    			<th>Email</th>
    		</tr>
     
    	<?php
    	while ($user = mysqli_fetch_assoc($req))
    		echo $sql;
    	{
    	?>
    		<tr>
    			<td id="nom-<?php echo $user['id']; ?>"  class="cellule" ondblclick="inlineMod(<?php echo $user['id']; ?>, this, 'nom', 'texte')"><?php echo $user['nom']; ?></td>
     
    			<td id="prenom-<?php echo $user['id']; ?>"  class="cellule" ondblclick="inlineMod(<?php echo $user['id']; ?>, this, 'prenom', 'texte')"><?php echo $user['prenom']; ?></td>
     
    			<td id="adresse-<?php echo $user['id']; ?>"  class="cellule" ondblclick="inlineMod(<?php echo $user['id']; ?>, this, 'adresse', 'texte-multi')"><?php echo $user['adresse']; ?></td>
     
    			<td id="cp-<?php echo $user['id']; ?>"  class="cellule" ondblclick="inlineMod(<?php echo $user['id']; ?>, this, 'code_postal', 'texte')"><?php echo $user['code_postal']; ?></td>
     
    			<td id="ville-<?php echo $user['id']; ?>"  class="cellule" ondblclick="inlineMod(<?php echo $user['id']; ?>, this, 'ville', 'texte')"><?php echo $user['ville']; ?></td>
     
    			<td id="niveau-<?php echo $user['id']; ?>"  class="cellule" ondblclick="inlineMod(<?php echo $user['id']; ?>, this, 'niveau', 'nombre')"><?php echo $user['niveau']; ?></td>
     
    			<td id="email-<?php echo $user['id']; ?>"  class="cellule" ondblclick="inlineMod(<?php echo $user['id']; ?>, this, 'email', 'texte')"><?php echo $user['email']; ?></td>
    		</tr>
    	<?php
    	}
    	?>
    	</table>
     
    	<div id="info">(les données de ce tableau sont fictives)</div>
     
      </body>
      </html>
    et le code précédent rectifié :
    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
    <?php
    include 'connect.php';
    //On sort en cas de paramètre manquant ou invalide
    if(empty($_GET['id']) or empty($_GET['type']) or empty($_GET['champ']) or empty($_GET['valeur'])
       or !is_numeric($_GET['id'])
       or !in_array(
       		$_GET['champ'],
            array('nom', 'prenom', 'adresse', 'code_postal', 'ville', 'niveau', 'email')
            ))
    {
        exit;
    }
     
        //Connexion à la base de données
        $connexion = mysqli_connect($DB_HOST, $DB_USER, $DB_PASSWORD, $DB_NAME) or die(mysqli_error($connexion));
     
        //Construction de la requête en fonction du type de valeur
    switch($_GET['type'])
    {
        case 'texte':
        case 'texte-multi':
            $sql  = 'UPDATE `'.DB_TABLE_NAME;
            $sql .= '` SET ' . mysqli_real_escape_string($connexion, $_GET['champ']) . '="';
            $sql .= mysqli_real_escape_string($connexion, $_GET['valeur']) . '" WHERE id=' . intval($_GET['id']);
            break;
     
        case 'nombre':
            $sql  = 'UPDATE `'.DB_TABLE_NAME;
            $sql .= '` SET ' . mysqli_real_escape_string($connexion, $_GET['champ']) . '=' . intval($_GET['valeur']);
            $sql .= ' WHERE id=' . intval($_GET['id']);
            break;
     
        default:
            exit;
    }
        //Exécution de la requête
        mysqli_query($connexion, $sql) or die(mysqli_error($connexion));
     
        mysqli_close($connexion);
    ?>
    Par contre j'ai placé

    Encore merci.

  4. #4
    Membre confirmé
    Homme Profil pro
    retraité bidouilleur informatique
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraité bidouilleur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Par défaut
    oups...

    Cela vient "simplement" du manque de $ devant le nom de la table...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql  = 'UPDATE `'.$DB_TABLE_NAME;
    Il y a des coups de pieds au ... qui se perdent.
    Il est 2h40 je vais pourvoir aller me couvher tranquille

    Encore merci

    @+

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Si t'as pas eu de message d'erreur c'est que les erreurs php sont désactivées. Normalement sur un serveur de test en local (genre WAMP) elles sont activées par défaut, mais elles sont toujours désactivées sur les serveurs en production.

    Si tu ne peux pas modifier la configuration du serveur tu peux te servir de error_reporting pour faire afficher les erreurs dans tes pages php.

  6. #6
    Membre confirmé
    Homme Profil pro
    retraité bidouilleur informatique
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraité bidouilleur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Par défaut
    Merci pour cet éclaircissement.

    @+

Discussions similaires

  1. [MySQL] Mysql et Mysqli que choisir
    Par Invité dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/03/2010, 11h24
  2. [MySQL] MySQL ou MySQLi
    Par geforce dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/02/2010, 21h11
  3. [MySQL] Extension mysql ou mysqli ?
    Par DJesus dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/03/2007, 12h50
  4. Faire cohabiter mysql et mysqli
    Par Christophe Charron dans le forum Installation
    Réponses: 1
    Dernier message: 01/03/2006, 17h14
  5. difference entre MySQL et Mysqli?
    Par maire106 dans le forum Installation
    Réponses: 3
    Dernier message: 16/06/2005, 16h17

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