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 multiple avec PDO et chaine de caracteres


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai Avatar de luthor_06
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Points : 15
    Points
    15
    Par défaut Insertion multiple avec PDO et chaine de caracteres
    Bonjour a tous!
    Voila ça fait pas longtemps que j'ai appris le PDO et c'est vraiment très flexible mais j'ai rencontré des soucis (deux) en codant !

    1-En premier j'essaie de récupérer une liste d’étudiants depuis ma BD et l'afficher avec des attributs name différents pour pouvoir
    insérer une fois la note de chaque étudiants saisie. Mais a l'affichage je n'obtiens qu'un seul étudiants au lieu de deux comme dans la BD. J'utilise le code suivant

    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
    <table align="center" border="0" id="notes">
    <?php
    include("includes/identifiants.php");
    if(!empty($_POST["opt2"])){
    $query=$db->query("SELECT DISTINCT COUNT(*) AS nb, ids, s_matricule, s_name FROM students WHERE s_option=".$_POST["opt2"]) or die(print_r($db->errorInfo()));
    	$i=1;
    while ( $donnees=$query->fetch()){
     
    echo	'<tr>
    		<td>
    		<input type="hidden" class="form-control" name="ids'.$i.'" value="'.$donnees["ids"].'">
    		</td>
    		<td>
    			<input type="text" class="form-control" name="smatricule" id="smatricule" size="auto" onkeyup="javascript:this.value=this.value.toUpperCase();" value="'.$donnees["s_matricule"].'" readonly>
    		</td>
    		<td>
    		<input type="text" class="form-control" name="sname" id="sname" size="40" onkeyup="javascript:this.value=this.value.toUpperCase();" value="'.$donnees["s_name"].'" readonly>
    		</td>
    		<td>
    		<input type="text" class="form-control" name="note'.$i.'" id="note" size="4">
    		</td>
    	</tr>';
    $i++;
     
    }
    } else {
    ?>
    <tr>
    	<td>Choose an Option</td>
    </tr>
    <?php
    }
    ?>
    </table>
    $_POST["opt2"] est récupérer via Ajax.

    2-Mon deuxième soucis est au niveau des requêtes. quand j'ai par exemple une requête de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query=$db->query("SELECT DISTINCT COUNT(*) AS nb, ids, s_matricule, s_name FROM students WHERE s_option=".$_POST["opt2"]) or die(print_r($db->errorInfo()));
    et que la valeur de $_POST["opt2"] est une chaine de caractères, rien ne marche. J'ai essaye plein de petites idées pour ces deux cas mais en vain!!

    Besoin d'aide svp!

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    PDO s'utilise comme ça avec des données externes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sth=$db->prepare("SELECT DISTINCT COUNT(*) AS nb, ids, s_matricule, s_name FROM students WHERE s_option= ?";
    $sth->execute(array($_POST['opt2']));
    et sans "or die" qui appartient à une autre époque.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai Avatar de luthor_06
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Points : 15
    Points
    15
    Par défaut
    ok J'essaie ca

  4. #4
    Membre à l'essai Avatar de luthor_06
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Points : 15
    Points
    15
    Par défaut
    Merci Sabotage ça Marche
    Et le cas quelqu'un a une idée svp

  5. #5
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    bonjour. PDO + Requêtes préparées bien utilisées résoudra tes 2 problèmes.
    Regarde ici, tu trouveras un code directement réutilisable.
    PDO une soupe et au lit
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Juste pour info, toute valeur qui n'est pas un entier doit être entre guillemet dans une requête SQL. C'est pour ça que la deuxième requête ne fonctionne que pour les valeurs en entier. L'utilisation d'une requête préparée résout ce genre de problème, et t'évite d'autre ennui.

    A+.

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Sinon, pour le problème des données : tu génères tes champs dans une boucle, du coup tu as plusieurs champs qui portent tous le même nom Tu as bien prévu le coup avec ton $i qui s'incrémente, il faut juste l'utiliser pour envoyer tes champs dans des tableaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="text" class="form-control" name="smatricule['.$i.']" id="smatricule'.$i.'" size="auto" onkeyup="javascript:this.value=this.value.toUpperCase();" value="'.$donnees["s_matricule"].'" readonly>
    <input type="text" class="form-control" name="sname['.$i.']" id="sname'.$i.'" size="40" onkeyup="javascript:this.value=this.value.toUpperCase();" value="'.$donnees["s_name"].'" readonly>
    (au passage, des champs readonly ne sont pas modifiables )
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre à l'essai Avatar de luthor_06
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    bonjour. PDO + Requêtes préparées bien utilisées résoudra tes 2 problèmes.
    Regarde ici, tu trouveras un code directement réutilisable.
    PDO une soupe et au lit
    Merci pour le cours tres interressant !

  9. #9
    Membre à l'essai Avatar de luthor_06
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Celira Voir le message
    Sinon, pour le problème des données : tu génères tes champs dans une boucle, du coup tu as plusieurs champs qui portent tous le même nom Tu as bien prévu le coup avec ton $i qui s'incrémente, il faut juste l'utiliser pour envoyer tes champs dans des tableaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="text" class="form-control" name="smatricule['.$i.']" id="smatricule'.$i.'" size="auto" onkeyup="javascript:this.value=this.value.toUpperCase();" value="'.$donnees["s_matricule"].'" readonly>
    <input type="text" class="form-control" name="sname['.$i.']" id="sname'.$i.'" size="40" onkeyup="javascript:this.value=this.value.toUpperCase();" value="'.$donnees["s_name"].'" readonly>
    (au passage, des champs readonly ne sont pas modifiables )
    Merci l'idee est bonne c'est dynamique avec les tableaux

Discussions similaires

  1. [PDO] insertion multiple avec PDO
    Par kate59 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 01/07/2011, 17h32
  2. [MySQL] Insertions multiples avec un ON DUPLICATE KEY comment ça marche?
    Par Sayrus dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/04/2008, 13h41
  3. [PDO] Insertion Postgresql avec PDO
    Par juninho269 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/02/2008, 14h00
  4. Requête d'insertion multiple avec 1 valeur fixe
    Par [DreaMs] dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/12/2005, 09h28
  5. INSERT multiples avec : rs.AddNew et .Update
    Par M.Zip dans le forum ASP
    Réponses: 4
    Dernier message: 03/12/2004, 15h53

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