PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#2 Re : MySQL, PostgreSQL, etc... » Requete dans une boucle while, pas d'autres solutions? » 23-09-2013 20:04:30

Merci pour la réponse mais le soucis, c'est que je souhaite avoir comme résultat un tableau html comme cela :

Nom | Jeux possédés

Donc, une ligne par membre, mais dans la colonne jeux, je voudrai avoir tous les jeux séparer par une virgule.

#3 MySQL, PostgreSQL, etc... » Requete dans une boucle while, pas d'autres solutions? » 23-09-2013 20:04:30

morgan47
Réponses : 4

Bonjour à tous,

je vous expose mon soucis.

J'ai 3 tables :

t_membres : id_membre, nom, pseudo.....
t_listejeux : id_jeux, jeux
t_jeuxmembres : idmembre, id_jeux

Vous l'aurez compris, le but c'est d'enregistrer les jeux des membres depuis une liste.

Cependant pour l'affichage je me heurte à un problème, je souhaite afficher tous les utilisateurs avec leur jeux respectifs.

En fait je fait une boucle sur la table membres, et dans la boucle while, je refais une requete jointe pour sélectionner les jeux du membre en question.

Je ne trouve pas d'autre solution, javais pensé au jointure, mais le soucis c'est qu'il y a plusieurs jeux pour 1 meme membre.

auriez vous une idée?

Cordialement,
Morgan

#4 Re : MySQL, PostgreSQL, etc... » afficher un calendrier multi-utilisateur » 08-12-2010 18:50:20

Savez vous comment je pourrais organiser l'affichage par membres les plus disponible vers les moins disponible?

#5 Re : MySQL, PostgreSQL, etc... » afficher un calendrier multi-utilisateur » 08-12-2010 18:50:20

Merci pour votre aide à tous les 2.
Ca me donne un truc comme ca qui m'a l'air de fonctionner :


$date_d='2010-12-01';
$date_f='2010-12-15';

$sql = "SELECT id_membre,
GROUP_CONCAT(DATE_FORMAT(date_d,GET_FORMAT(DATE,'ISO')) ORDER BY date_d) AS dispos
FROM dispo
WHERE date_d BETWEEN '$date_d' AND '$date_f'
GROUP BY id_membre
ORDER BY id_membre"
;
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

while ($result = mysql_fetch_array ($req))
{
  $id_membre = $result['id_membre'];
  $str_date = $result['dispos'];
  $tab_d[$id_membre] = explode(",", $str_date);
 
}

function NbJours($debut, $fin) {

  $tDeb = explode("-", $debut);
  $tFin = explode("-", $fin);

  $diff = mktime(0, 0, 0, $tFin[1], $tFin[2], $tFin[0]) -
          mktime(0, 0, 0, $tDeb[1], $tDeb[2], $tDeb[0]);
 
  return(($diff / 86400)+1);

}
$Nombres_jours =  NbJours($date_d, $date_f);

echo '<table border="1">';
echo '<tr>';

for($i=0;$i < $Nombres_jours;$i++)
     {
     
     $tab_date = explode("-", $date_d);
     $date = date('d/m',mktime(0, 0, 0, $tab_date[1], $tab_date[2] + $i, $tab_date[0]));
     
    echo '<td width="50">'.$date.'</td>';
     }
echo '</tr>';


for($j=1;$j < 5;$j++)
  {
    echo '<tr>';
    for($i=0;$i < $Nombres_jours;$i++)
     {
       
       $tab_date = explode("-", $date_d);
       $date = date('Y-m-d',mktime(0, 0, 0, $tab_date[1], $tab_date[2] + $i, $tab_date[0]));
     
      if(in_array($date,$tab_d[$j]))
        {
          echo '<td width="50" bgcolor="#33FF00"> </td>';
        }
       else
       {
          echo '<td width="50" bgcolor="#FF0000"> </td>';
       }

     }
    echo '</tr>';
  }

echo '</table>';
 

Qu'en pensez vous?

#6 Re : MySQL, PostgreSQL, etc... » afficher un calendrier multi-utilisateur » 08-12-2010 18:50:20

Il s'agit de celle du membre.
Il donne ses disponibilités, en jours.
Et la page que je souhaite faire afficher un calendrier sur 2 mois de tous les membres avec leur dispo.

#7 MySQL, PostgreSQL, etc... » afficher un calendrier multi-utilisateur » 08-12-2010 18:50:20

morgan47
Réponses : 6

Bonjour,
J'en reviens à mon souci de planning pour la réserve GD

J'ai une table dispo avec cette structure :
id_membre (int)
date_d (date)

Les membres rentrent chaque jour de disponibilité.

J'aimerais afficher dans la partie administration un calendrier en tableau multi-utilisateurs de cette forme :

Octobre   1 2 3 4 5 6 7 8 9 10 ...
Membre1 1 0 0 0 0 0 1 1 0 1
Membre2 0 0 0 0 0 0 1 1 0 0

Les 1 représente une disponibilité à la journée et les 0 non.

je ne sais pas comment faire les requêtes pour réaliser ce tableau.
j'avais pensé faire une requête sur la table membre avec pour chaque membre une requête sur la table dispo sur chaque jour du mois.

Mais cela au final va engendrer avec les boucles environ 7500 ou 15000 requêtes à chaque affichage de la page. 250 membres et affichage sur 1 ou 2 mois.

Auriez vous une idée?

Je vous remercie beaucoup

#8 Re : MySQL, PostgreSQL, etc... » Select croisé sur 2 tables. » 14-11-2009 20:58:49

Qu'est ce que tu entend par Union? des jointures?

je ne comprend pas pour ton histoire de différence, si les date d'embauche chevauche sur 2 mois?

#9 MySQL, PostgreSQL, etc... » Select croisé sur 2 tables. » 14-11-2009 20:58:49

morgan47
Réponses : 4

Bonjour,
je m'explique vite fait. je vasi réaliser un site pour un bureau Réserve.
Le site sera simple, le bureau enregistrera les date d'embauche du personnel.
et les reserviste donnerons leur disponibilité.

J'aurais donc 2 tables en simplifié ca donne.
Une table embauche : idembauche |datedeb | datefin | nbrposte
Une table disponibilité : idres | datedebut | datefin

Esemple d'embauche : 10/12 au 20/12  - 2 postes

J'enregistre dans la table disponibilité toutes les disponibilité du personnel, ca peu être des des weeks, et semaine ou plus.
PAr exemple, on peu avoir:
1 - 01/12 au 31/12
2 - 03/12 au 18/12
3 - 18/12 au 20/12
4- 13/12 au 15/12
.....

Avec cette exemple, on voit qu'il y a un reserviste dipo sur toute la pèriode, et qu'aprés on pourrai embauché le reserviste 2 et 3 à la suite, le premier fait du 10 au 17 et le second du 18 au 20 ou bien embauché le 2 puis le 4 puis le 3 en alternance.

Je ne sais pas du tout comment mettre cela en requète de façon à affiché par exemple :

Renfort du 10/12 au 20/12 :
     - 1 réserviste dispo sur toutes la pèriode
     - 3 reservistes dispo en alternance


Et le second problème, lorsque l'on clique sur les détails de l'ambauche avec la liste des reserviste dispo, est ce qu'il serait possible de connaitre le nombre de jours de dispo en rapport avec l'embauche.

Dans l'exemple :
1 - 10 jours/10
2 - 8jours/10
3 - 3jours/10
4 - 3jours/10

j'ai peu être mal conçu ma table, c'est pour cela que je vous demande conseil.
Merci beaucoup de votre aide.

#10 Re : HTML, xHTML CSS » fonction mailto » 02-10-2009 18:38:16

peu etre mettre en copie caché:

mailto:p.dupond@example.com?bcc=jacques@example.org

#11 Re : MySQL, PostgreSQL, etc... » Sécurité et insertion dans une base mysql. » 30-09-2009 10:54:05

Une dernière petite chose smile

Lors de l'affichage des données, il n'y à pas une fonction inverse de mysql_real_escape_string pour bien afficher les données?
Comme addslash et stripslash?

Merci

#12 Re : MySQL, PostgreSQL, etc... » [Résolu] Sélectionner un enregistrement aléatoirement en fonction du poids. » 27-09-2009 23:23:03

J'ai réussi à faire ce que je voulais en m'aidant de ton code.
J'ai utilisé array_rand pour sélectionner un index aléatoirement.
Merci beaucoup

#13 Re : MySQL, PostgreSQL, etc... » Clause WHERE dans PHP » 27-09-2009 19:32:45

tu transmets l'id en POST donc tu ne peux pas l'utilisé en GET dans ta requète

#14 Re : MySQL, PostgreSQL, etc... » Sécurité et insertion dans une base mysql. » 30-09-2009 10:54:05

Pour cette raison, je ne pense pas que son utilisation avant insertion en bdd soit une bonne chose, on doit l'utiliser avant affichage.
Pour insertion bdd il faut utiliser mysql_real_escape_string c'est fait pour ça.

Pourquoi ne pas le faire avant si il faut le faire aprés cela revient au même non?


Pour l'insertion, juste mysql_real_escape_string suffit? pas de addslashe ou autre?

#15 MySQL, PostgreSQL, etc... » Sécurité et insertion dans une base mysql. » 30-09-2009 10:54:05

morgan47
Réponses : 5

Bonjour,
j'ai pose des messages sur ce forum smile
Je suis en train de revoir toutes mes bases, ca me fait pas de mal ^^.

Voila actuellement ce que je fais avant d'insérer un enregistrement dans une table :

$var= htmlentities($var, ENT_QUOTES);

Cette ligne me transforme tous les caractères spéciaux en entité html, donc plus de ' ou ".

D'ou ma première question, est ce que si j'utilise cela, il est nécéssaire d'utiliser addslash en plus?

Ma seconde question, est ce que mysql_real_escape_string  est utilie avec htmlentities? ( je sais que la réponse est oui sinon ca existerai pas. mais pourquoi?)

Et dernière question, comment faut t'il réèlement traiter une chaine avant de l'insérer?


Merci beaucoup

#16 Re : HTML, xHTML CSS » Input Text + Select » 24-09-2009 19:24:51

J'ai réussi en faisant sur l a page d'insertion/récupération des données :


<?php
header('Content-Type: text/html; charset=ISO-8859-15');
$marque = utf8_decode($_POST['marque']);
?>

 

#17 Re : HTML, xHTML CSS » Input Text + Select » 24-09-2009 19:24:51

Ce que je veux dire par Ajax et utf-8

C'est que :

xhr.open("POST", page, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-15");
xhr.send(variable);

les variables sont encodé en utf-8 lors de l'envoi.

Car lorsque je passe par un formulaire normal, l'enregistrement dans la table se fait correctement.

#18 Re : MySQL, PostgreSQL, etc... » Clause WHERE dans PHP » 27-09-2009 19:32:45

Soit tu utilises les sessions pour le transmettre de page en page soit tu utilises des champs hidden dans ton formulaire.

<input type="hidden" name="id" value="<? echo $_GET['id']; ?>" />

#19 Re : HTML, xHTML CSS » Input Text + Select » 24-09-2009 19:24:51

Merci pour ta réponse. j'ai réussi à le faire smile

Par contre j'ai un autre soucis avec ajax.

lorsque j'insère des caractères spéciaux des "éà..." ca m'affiche des caractère bizarre dans ma base.
J'ai trouvé sur internet que c'était ajax qui par défaut encode en utf-8, mais je n'arrive pas a forcé ajax à travailler en iso.
Il y a une solution?
Pour l'instant, je fait un utf8_decode avant l'insertion.

#20 Re : HTML, xHTML CSS » Input Text + Select » 24-09-2009 19:24:51

Voila ce que j'ai fait :


<div id="marque">
<?php liste_marques (); ?>
</div>
function liste_marques ()
{
    echo '<select name="listemarque" id="listemarque">';
   
    $sql99 = "SELECT * FROM liste_marques ORDER BY marque ASC";
        $req99 = mysql_query($sql99) or die('Erreur SQL !'.$sql99.'<br>' . mysql_error());
    while ($liste = mysql_fetch_array ($req99))
            {
        echo '<option value="'.$liste['idmarque'].'">'.ucfirst(strtolower(trim($liste['marque']))).'</option>'."\n";
        }
        echo '<option value="am" onclick="javascript:autremarque()">Autre marque</option>';
    echo '</select>';
}

function ajout_marques ($marque)
{
    $sql = "INSERT INTO liste_marques (marque) VALUES ('$marque')";
        $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
}


function ajoutmarque()
{
  url = lister_champs(addmarque);
  request1("ajax/marques.php",url,"marque");
  document.addmarque.marque.value = "";
  document.getElementById("addmarque").style.visibility='hidden';
  return false;
}

function getXhr(){
                                var xhr = null;
        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;
        }
                                return xhr
      }
function request1(page,variable,idmodif) {

        var xhr = getXhr()

   
        xhr.open("POST", page, true);
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        //xhr.send(null);
        xhr.send(variable);
       
        xhr.onreadystatechange = function(){
          // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
          if(xhr.readyState == 4 && xhr.status == 200){
            //alert(xhr.responseText);
            document.getElementById(idmodif).innerHTML = xhr.responseText;

          }
        }

   
}
 


<?php
// ajax/marques.php
include ("../conf.php");
include ("../fonctions.php");

if (isset($_POST['marque'])){
$marque = $_POST['marque'];

connect_sql ();
ajout_marques ($marque);
liste_marques ();
         }
?>
 


tout fonctionne bien.
Mais maintenant j'aimerai que la nouvelle ligne qui a été ajouté soit sélectionné.
Je pourrai le faire en php, lors de la génération de la liste, mais est ce que c'est possible en php?

Merci encore

#21 Re : MySQL, PostgreSQL, etc... » Comment enregistrer les données? » 23-09-2009 11:45:55

Oui je vois le fonctionnement.
pour les clé étrangère, je ne susi pas sour le moteur innodb, je ferrai des jointures.

Merci pour tes renseignements.

#23 Re : HTML, xHTML CSS » Input Text + Select » 24-09-2009 19:24:51

je ne fait référence à aucune technologie justement, je cherche.

C'est pour le site de voiture que je créé,
j'ai la liste des marques, mais si l'on veut ajouter une voiture dont la marque n'est pas dans la liste, je voudrai pouvoir écrire dans la liste comme dans un texbox, pour ajouter la marque lors de la validation du formulaire.

#24 Re : MySQL, PostgreSQL, etc... » Comment enregistrer les données? » 23-09-2009 11:45:55

D'accord, donc si je comprend bien.
Si je veux rajouter des options à la voiture, par exemple clim, vitre électrique...
Il faut que je créé une table options et que j'enregistre toutes les options de la voiture avec l'id de la voiture.

#25 Re : MySQL, PostgreSQL, etc... » Clause WHERE dans PHP » 27-09-2009 19:32:45

chui con j'ai même pas vu le update ^^ je croyai que c'était un insert

Pied de page des forums

Propulsé par FluxBB