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

Langage PHP Discussion :

Requête POO en mysql classique


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 73
    Par défaut Requête POO en mysql classique
    Bonjour,

    J'aimerais savoir comment exécuter cette requête POO en requête mysql classique (je ne m'y connais pas en POO) :

    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
     
    <?php
    $dns = 'mysql:host=**********;dbname=*********';
    $utilisateur = '*************';$motDePasse = '*********';
    $connection = new PDO( $dns, $utilisateur, $motDePasse );
    $query = $connection->prepare('SELECT wa_communaute.pseudo, (id_membre + id_ami - :id) AS ami_id, date FROM wa_amis LEFT JOIN wa_communaute ON id = (id_membre + id_ami - :id) WHERE (id_membre = :id OR id_ami = :id) AND confirm = :conf ORDER BY date');
    $query->bindValue(':id',$id,PDO::PARAM_INT);       
    $query->bindValue(':conf','1',PDO::PARAM_STR);
    $query->execute();
    	if ($query->rowCount() == 0) {
    		echo '<p class="size11">Aucun amis pour l\'instant</p>';
    	}
    	while ($data = $query->fetch()) { ?>
     
    <li class="friend">
    	<div class="friend-avatar">
    		<a href="/<?php echo htmlentities(trim($data['pseudo'])); ?>"><img src="../img/upload/<?php echo htmlentities(trim($data['ami_id'])); ?>-mini.png" width="40" height="40" alt="" /></a>
    	</div>
    </li>
    <?php } $query->CloseCursor(); ?>
    Merci d'avance

  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
    Si elle fonctionne pourquoi tu veux la changer ?
    Ce que tu appelles mysql classique, c'est la version obsolète.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    Cette méthode est la bonne à employer, PDO à de l'avenir puisqu'il permet de se connecter à presque tout les SGBD existants. MySQL, SQLite, PostgreSQL, Oracle ...

  4. #4
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 73
    Par défaut
    Alors, à partir de cette requête, comment fait-on pour ajouter un ami via un bouton relié à l'id du membre demandé ?

    Si on clique sur le bouton, l'invitation est envoyé, si on reclic dessus, l'invitation est annulé, et tout cela en PDO.

    Merci d'avance

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    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 420
    Par défaut
    Et puis l'équivalent n'existe pas nativement avec mysql puisqu'il s'agit d'une requête préparée.
    Il faudrait utiliser mysqli pour avoir un équivalent en procédural.
    Si tu ne souhaite pas utiliser pdo c'est d'ailleurs mysqli qu'il est conseillé d'utiliser pour les nouveaux projets. Pour les requêtes préparées avec mysqli regarde du côté de http://php.net/manual/fr/mysqli.prepare.php et http://php.net/manual/fr/mysqli-stmt.bind-param.php
    L'avantage de mysqli c'est que c'est disponible en POO et en procédural donc assez facile pour le mode procédural quand on vient de mysql.

  6. #6
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 73
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Si elle fonctionne pourquoi tu veux la changer ?
    Ce que tu appelles mysql classique, c'est la version obsolète.
    C'est la version avec comme exemple :

    mysql_query ........
    mysql_num_rows ........
    resultat == 0 { .......

    Celle là est plus compréhensible, je m'y connais mieux dans cette version

  7. #7
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    Il faudrait que tu fasses un truc du genre :

    Une table intermédiaire "lien_sociaux", qui contiendrait l'id du membre 1 et l'id du membre 2, et chaque tuple représenterait un lien d'amitié (en faisant gaffe au doublons !)

    Je pense qu'avec un peu d'AJAX, tu peux utiliser XMLHttpRequest pour faire des requetes en base de donnée à la volée, qui vérifie si le lien "id1" et "id2" existe dans la table "lien_sociaux".
    Si c'est le cas, tu supprime l'occurence, sinon, tu l'ajoutes.

    Code php : 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
    try
    {
            $connexion = new PDO('mysql:host='.$param_hote.';dbname='.$param_nom_bd, $param_utilisateur, $param_mot_passe); // tes parametres
    } catch(Exception $e) {
    	die("Erreur : ".$e->getMessage());
    }
     
    if(isset($_POST['data1']&&isset($_POST['data2'])))
    {
          $result = $connexion->query("SELECT * FROM liens_sociaux WHERE id_1="'.$_POST['data1'].'" AND id_2="'.$_POST['data2'].'""); // ou prepare() si tu veux, puis query pour executer
          if($row==NULL)
          {
                  $connexion->query("UPDATE liens_sociaux SET id_1="'.$_POST[data1].'", id_2="'.$_POST['data2'].'""); // on ajoute
          } else {
                  $connexion->query("DELETE FROM liens_sociaux WHERE id_1="'.$_POST[data1].'", id_2="'.$_POST['data2'].'"");// on supprime
          }
          $result->closeCursor();
    }

    Du côté javascript ca serait un truc du genre :
    Code javascript : 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
     
    function xmlhttprequest(f)
    {
    	if(window.XMLHttpRequest) // Firefox et autres
    	        xhr = new XMLHttpRequest(); 
    	else if(window.ActiveXObject){ // Internet Explorer 
    		try {
    		         xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch(e) {
    			 xhr = new ActiveXObject("Microsoft.XMLHTTP");
    	        }
            }
    	else { // XMLHttpRequest non supporté par le navigateur 
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    		xhr = false; 
    	}
     
    	xhr.open("POST", "ta_page.php", true); 	// ici on définit la methode POST sur edit.php
     
    	xhr.onreadystatechange = function() { // ici on utilise le retrieve asynchrone afin de ne pas être bloquant
    	if(xhr.readyState == 4) // dès que les données sont recues
    		eval(xhr.responseText); 
    	}
    	xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	var data = "data1="+f.ton_id1+"&data2="+f.ton_id2;
    	xhr.send(data);
    }

    En gros tu appelerais xmlhttprequest(nom de ton formulaire qui contient les id) et la bdd sera mise à jour. Il existe surement des meilleures techniques, mais voici une que j'utilise si besoin est, et elle fonctionne (le code est pas testé, donc il y a surement des fautes)

Discussions similaires

  1. Convertir une requête Acces en MySQL
    Par Creepy78 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 28/02/2006, 16h24
  2. Requête hyerarchique avec MySQL
    Par ingamo dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/02/2006, 21h39
  3. [POO] Débutant en POO, class mysql php5
    Par ouafouaf dans le forum Langage
    Réponses: 9
    Dernier message: 06/02/2006, 09h21
  4. Requête sur DB mysql
    Par Lord_FEFF dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 09/11/2005, 19h16
  5. Convertir une requête Access en MySQL
    Par iomega dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/03/2004, 09h47

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