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 :

Insertion de plusieurs url avec batch


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
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Par défaut Insertion de plusieurs url avec batch
    Bonjour,

    dans ma bdd j'ai 2 tables :

    place => id , location_name, latitude, longitude (champs)
    place_image => url, place_id (champs)

    Dans ma table "place" je vais ajouter des lieux (par exemple Paris) et chaque lieu aura plusieurs images.

    Mes url (image) seront dans place_image et je dois pouvoir en ajouter plusieurs en même temps. (par exemple pour Paris je souhaite afficher une image de la tour eiffel et l'arc de trimphe.)

    Et pour ce faire on m'a demandé d'utiliser batch pour une insertion multiple, sauf que jusqu'à présent je n'insérait qu'un élément à la fois dans chaque champ donc je ne sais pas trop comment m'y prendre.

    J'ai pu voir qu'en HTML il fallait indiquer des crochet dans le nom des input pour indiquer que l'on souhaite récupérer un tableau (d'image)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <label for="url">Ajouter vos URLs : <input type="url" name="image[]" id="image" required></label>
    Mais dans mon manager je n'ai pas compris comment il faut faire. En cherchant sur internet j'ai pu trouver des p'tites choses mais rien de vraiment explicite (j'utilise MVC)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        public function addImages($newImage) {
            $connexion = new Manager();
            $db = $connexion->dbConnect();
            $addImages = $db->prepare('INSERT INTO place_image (url_img, place_id) VALUES '.implode(',', $addImages));
            $addImages->execute(array(
                "url_img" => $newImage->getUrl(),
                "place_id" => $newImage->getId()
            ));
            return $addImages;
        }

    Ce code n'est sans doute pas correct, j'aimerais qu'on me mette sur la piste . merci d'avance

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 599
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 599
    Par défaut
    dans votre code, d'où vient $newImage ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Par défaut
    Je l'ai créé ici même, J'utilise $newImage pour récupérer mes données sous forme d'objet, et je passe par une entité "Image".

    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
    <?php
     
    class Image {
     
        //Attributs  
        private $_url_img; 
        private $_place_id;
     
     
        //Getters
        public function getUrl() {
            return $this->_url_img;
        }
     
        public function getPlaceId() {
            return $this->_place_id;
        }
     
        //Setters
        public function setUrl($url) {
            $this->_url_img = $url;
        }
     
        public function setPlaceId($place_id) {
             $this->_place_id = $place_id;
     
        }
     
    }

  4. #4
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Bonjour

    Je ne comprends pas trop ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function addImages($newImage) {
        $connexion = new Manager();
        $db = $connexion->dbConnect();
        $addImages = $db->prepare('INSERT INTO place_image (url_img, place_id) VALUES '.implode(',', $addImages));
        $addImages->execute(array(
            "url_img" => $newImage->getUrl(),
            "place_id" => $newImage->getId()
        ));
        return $addImages;
    }
    Pourquoi pas juste $addImages = $db->prepare('INSERT INTO place_image (url_img, place_id) VALUES ('".$newImage->getUrl()."', '".$newImage->getId()."');En lieu et place des lignes 3 à 7 de ta fonction.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Par défaut
    Oui mon code n'est sans doute pas bon,

    j'ai essayé ton code mais j'obtiens le même résultat


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        //Ajout d'images
        public function addImages($newImage) {
            $connexion = new Manager();
            $db = $connexion->dbConnect();
            $addImages = $db->prepare('INSERT INTO place_image (url_img, place_id) VALUES ("'.$newImage->getUrl()."', '".$newImage->getId().'")');
            $addImages->execute();
            return $addImages;
        }
    Controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function image($url_img, $place_id) {
        $newImage = new Image($url_img, $place_id);
        $newImage->setUrl($url_img);
        $locationManager = new LocationManager();
        $image = $locationManager->addImages($newImage); 
        header('Location: index.php?action=listLocations'); //Renvoi à la page d'accueil
    }

    Index :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        elseif ($_GET['action'] == 'image_added') {
            if (isset($_GET['id'])) {
                image($_POST['image'], $_GET['id']);
            }else {
                print "Aucun ID présent";
            }
        }
    Juste pour la précision, Avant d'ajouter des images je récupère l'ID du lieu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
           <!--On récupère l'ID avant d'ajouter les images-->
            <?php foreach 
                ($listLocations as $data) :  //$listLocations contient toute mes locations
                    ?>
                    <p>Ajouter des images pour : <?= $data->location_name; ?></p>
                    <p><a href="index.php?action=addImage&amp;id=<?= $data->id ?>">Acceder à l'article</a></p> // Renvoi vers la page d'ajout d'images
                    <?php
                        endforeach;
                    ?>
    j'espère être clair !

Discussions similaires

  1. Insert de plusieurs entrée avec Classe CRUD
    Par nico21000 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 16/02/2011, 17h18
  2. [MySQL] Formulaire multiples et INSERT sur plusieures tables avec même ID
    Par mfredok dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 25/11/2010, 13h59
  3. Insertion dans plusieurs table avec un index commun
    Par irongomme dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/10/2007, 11h41
  4. siteMapNode url avec plusieur proprieté
    Par olifile dans le forum ASP.NET
    Réponses: 2
    Dernier message: 27/04/2007, 10h39
  5. Réponses: 2
    Dernier message: 02/03/2006, 11h34

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