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 :

Insérer un vecteur dans MySQL avec PHP


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut Insérer un vecteur dans MySQL avec PHP
    salut
    svp je veux enregistrer un vecteur (F[i]) dans une base mais je ne sais pas comment faire. Voila mon programme

    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
    //**********************calcule de V*********************
    for ($i = 1; $i < $N; $i++) 
    	{
    		$F[$i]= $f1[$i]/ $c;
    echo $F[$i] ."<br>";
    	}
    	$TR=sizeof($F);
    echo $TR;
     
    //************************connexion************************
    $hote="127.0.0.1";
    $utilisateur="root";
    $modpass="";
    $connection=mysql_connect($hote,$utilisateur,$modpasse);
    //echo $connection;
    $nomdelabase="test";
    mysql_select_db($nomdelabase,$connection);
     
    $requete="UPDATE image SET vecteurf='$F' WHERE nom='ed'";
     
    echo $requete;
     
    $resultat=mysql_query($requete,$connection);
     
    echo $resultat;
     
    ?>
    J'ai mis le champs vecteurf comme double mais il n'insère rien

    merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 73
    Points
    73
    Par défaut
    Salut,

    Déjà tu veux faire une mise à jour ou une insertion ?

    Car pour enregistrer il vaut mieux utiliser

    " INSERT INTO image SET vecteurf='$F' WHERE nom='ed' ";

    Après dit nous quoi si c'est bon, sinon il faut faire un test si le vecteurf existe déjà alors update sinon insert.

    Attention je ne parle que de la requête, pas du reste !!!!

    ++

  3. #3
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Bonjour,

    Que ce soit pour une insertion ou pour une mise à jour, $F étant un tableau, il faudra d'abord le serializer avant de l'enregistrer dans la base
    Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp.

  4. #4
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    oui je veux l inserer
    mais serialiser comment?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    Citation Envoyé par fAdoua123 Voir le message
    oui je veux l inserer
    mais serialiser comment?
    ya une fonction php qui permet de serialiser je crois que c'est serialize($variable)
    tu peux jeter un coup d'oeil ici:
    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
     
    <?php
    // $session_data contient un tableau multi-dimensionnel , avec les
    // informations de session de l'utilisateur courant. On utilise serialize()
    // pour les stocker dans une base de données
     
    $conn = odbc_connect("webdb", "php", "chicken");
    $stmt = odbc_prepare($conn,
          "UPDATE sessions SET data = ? WHERE id = ?");
    $sqldata = array(serialize($session_data), $PHP_AUTH_USER);
    if (!odbc_execute($stmt, &$sqldata)) {
        $stmt = odbc_prepare($conn,
         "INSERT INTO sessions (id, data) VALUES(?, ?)");
        if (!odbc_execute($stmt, &$sqldata)) {
            /* Un problème est survenu ! */
        }
    }
    ?>
    Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789

  6. #6
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    oui j'ai bien mis la fonction mais il ne me donne rien

    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
    for ($i = 1; $i < $N; $i++) 
    	{
    		$F[$i]= $f1[$i]/ $c;
            echo $F[$i] ."<br>";
    	}
    	$TR=sizeof($F);
        echo $TR."<br>";
     
    echo $w = serialize($F); 
     
     
    //************************connexion************************
     
    $hote="127.0.0.1";
    $utilisateur="root";
    $modpass="";
    $connection=mysql_connect($hote,$utilisateur,$modpasse);
    //echo $connection;
    $nomdelabase="test";
    mysql_select_db($nomdelabase,$connection);
    //$requete="DELETE FROM image  WHERE id='1'";
     
    //$requete = "SELECT*FROM image"; 
     
    $requete="UPDATE image SET vecteurf='$w' WHERE nom='ed'";
     
    echo $requete;
     
    $resultat=mysql_query($requete,$connection);
    $ret=mysql_fetch_row($resultat);
    print_r($ret);
     
     
    ?>
    je ne sais pas c'est quoi le problème

  7. #7
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Bonjour

    Etes-vous certain qu'il y a bien un enregistrement dans la table image dont le nom soit égal à 'ed'?

    Que donne l'echo de la requête?

    la fonction mysql_fetch_row retourne quelque chose quand on fait une requête qui retourne un jeu d'enregistrement.
    Dans le cas d'un update ou d'un insert, pour voir ce qui s'est passé : mysql_affected_rows().

    Prenez aussi la bonne habitude de mettre un or die(mysql_error()) derriere vos mysql_query. Vous obtiendrez ainsi des messages d'erreur.
    Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp.

  8. #8
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    Voila mon programme et m'insère un 0 en vecteurf
    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
    for ($i = 1; $i < $N; $i++) 
    	{
    		$F[$i]= $f1[$i]/ $c;
            echo $F[$i] ."<br>";
    	}
    	$TR=sizeof($F);
        echo $TR."<br>";
     
    echo $w = serialize($F); 
     
     
    //************************connexion************************
     
    $hote="127.0.0.1";
    $utilisateur="root";
    $modpass="";
    $connection=mysql_connect($hote,$utilisateur,$modpasse);
    //echo $connection;
    $nomdelabase="test";
    mysql_select_db($nomdelabase,$connection);
    //$requete="DELETE FROM image  WHERE id='1'";
     
    //$requete = "SELECT*FROM image"; 
     
    $requete="UPDATE image SET vecteurf='$w' WHERE nom='tr'";
     
    echo $requete;
     
    $resultat=mysql_query($requete,$connection);
    //$ret=mysql_fetch_row($resultat);
    //print_r($ret);
     
    echo $resultat;
    ?>
    et voila la fenêtre d'exécution sachant que F=(1;0,25;0,11111)

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1
    0.25
    0.111111111111
    a:3:{i:1;d:1;i:2;d:0.25;i:3;d:0.111111111111111104943205418749130330979824066162109375;}UPDATE image SET vecteurf='a:3:{i:1;d:1;i:2;d:0.25;i:3;d:0.111111111111111104943205418749130330979824066162109375;}' WHERE nom='tr'1

    pourquoi il m'insère le 0 ?????

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    je vois que tu doute de la valeur serialisée. Le seul moyen de savoir si la valeur serialisée est le bon, est de le deserialiser et de voir si sa valeur correspond au vecteur F
    Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789

  10. #10
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    mais est-ce que c'est normal qu'il me mette 0 ?
    et comment désérialiser la valeur aussi qui est dans la base pour savoir si c'est bien mon F ?????

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    Citation Envoyé par fAdoua123 Voir le message
    mais esct que c est normal qu il me met 0 ?
    et comment deserialiser la valeur aui est ds la base pour savoir si c est bien mon F?????
    utilise unserialize
    Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789

  12. #12
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    la question comment et sur quoi j ai fais comme ca mais ca donne rien
    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
    for ($i = 1; $i < $N; $i++) 
    	{
    		$F[$i]= $f1[$i]/ $c;
            echo $F[$i] ."<br>";
    	}
    	$TR=sizeof($F);
       // echo $TR."<br>";
    
    //echo $w = serialize($F); 
    
    	
    //************************connexion************************
    
    $hote="127.0.0.1";
    $utilisateur="root";
    $modpass="";
    $connection=mysql_connect($hote,$utilisateur,$modpasse);
    //echo $connection;
    $nomdelabase="test";
    mysql_select_db($nomdelabase,$connection);
    //$requete="DELETE FROM image  WHERE id='1'";
    
    $requete = "SELECT vecteurf FROM image WHERE nom='tr' "; 
    
    //$requete="UPDATE image SET vecteurf='$w' WHERE nom='tr'";
    
    echo $requete;
    
    $resultat=mysql_query($requete,$connection);
    $e= unserialize($vecteurf);
    echo $e;//echo $resultat;
    alors je fais quoi?/

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    theorique ça devrait afficher array() ........... parce que tu as serialisé un vecteur. Donc lorsque tu recupéres la valeur serialisée et que tu désérialises tu devrait obtenir un vecteur.
    Pour afficher un tableau, utilise print_r($montableau).
    Entre autres, lorsque tu serialise une variable, d'autres infos complémentaire sont ajoutées à la valeur de cette variable. donc soit pas etonné de voir autre chose que la valeur lorsque que tu serialises
    Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789

  14. #14
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    Ça veut dire que 0 ne doit pas figurer dans ma base ? Et même avec print_r ça donne rien ?
    mais est-ce qu'on désérialiser comme je l'ai fait ou non ?
    merci pour ton aide

  15. #15
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Re,

    Je pense que le problème vient de la définition du champ vecteurf

    Si je m'en réfere à votre premier post, c'est un double or la fonction serialize donne un string.

    Changez le type de vecteurf en text ou en varchar dans la table image et voyez ce que cela donne
    Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp.

  16. #16
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    le champ où je stocke la variable vecteurf doit être de quel type ?
    Ou bien peu importe ? (pour moi il est de type double ça dois pas être ça le problème)

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    la fonction serialize renvoie une chaine. pour donc dire que si tu veux stocker ton vecteur dans un champ de ta base, il faut que ce champ soit de type chaine.
    entre autre, as tu une idée claire sur ce qu'est la sérialisation?
    Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789

  18. #18
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    Re,

    Je pense que le problème vient de la définition du champ vecteurf

    Si je m'en réfere à votre premier post, c'est un double or la fonction serialize donne un string.

    Changez le type de vecteurf en text ou en varchar dans la table image et voyez ce que cela donne
    Aujourd'hui 16h12
    on a penser a la meme chose et je pense que ca marche car il me met Array
    ca veux dire que c est bien n est ce pas?
    avant de me quiter je veux savoir comment uniserialiser vecteurf ?

    merci vous me sauvez!!

  19. #19
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    on unseriablize comme on serialise
    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
    Exemple avec la directive unserialize_callback_func
     
     
    <?php
    $serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';
     
    // directive unserialize_callback_func disponible depuis PHP 4.2.0
    ini_set('unserialize_callback_func','moncallback'); 
     
    // configure votre fonction de callback : moncallback
     
    function moncallback($classname)
    {
        // Incluez simplement in fichier contenant votre définition de classe
        // vous saurez quelle classe grâce à $classname
    }
    ?>
    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
    Exemple avec unserialize
     
     
    <?php
    // Ici, on utilise <function>unserialize</function> pour charger les données de sessions
    // depuis la base de données, dans $session_data. Cet exemple complète
    // celui fourni avec <function>serialize</function>.
    $conn = odbc_connect("webdb", "php", "chicken");
    $stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?");
    $sqldata = array($PHP_AUTH_USER);
    if (!odbc_execute($stmt, &$sqldata) || !odbc_fetch_into($stmt, &$tmp)) {
        // si la préparation ou la lecture échoue, on crée un tableau vide
        $session_data = array();
    } else {
        // les données sauvées sont dans $tmp[0].
        $session_data = unserialize($tmp[0]);
        if (!is_array($session_data)) {
            // Erreur... initialisation à tableau vide
            $session_data = array();
        }
    }
    ?>
    Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789

  20. #20
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Récupérer la valeur de vecteurf dans la base de donnée puis utiliser la fonction unserialize()

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    req = "select vecteurf from image where nom='tr'";
    $res = mysql_query($req) or die('erreur dans la requête : '.$req.'<br />'.mysql_error());
    $ligne = mysql_fetch_array($res);
    $vecteur = unserialize($ligne['vecteurf']);
    print_r($vecteur);
    Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp.

Discussions similaires

  1. Injecter automatiquement du xml dans Mysql avec php
    Par Max1000p dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 04/06/2012, 10h44
  2. Réponses: 1
    Dernier message: 13/12/2011, 16h57
  3. [MySQL] les images dans mysql avec Php
    Par kitcarson23 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/01/2011, 01h02
  4. Réponses: 1
    Dernier message: 31/01/2007, 11h59
  5. Incapable d'insérer dans MySQL avec JDBC
    Par guillo14 dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/06/2006, 01h26

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