PHP|Débutant :: Forums

Advertisement

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

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

#1 Re : Forum Général PHP » Insert boutons radios multiples depuis un formulaire php » 27-06-2012 15:07:10

Egalement, que doit contenir "AND user_id IN ('$list_nonvisible');" comme contenus ? Il faudrait déclarer plus haut par exemple "$list_nonvisible = 1, 2, 3, 4, 5...); ?

Merci Grand maître yikes)

#2 Re : Forum Général PHP » Insert boutons radios multiples depuis un formulaire php » 27-06-2012 15:07:10

Bonjour,
merci pour votre conseil.
Avec cette méthode, si je suis amené à ajouter 2 utilisateurs par exemple, et que mon intranet contient 150 dossiers avec des privilèges, il faut que lorsque je crée l'utilisateur, je lui mettre directement 150 fois ses privilèges à 0 ?

Egalement, que doit contenir "AND user_id IN ('$list_nonvisible');" comme contenus ? Il faudrait déclarer plus haut par exemple "$list_nonvisible = 1, 2, 3, 4, 5...); ?

Merci

#3 Forum Général PHP » Insert boutons radios multiples depuis un formulaire php » 27-06-2012 15:07:10

laurent
Réponses : 4

Bonjour à tous,

J'ai un formulaire qui va me permettre de gérer des droits utilisateurs sur une catégorie précise de fichiers.
J'ai donc mis de multiples boutons radios afin de déterminer ceux qui peuvent ou non voir la catégorie en question.

Voici un rapide aperçu du formulaire :

[img align=http://internet.umour.free.fr/users_rights.png]http://internet.umour.free.fr/users_rights.png[/img]

J'ai créé une table "users_rights" qui est reliée à "users" par une jointure.

Lorsque je valide le formulaire avec les radios cochés, ça ne fonctionne pas. voici mon code :

code qui boucle les boutons radios :

<td><input type="radio" name="user[<?=$data['id']?>]" value="<?=$data['user_id']?>" /></td>
<td><input type="radio" name="user[<?=$data['id']?>]" value="<?=$data['user_id']?>" /></td>

code qui traite le formulaire : si les utilisateurs ont déjà une permission sur la table, on met à jour. S'ils n'ont pas de permissions sur la catégorie, alors on crée une ligne dans la table.

if (isset($_POST['submit_edit_users_rights'])) {

    foreach ( $_POST['user'] as $key => $val ) {        

       $sql -> requete("UPDATE `$db_name`.`users_rights`
                        SET category_id=".$_POST['CategoryID'].",  user_id='.$key.'
                        WHERE category_id=".$_POST['CategoryID']."",1);
       
        if (mysql_affected_rows()==0) {
            $sql -> requete("INSERT INTO `$db_name`.`users_rights`
            (category_id, user_id) values ('".$_POST['CategoryID']."', '$key')",2);
           
        }
 
}

je n'arrive pas vraiment à comprendre ce qui va pas, j'espère avoir été précis dans mon explication.

Merci pour votre aide,

Laurent

#4 Re : Forum Général PHP » Vérifier doublons fichier CSV avant d'utiliser fput() » 02-12-2011 13:45:16

J'ai fais une petite erreur sur mon script du dessus, $fic correspondait à rien, après l'avoir remplacé par $fp,

    if (flock($fp, LOCK_EX)) {
       
        $tab_lignes   = array(ValidateEmail($email));
       
        $nb_lignes = 0;
         
        while($ligne = fgetcsv($fp, 1000, ';'))
        {
            if(in_array($ligne, $tab_lignes))
           
            {
               
                $error = '<p class="error">Deja dans le fichier</p>';
               
            }
         
            ++$nb_lignes;
        }
       
        // Unlock file
        flock($fp, LOCK_UN);
       
    }

j'obtiens tout le temps "Deja dans le fichier"

Une idée ?

Merci...!

#5 Re : Forum Général PHP » Vérifier doublons fichier CSV avant d'utiliser fput() » 02-12-2011 13:45:16

Si je le supprime il ne m'affiche plus rien alors que l'adresse y est

    $fp     = fopen($file, 'r');
    if (flock($fp, LOCK_EX)) { // pose un verrou exclusif
       
        $tab_lignes   = array("test@test.com");
         
        $nb_lignes = 0;
         
        while($ligne = fgetcsv($fic, 0, ';'))
        {
            if(in_array($ligne[0], $tab_lignes))
           
            {
               
                $error .= "Deja dans le fichier";
               
            }
         
            ++$nb_lignes;
        }
       
        flock($fp, LOCK_UN);   // libère le verrou
       
    }
   
    fclose($fp);

#6 Re : Forum Général PHP » Vérifier doublons fichier CSV avant d'utiliser fput() » 02-12-2011 13:45:16

Merci à vous, j'ai bien compris, alors j'ai dû modifier mon code (qui fonctionne presque correctement).

Au lieu de m'afficher une seule fois "Email allready in database", il me l'affiche autant de fois qu'il rencontre de lignes dans le fichier .csv, pourtant mon script lui dit d'afficher ce message uniquement s'il rencontre ce champs non ?

voici mon code :

 $fichier = 'emails_db.csv';

$fic     = fopen($fichier, 'r');
 
$tab_lignes   = array("test@test.com");
 
$nb_lignes = 0;
 
while($ligne = fgetcsv($fic, 0, ';'))
{
    if(in_array($ligne[0], $tab_lignes))
    {
        echo "Deja dans le fichier";
    }else {
        echo "pas dans le fichier";
    }
 
    ++$nb_lignes;
}

fclose($fic);

Réponse du script :
"pas dans le fichierpas dans le fichierpas dans le fichierpas dans le fichierpas dans le fichierpas dans le fichierDeja dans le fichierpas dans le fichierpas dans le fichierpas dans le fichierpas dans le fichier"

#8 Re : Forum Général PHP » Vérifier doublons fichier CSV avant d'utiliser fput() » 02-12-2011 13:45:16

Salut Maljuna,

pardon je n'ai pas compris ?

Pour l'instant j'ai pas vraiment de message d'erreur, en retour j'ai juste "Ajouté" qui s'affiche.

Et si je fais

echo $data[0];

je vois apparaître "email" qui correspond au premier chamsp de mon fichier csv.

#9 Re : Forum Général PHP » Vérifier doublons fichier CSV avant d'utiliser fput() » 02-12-2011 13:45:16

Salut Pierrot,
le problème ici est que je n'utilise pas de requête SQL.

Merci

#10 Forum Général PHP » Vérifier doublons fichier CSV avant d'utiliser fput() » 02-12-2011 13:45:16

laurent
Réponses : 12

Bonsoir à vous,

je suis en train de travailler sur un script qui enregistre la date et l'adresse e-mail d'un formulaire envoyé dans un fichier .csv (ils s'incrémentent les uns à la suite des autres).
Jusque là tout fonctionne, j'ai utilisé la fonction fput().

Là où tout se complique, c'est que j'aimerais vérifier que chaque ligne de mon CSV (contact@serv.net; 12/12/2010 ...) ne soit pas identique à celle qui vient d'être envoyée par le formulaire. Je n'arrive pas à effectuer ce bout de script, voici où j'en suis:

Code qui exploite le CSV pour vérifier que l'e-mail envoyé n'existe pas déjà :

if (($handle = fopen("emails_db.csv", "r")) !== FALSE) {
   
   while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
   
    $email_csv  =     $data[0];
    $date       =     $data[1];
   
    // Si l'email est déjà dans le tableau csv...
    if ($email_csv == "test.azer@gmail.com") {

        echo "Déjà dans la DBB";

    // Sinon on ajoute !
    } else {

        echo "Ajouté";

    }

    // On ferme le fichier
    fclose($handle);
   }
}

voici le code qui fonctionne : celui qui incrémente le fichier .csv :

    // Ligne par ligne
     $ligne = 1;
     
     // On ouvre le fichier CSV
     $fichier = fopen("emails_db.csv","a+");
     
     $commande = "\n" . $email . ";" .
                             $date;
                             
     // On écrit dans le fichier
     fputs($fichier, $commande);
     
    // On ferme le fichier
     fclose($fichier);

Merci à vous pour votre éventuelle aide...!

#11 Re : Forum Général PHP » Requête : trier éléments retournés en les comptant (divisible...) » 01-05-2010 18:32:40

Merci beaucoup,
je crois avoir trouvé la solution donc :

if (($i+1)%4 == 0)

pour l'instant ça a l'air de fonctionner.
merci à vous deux tongue

#12 Re : Forum Général PHP » Requête : trier éléments retournés en les comptant (divisible...) » 01-05-2010 18:32:40

Bonjour pierrot,

en mettant

echo ($i%4==0) ? "<br>"  : "";

après ma  boucle for, le <br> se met à la fin du premier résultat

#13 Forum Général PHP » Requête : trier éléments retournés en les comptant (divisible...) » 01-05-2010 18:32:40

laurent
Réponses : 5

Bonjour à tous,

Mon problème exposé est celui-ci:
J'ai une requête basique qui affiche tous les résultats d'une table de ma base.
Cependant, je souhaiterais qu'à chaque fois que ma requête trouve un élément de $i divisible par 4, alors celui-ci affiche un <br /> juste après.
Par exemple :
Element1 Element2 Element3 Element4<br />
Element5 Element6 Element7 Element8<br />
Element9 Element10 Element11 Element12<br />

voici mon code php:

<?php
              $sql -> requete("SELECT id_project, titre FROM projets order by id_project DESC",1);
                  for($i=0;$i<$sql -> nbr_rows(1);$i++)
                  {
                    $rq = $sql -> farray(1);
                    echo ''.$rq["titre"].'';
                  }
?>

En vous remerciant pour votre participation à la résolution de mon problème.

#14 Re : Forum Général PHP » Insérer une requête dans une boucle for » 04-03-2010 09:54:32

merci maljuna,
après plusieurs recherches, et avoir feuilleter mes bouquins big_smile j'ai trouvé cette solution qui fonctionne (mais qui je pense n'est pas optimale...)

$sql -> requete("Select categories.id_categorie, nom, description
FROM `categories`"
,1);
for($i=0;$i<$sql -> nbr_rows(1);$i++)
  {
    $catParent = $sql -> farray(1);
    echo "<li><a href=\"\" class=\"cat".$catParent['id_categorie']."\">".$catParent['nom']."</a><ul>";
   
    $sql -> requete("Select categories.id_categorie, id_parent, nom, description
    FROM `categories`, `categories_groupes`
    WHERE categories.id_categorie = categories_groupes.id_categorie
    AND id_parent="
.$catParent['id_categorie']."
    "
,2);
    for($i=0;$i<$sql -> nbr_rows(2);$i++)
      {
        $subCat = $sql -> farray(2);
        echo "<li><a href=\"\" class=\"cat".$subCat['id_parent']."\">".$subCat['nom']."</a></li>";
      }
     echo"</ul></li>";
  }

ça fonctionne mais je vais tenter de l'améliorer

#15 Forum Général PHP » Insérer une requête dans une boucle for » 04-03-2010 09:54:32

laurent
Réponses : 3

Bonjour à tous,

afin de mettre en place la navigation sur mon site, je butte devant un problème que je n'arrive pas à résoudre.
ma requête affiche des catégories (donc onglets) qui sont enregistrés dans la table categories. Il y'a également une table "categories_groupes" qui indique si les categories de la table categories ont un lien de parenté ou non (me permettant ainsi de faire des catégories principales ou secondaires...)

mon problème est donc le suivant :
je fais une requête select sur la table categorie et sélectionne les catégories que je souhaite. Je les affiche grâce à une boucle :

     
<ul>
<?php
$sql -> requete("Select id_categorie, nom
      FROM categories  
    order by id_categorie desc"
,1);
      $nbr_r = $sql -> nbr_rows(1);
      if($nbr_r <= 0)
        echo "Aucun article posté dans cette catégorie.";

      for($i=0;$i<$sql -> nbr_rows(1);$i++)
      {
      $element = $sql -> farray(1);  
echo "<li>".$element['nom']."</li>\n"; 
}
?>
</ul>
 

cette premiere requete fonctionne tres bien, mais je souhaitais donc afficher un "sous"menu de la sorte :

     
<ul>
<?php
$sql -> requete("Select id_categorie, nom
      FROM categories  
    order by id_categorie desc"
,1);
      for($i=0;$i<$sql -> nbr_rows(1);$i++)
      {
      $element = $sql -> farray(1);  
echo "<li>".$element['nom']."";
echo "<ul>";
$sql -> requete("Select id_categorie, nom
      FROM categories
where id_parent=1  
    order by id_categorie desc"
,1);
      for($i=0;$i<$sql -> nbr_rows(1);$i++)
      {
      $element = $sql -> farray(1);  
echo "<li>".$element['nom']."</li>\n";   
}
echo "</ul>";
echo "</li>";
</ul>
 

le probleme est que ce code ne fonctionne donc pas...  j'ai testé d'autres fonctionnalités mais sans succès...

merci pour votre éventuelle aide.

Laurent.

#17 Re : Forum Général PHP » Appliquer un attribut HTML au dernier retour de ma boucle while » 10-05-2009 17:44:18

merci bcp, j'avais pas pensé à foreach!!!
l'utilité d'un tableau array ici serait inutile ?

#18 Forum Général PHP » Appliquer un attribut HTML au dernier retour de ma boucle while » 10-05-2009 17:44:18

laurent
Réponses : 3

Bonjour à tous,

J'ai une liste déroulante de type
<ul>
<li></li>
...
<li></li>
</ul>

je souhaiterai qu'au retour de mon dernier "<li></li>" renvoyé par ma boucle while, affecter à celui-ci un attribut html comme ceci: "<li class="dernier"></li>"

je ne parviens pas à trouver la solution...

voici ma requête sql:

    $exercices="Select id, libelle_cat
    FROM type_categorie
    ORDER BY id DESC LIMIT 5";
    $req=donne_resultat_SQL($exercices);
              while($res = mysql_fetch_array($req))
    {
      echo "<li>".$res['libelle_cat']."</li>";
  }

merci pour votre éventuelle aide...

Pied de page des forums

Propulsé par FluxBB