[PHP] Problème de dossier partage

Résolu/Fermé
nasbe Messages postés 30 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 juin 2008 - 25 sept. 2007 à 18:10
 nasbe - 26 sept. 2007 à 19:52
Voici ci-dessous un petit script qui fonctionne, simplement lorsque je change le chemin de destination comme suit, celà me met le message d'erreur Warning: Invalid argument supplied for foreach()

$Fichier ="\\PC-DE-NASBE\Users\AdressageIP.txt";

J'ai fais des recherches sur le net, en vain.
Merci de pouvoir m'aider.


<?php

$Fichier = "C:\\Users\\Nasbe\\Desktop\\AdressageIP.txt";

if (file_exists($Fichier)) {
$resultat=file($Fichier);
}

$bd ='gestionacces';
$lien = mysql_pconnect ('localhost', 'root', '');
mysql_select_db($bd);
$table = 'utilisateurs';
if ($lien == FALSE){
echo "connexion impossible à la base $bd";
} else {
$requeteSuppression = "Delete From utilisateurs";
mysql_query($requeteSuppression);

foreach ($resultat as $res) {
$champs = explode(",", $res);
$requeteAjout = "INSERT INTO utilisateurs";
$requeteAjout .= "(IdUtilisateur, NomUtilisateur, IP)";
$requeteAjout .= "VALUES";
$requeteAjout .= "(".$champs[0].", '".$champs[1]."', '".$champs[2]."')";

mysql_query($requeteAjout);
}


mysql_close($lien);
}
?>
A voir également:

8 réponses

sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
25 sept. 2007 à 18:16
bonjour,
dans ton script, c'est normal que tu es des doubles \\
0
nasbe Messages postés 30 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 juin 2008
25 sept. 2007 à 18:32
Non on j'en ai pas en fait.

$Fichier = "C:\Users\Nasbe\Desktop\AdressageIP.txt";

Mais le problème n'est pas de là. Avec ce chemin là, ca fonctionne, c'est avec l'autre que ca coince.
0
sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
25 sept. 2007 à 18:37
je voi double alors


<?php

$Fichier = "C:\\Users\\Nasbe\\Desktop\\AdressageIP.txt";

if (file_exists($Fichier)) {



sinon tu as mal fait ton ouverture de fichier
$fichier = fopen('C:\Users\Nasbe\Desktop\AdressageIP.txt', 'r+');

le r veux dire "read", le + veux dire que li le fichier n'existe pas on le créé, et que l'on peux y écrire.
0
nasbe Messages postés 30 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 juin 2008
25 sept. 2007 à 19:27
la fonction file s'occupe du fopen et autre fgets.

if (file_exists($Fichier)) {
$resultat=file($Fichier);<


et pour l'histoire des \\, c'est parce que j'ai fais des tests mais dans ma version j'ai uniquement des \. Donc tu peux remplacer les \\ par des \, ca ne change en rien.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
25 sept. 2007 à 23:16
J'interviens juste pour l'affaire des simples et doubles quotes en PHP si j'ai bien retenu mes leçons et mes expériences personnelles :

L'utilisation de simples quotes prend la chaine comme elle vient, caractère par caractère et aucune variable ni aucun code d'échappement n'est traité. Donc on ne doit pas doubler le caractère barre oblique inverse.

L'utilisation de doubles quotes analyse la chaîne qui se trouve entourée. A l'exécution c'est plus lent pour cette raison mais les caractères d'échappement sont pris en compte. On est alors obligés de doubler les barres obliques inverses.

Le sujet est placé sur résolu (comment ?) mais personnellement j'aurais suggéré de tester qu'on entre bien dans le test file_exist. Ta variable $resultat doit contenir forcément un tableau, si pas il met évidemment une erreur puisque non initialisée, elle peut valoir n'importe quoi.

Si le chemin est \\ordinateur\utilisateur
En utilisant des doubles quotes il faudrait écrire "\\\\ordinateur\\utilisateur"
Ou normalement en utilisant de simples quotes.

C'était ça ? :D
0
Nickel, c'était exactement ca: $Fichier = "\\\\PC-DE-NASBE\Users\AdressageIPreseau.txt";

je te remercie infiniment.
J'ai encore un autre petit souci.
Je n'arrive pas insérer dans ma table, ou du moins pas comme je l'aimerai, voici mon script

<?php


$Fichier = "\\\\PC-DE-NASBE\Users\AdressageIPreseau.txt";

if (file_exists($Fichier)) {
$resultat=file($Fichier);
}

$bd ='gestionacces';
$lien = mysql_pconnect ('localhost', 'root', '');
mysql_select_db($bd);
$table = 'utilisateurs';
if ($lien == FALSE){
echo "connexion impossible à la base $bd";
} else {
//$requeteSuppression = "Delete From utilisateurs";
//mysql_query($requeteSuppression);

foreach ($resultat as $res) {
$champs = explode(",", $res);
$requeteAjout = "INSERT INTO utilisateurs";
$requeteAjout .= "(NomUtilisateur, IP)";
$requeteAjout .= "VALUES";
$requeteAjout .= "(".$champs[0].", '".$champs[1]."')";

mysql_query($requeteAjout);
}


mysql_close($lien);
}
?>


Et voici mon fichier texte

,Jean,192.168.1.5,
,Nasbe,192.168.1.2,
,Louis,192.168.2.5,

Voici ma BD

IdUtilisateur, NomUtilisateur, IP

Mon champs IdUtilisateur est en auto-increment. Je ne comprends pas pourquoi il n'y pas d'insertion alors que si je le fais manuellement (import), je n'ai aucun problème à ce niveau là. Aurais-tu une explication?? Je sèche depuis pas mal de temps.
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
26 sept. 2007 à 19:42
Je t'emprie ;-)

Pour ton autre problème, je suppose que NomUtilisateur et IP sont des champs textuels. Dans ce cas je suis quasiment certain que MySql te renvoie un message d'erreur lors de l'exécution de $requeteAjout parce que si je suppose que :

$champs[0] = "Jean"
$champs[1] = "192.168.1.5"

(ça aussi à vérifier)

Ta requête va donner :

INSERT INTO utilisateurs(NomUtilisateur, IP)VALUES(Jean, '192.168.1.5');

Ce qui fait qu'il manque des simples quotes autour de "Jean" alors que tu le fais correctement pour l'IP.

Enfin je me permets de conclure que tu as peu d'expérience en programmation mais à l'avenir tu pourras apprendre à débuguer toi-même tes scripts en faisant des echo de tes variables un peu partout dans le code. Les requêtes aussi c'est très intéressant de les afficher et si tu le fais tu auras exactement ce que je t'ai écrit (sauf minime erreur de ma part, j'ai fait ça à la main).

Voilà, tiens-nous toujours au courant ça fait toujours plaisir. :-)
0
C'est bon j'ai pu régler mes problèmes d'insertion, c'était effectivement un problème avec les guillements.
Pendant que je t'ai sous la main, lol.

J'ai créer en PHP, une liste déroulante dynamique, elle récupère les données d'une table. Maintenant ce que j'aimerai faire, c'est que quand je clique sur un bouton supprimer, je puisse récupérer la valeur de la liste déroulante sélectionnée et faire des requetes SQL afin de supprimer des enregistrements.

J'ai fais passablement de recherche mais en vain, si t'avait une piste de comment faire ca ou du moins des exemples, merci d'avance.

Je te met quand même le code de la création de la liste déroulante et le formulaire.

<?php
// Création de la liste déroulante des groupes
$bd ='gestionacces';

$lien = mysql_pconnect ('localhost', 'root', '');
mysql_select_db($bd);
$table = 'groupe';
if ($lien == FALSE){
echo "connexion impossible à la base $bd";
} else

$sql = mysql_query ("SELECT IdGroupe, Groupe FROM $table ORDER BY Groupe");
if ($sql == FALSE){
echo "erreur de resultat";
echo mysql_error();
} else {
//Exécution de la requête
$ListeGroupe = "<SELECT NAME='listeGroupe'>";
$ListeGroupe.= "<OPTION VALUE=0>Choisissez</OPTION>";
// On boucle sur la table
while ($tableauGroupes = mysql_fetch_array($sql)) {
$IdGroupe = $tableauGroupes["IdGroupe"];
$Groupe = $tableauGroupes["Groupe"];
$ListeGroupe .= "<OPTION VALUE='$IdGroupe'>$Groupe</OPTION>";
}
}
$ListeGroupe .= "</SELECT>";
mysql_close($lien);
?>



et le formulaire

<html>
<form Method="POST" Action="<?echo $_SERVER["PHP_SELF"]?>">
<fieldset>
<legend>Supprimer un groupe</legend>

<table>
<tr></tr>
<tr>
<td>Nom du groupe: </td>
<td><?php print $ListeGroupe;?></td>
</tr>
<tr>
<td></td>
<td><input type ="submit" name = "Supprimer" value="Supprimer"></td>
</tr>
</table>
</fieldset>
0