PHP|Débutant :: Forums

Advertisement

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

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

#51 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14

Bonjour moogli. Et merci pour l'aide que tu peux m'apporter.
Je reprends donc ! Je ne remet pas les scripts. Ils sont plus haut (hier, 12h52).

J'ai une table mysql (photos) qui comporte principalement l'"idph" (identifiant unique de l'enregistrement), le "nom" de la photo, le "numero" de la photo (qui au départ est le même que l'idph) .....

J'affiche les images à l'écran (via un menu des gestion de site). Dessous, j'affiche le "numero" de la photo que je peux modifier si je veux changer l'ordre d'affichage. Bien sûr, l'affichage initial se fera par "ORDER BY numero".
Le nombre de photos affichées n'est pas limité, ni pré-défini.

Je n'arrive donc pas à enregistrer dans la base le ou les numéros modifiés des photos concernées.

#52 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14
Jiinn a écrit :

Hello, Pour l'ordre pourquoi tu ne veux pas le demander a ta requête sql avec un ORDER BY numero ?

--> Lien d'aide

En fait, ce que je veux faire, c'est modifier l'ordre d'affichage.
A l'enregistrement de la photo, le numéro d'ordre d'affichage est = à l'idph (identifiant unique). Mais je pourrais vouloir modifier l'ordre .... par exemple, afficher la 5° photo en 2° .....

#53 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14

Bonjour Maskime et meilleurs voeux smile.

Me revoici, car je retrouve un peu de temps pour replonger sur mon problème.
Pour rafraichir les esprits, j'affiche un album photo dont l'identifiant unique des photos est idph. Chaque enregistrement comporte un champs "numero" qui donne l'ordre d'affichage des photos dans l'album.
J'ai testé ton script ! Mais il ne se passe rien. Pas de message d'erreur, pas de changement.

Affichage de l'album photo :

$id = $_GET['id'];

$select = "SELECT * FROM alb_photos where id='$id'";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

   while($row = mysql_fetch_array($result))
  {
      echo '<div class="titre">'.$row['titre_album'].'</div>';   
      echo '<div class="presentation1">'.$row['soustitre'].'</div>';  
             
$select2 = "SELECT * FROM photos where idliaison='$id'";
$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() );
   
    echo '<center><table><tr>';

while($row2 = mysql_fetch_array($result2))
{
echo '<form action="maj_ordre_photos.php?idph='. $row2['idph'] .' & numero='. $row2['numero'] .'"  method="POST">';
echo '<input type=hidden name="idph" value="'.$row2['idph'] .'">';
echo '<td><img border=0 height="50" src="../../images/alb_photos/' . $row2['photo'] . '"><center>' .$row2['nom']. '<br>
          <input name="numero" type="text" id="numero" value="'
.$row2['numero'] .'" size="1" maxlength="3"></td>';     
}
echo '</tr></table><p>';
  }
 
  echo '<input type="button" name="lien" value="Annuler" onClick="self.location.href=\'aff_alb_photos.php\'">';
  echo '<input type="submit" value="envoyer" /></center>';
echo '</form>';

Mise à jour du champs numéro dans la base :

$idph = $_POST['idph'];
    $numero = $_POST['numero'];
foreach($_POST as $sKey => $iNewOrderValue){ // Ici je récuère l'ensemble des clés qui sont dans le $_POST
  if(strpos('numero_', $sKey) !== false){ // Ici je regarde si le champs en cours correspond à un champs qui sert à changer l'ordre d'affichage
    list($sUseless, $idph) = explode('_', $sKey); // Ici je récupère l'id de la photo dans le nom du champ
    $result=mysql_query("UPDATE photos SET numero='$iNewOrderValue' WHERE idph='$idph'"); // Ici je fais la mise àa jour de ta BDD
  }
}

En fait, pour ce dernier, je n'ai rien changé, et il ne se passe rien !
Si j'enlève tout ce qui fait référence à idph et que je change un numéro, tous les numéros changes ....

#54 Re : Forum Général PHP » Vérifier existance élément dans base mysql » 16-01-2010 17:59:40

t14

Bonjour Pierrot,

Je ne connais pas trop ces fonctions, mais pourquoi pas .....
Je suppose que $name correspond au nom du fichier, et que $bcl correspond à son extension qui prendra des valeurs successives en cas de doublon !

Mais si $bcl n’existe pas encore (au début) ?

J'ai écris ceci :

function NameFile($fichier,$bcl)
{
  $nb=current(mysql_fetch_array(mysql_query("SELECT count(*) FROM photos WHERE nom='$fichier$bcl'")));
  if ($nb>0)
  {
     $bcl++;
     $fichier=NameFile($fichier,$bcl);
  }
  else{
    return $fichier;
  }
}

et j'ai cette erreur :

Fatal error: Cannot redeclare namefile() (previously declared in ........

#55 Re : Forum Général PHP » Vérifier existance élément dans base mysql » 16-01-2010 17:59:40

t14

:mad:Ouais ! Ben c'est pô marrant car j'ai toujours pô trouvé ....

Si j'écris ceci, c'est pareil. Le nom ne change pas (ajout de la valeur +1 à la fin) sad :


$fichier = $_POST['fichier'];

$sql = mysql_query('SELECT idph FROM photos WHERE nom='.$fichier );
if( ($nbDePhotosAyantLeMemeNom = mysql_num_rows($sql)) > 0 )
    $fichier = $nbDePhotosAyantLeMemeNom + 1;

Comprende pô .... ???? mad

Encore un 'tit coup de main ?
tongue

#56 Re : Forum Général PHP » Vérifier existance élément dans base mysql » 16-01-2010 17:59:40

t14
Pierrot a écrit :

mysql_num_rows()  ce serai mieux wink
a++

Merci Pierrot  ! Autant pour moi ...... tongue

mais maintenant j'ai l'erreur Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Alors j'ai modifié en simplifiant :

$fichier = $_POST['fichier'];

$nomDeFichierDansLaBase = $fichier;

$sql = mysql_query('SELECT idph FROM photos WHERE nom='.$nomDeFichierDansLaBase );
$nb = mysql_num_rows($sql);
if($nb > 0 )
  $fichier = $nbDePhotosAyantLeMemeNom + 1;

Et si je fais un echo de $fichier et $nomDeFichierDansLaBase, ces variables sont vides ... ???? sad  C'est navrant ...... mad

#57 Re : Forum Général PHP » Vérifier existance élément dans base mysql » 16-01-2010 17:59:40

t14

OK !!!! Après relecture je comprends mieux où tu veux en venir ....
Par contre, j'ai encore une erreur où je ne trouve pas la solution :

Fatal error: Call to undefined function mysql_num_row()

J'ai cru que c'était parceque la base était vide, mais non !!!!!

hmm

#58 Re : Forum Général PHP » Vérifier existance élément dans base mysql » 16-01-2010 17:59:40

t14

Bonsoir xTG.

OK et merci pour le bout de script. smile
Mais qu'est ce que $nbDePhotosAyantLeMemeNom ? Comment le récupérer ? hmm

#59 Re : Forum Général PHP » Vérifier existance élément dans base mysql » 16-01-2010 17:59:40

t14
xTG a écrit :

La variable $nouveauNomDeFichier n'est pas là pour faire joli. roll

Bonjour xTG, et meilleurs voeux.

OK, j'abonde dans ton sens même si je ne comprends pas tout ........ !!!!

J'ai écrit ceici :

$fichier = $_POST['fichier'];

$nbfichier = count($fichier);
$newfichier = $fichier.($nbfichier + 1);
..........
$sql2 = "INSERT INTO photos(nom, lien) VALUES('$fic[0]', '$dossier$newfichier')";
mysql_query($sql2) or die('Erreur SQL !'.$req_fich.mysql_error());

mais là, si je fais un echo des variables, $nbfichier reste à 0, $newfichier reste à 1. Ce qui fait que je récupère un nom toujours = à 1.

#60 Re : Forum Général PHP » Vérifier existance élément dans base mysql » 16-01-2010 17:59:40

t14

En fait, le problème est à l'upload, donc à l'écriture dans la base.

Si j'upload 2 photos du même nom, les deux seront inscrites dans la base, mais le dossier de réception ne comportera que la deuxième image qui aura écrasé la première (du même nom). sad

A l'upload, j'écris :

Photo 4 : <INPUT TYPE=FILE NAME="fichier[]" size="76"><br>
Commentaire Photo 4:<br>
<INPUT type=text name="commentaire[]" id="texte4" size="90" maxlength="500"><p>

Faudrait peut-être que je change le NAME="fichier[]" et lui rajouter une extension ? Mais je sais pas comment ! hmm
Et supposons un cas : j'upload "photo123.jpeg" en 4° position. Deux jours après, je rajoute des photos pour le même album, et par le plus grand des hasards je cherche à uploader une photo (autre) nommée aussi "photo123.jpeg" en 4° position. Ce deuxième upload écrasera le premier ! hmm

Y'a de quoi se tirer les cheveux, non ?

#61 Re : Forum Général PHP » Vérifier existance élément dans base mysql » 16-01-2010 17:59:40

t14
xTG a écrit :

Enregistres-tu le chemin de l'image ?
Si oui il n'y a aucune raison qu'il t'affiche deux fois l'image de la mer.

D'après tes derniers propos j'ai du mal à me représenter ton système. En général on enregistre un ID unique pour chaque photo, un nom pour l'affichage et un chemin vers le fichier.
Donc avoir le même nom ne pose pas problème vu que le chemin vers le fichier est différent.
Et dans le cas où tu aurais deux fichiers ayant le même nom ils ne sont pas dans le même répertoire sinon c'est impossible, donc ce n'est pas un soucis non plus.

Les images je les upload dans un fichier sur serveur. Donc, elles se retrouvent toute ensemble, avec le même chemin d'accès. Que j'enregistre dans la base le chemin (ce que j'avais fait au début) style : "images/gestion/photo.jpg" , ou que j'enregistre uniquement le nom "photo.jpg" et que je mette le chemin dans le script, le résultat mènera au même vu que ce sera le même chemin, et que si il y a deux photos du même nom = conflit. C'est pour ça que je veux pouvoir changer le nom si il existe déjà dans la base.
Je suis d'accord avec toi pour l'id unique (idph pour moi, ici).

J'ai deux tables. Une avec l'id unique, titre et soustitre. L'autre avec l'idph unique, un idliaison identique à l'id de la première table (pour récupérer le titre et soustitre de la l'album), le nom de la photo, le lien, commentaire, .....

A l'upload, si je tente d'uploader ^deux images avec le même nom, je n'aurais que la deuxième. Donc, j'en ai perdu une ......

Faudrait peut-être que je fasse autrement, mais comment ????

#62 Re : Forum Général PHP » Vérifier existance élément dans base mysql » 16-01-2010 17:59:40

t14
xTG a écrit :

Pourquoi mettre l'attribut nom en tant que clé alors que tu as un ID ?
Le fait d'enlever ton attribut nom de la clé te permettrai sans soucis ce que tu veux, tu n'aurai même pas à renommer.

Enfin après il semble que tu porte un intérêt à ce renommage. Que comptes-tu faire des noms ? Quel intérêt as-tu à avoir deux mêmes fichiers dont l'un est appelé fichier1 et l'autre fichier2 ?

Pourquoi mettre l'attribut nom en tant que clé alors que tu as un ID ? => c'est parcequ'il n'y a que le nom que je cherche, pour voir s'il existe déjà dans la base.

Le fait d'enlever ton attribut nom de la clé te permettrai sans soucis ce que tu veux, tu n'aurai même pas à renommer => ben le renommer, c'est ce que je cherche à faire, pour éviter qu'il y ait deux fois le même nom.

Que comptes-tu faire des noms ? => J'affiche les photos à l'écran. Et s'il y a deux fois le même nom, il y a deux fois l'affichage de la même foto.

Quel intérêt as-tu à avoir deux mêmes fichiers dont l'un est appelé fichier1 et l'autre fichier2  => pour éviter l'affichage en double de la même foto.

Exemple : je mets en place une image représentant la mer, ayant pour nom "1.jpeg". Le lendemain je veux mettre d'autres images. Je met en place une image représentant le ciel, ayant pour nom "1.jpeg". Ben quand je lirais ma base et que j'afficherais les images, je verrais deux fois celle représentant la mer .....

#63 Forum Général PHP » Vérifier existance élément dans base mysql » 16-01-2010 17:59:40

t14
Réponses : 20

Bonjour,

Je cherche à enregistrer des éléments (images) dans ma base, mais avant l'enregistrement, je veux tester si le nom existe déjà. Si il existe, le nouveau nom se modifiera en un style "fichier02".

En premier lieu, je lit la base et je recherche la valeur de $nom (identifiant unique de cet enregistrement = idph (sous table). id provient d'une autre table ...)
$fichier est l'élément que je veux inscrire dans la table.

$sql = "SELECT nom FROM photos WHERE idph = '$id' ";    
$resultat =mysql_query($sql) or die('Erreur SQL !'.$req_fich.mysql_error());
$ligne=mysql_fetch_array($resultat);       // extraction d'une ligne du résultat
$nom=$ligne['nom'];

if ($fichier == $nom)
  $fichier = $fichier .'02';

A ce point, si je veux enregistrer un fichier (B) portant un nom déjà existant (A) dans la base, j'aurais deux fois l'existant (A). Et à l'affichage, j'aurais donc deux fois la même image (A).

Merci d'avance de m'aider .....

#64 Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14
Réponses : 32

Bonjour,

J'affiche des photos (en php) suite à lecture de ma base.
Je voudrais modifier l'ordre d'affichage, sans avoir à intervenir directement sur la base.
J'ai une table alb_photos qui comporte comme champs : id (l'identifiant), titre_album, soustitre.
Et une table photos avec : idph (identifiant unique), idliaison (qui relie et est identique à l'id de la table précédente), numero (qui permettra l'ordre d'affichage), lien (qui mène à la photo dans un fichier).

J'affiche donc une série de photos avec son numéro dessous que je veux changer et modifier dans la base. Les numéros sont issus du champ (numero).

$id = $_GET["id"];

$requete="SELECT alb_photos.id, alb_photos.titre_album, alb_photos.soustitre, photos.idph, photos.idliaison, photos.numero, photos.lien
FROM alb_photos LEFT JOIN photos ON alb_photos.id=photos.idliaison
WHERE id = '$id' "
;
$result = mysql_query($requete,$link) or exit ('Erreur : '.mysql_error() );

$idphEncours = 0;
while($row = mysql_fetch_array($result))
{
if( $idphEnCours != $row['idph'] )
  {  

    echo '<div class="centrer">';
        echo '<h2><u>'.$row['titre_album'].'</h2></u>';      
        echo '<h4><i>'.$row['soustitre'].'</i></h4>';
    echo '<table><tr>';
  }
if ($idphEnCours = $row['idph'])
  {
echo '<form action="maj_ordre_photos.php"  method="POST">';
echo '<input type=hidden name="idph" value="'.$row['idph'] .'">';
echo '<td><img border=0 height="50" src="' . $row['lien'] . '"><center>
          <input name="numero" type="text" id="numero" value="'
.$row['numero'] .'" size="1" maxlength="3"></center></td>';     
  }
else
  {
  echo '</tr></table></div>';
  }
}
echo '<input type="submit" value="envoyer" />';
echo '</form>';

puis le code "maj_ordre_photos.php" :

$idph = $_POST['idph'];
$numero = $_POST['numero'];
$result=mysql_query("UPDATE photos SET numero='$numero' WHERE idph='$idph'");

Mais dans ce dernier script, je ne récupère à chaque fois que l'idph et le numéro de la dernière photo affichée. Je ne peux donc modifier les autres.

Merci de bien vouloir m'aider.

#65 Re : Forum Général PHP » passage variables php » 14-12-2009 08:37:50

t14
Pierrot a écrit :

echo '<a href ="photo_suiv.php?idph='.$idph.'&id_liaison='.$id_liaison.'"><IMG src="../../images/next.gif" border=0 alt="Photo Suivante" width="27" height="30"><br></a></td>';
 

comme ça, ça passeras mieux wink
a++

C'est pareil ...... sad

#66 Forum Général PHP » passage variables php » 14-12-2009 08:37:50

t14
Réponses : 3

Bonjour,

J'ai un problème pour passer 2 variables d'un script php à un autre. La 1° passe, mais pas la deuxième.

La ligne du script qui envoie la variable :

echo '<a href ="photo_suiv.php?idph='.$idph.' & id_liaison='.$id_liaison.'"><IMG src="../../images/next.gif" border=0 alt="Photo Suivante" width="27" height="30"><br></a></td>';

La réception :

$idph = $_GET['idph'];
$id_liaison = $_GET['id_liaison'];

Si je fais var_dump($_GET['idph']), je retrouve mon idph : string(2) "1 " (idph = 1).
Mais avec var_dump($_GET['id_liaison']), j'ai string(0) "" (id_liaison devrait être = à 1 également ....).


Merci de votre aide .....

#67 Forum Général PHP » Pb lecture table mysql » 06-12-2009 21:26:18

t14
Réponses : 1

Bonjour,

Je ne sais pas ce qui se passe, je n'arrive pas à lire une simple table mysql sad :

$idph = $_GET['idph'];
echo("<br>idph = $idph") ; // => recupération et lecture idph, identifiant de l'enregistrement, ok
$requete= "SELECT lien, commentaire FROM photos WHERE idph like '$idph' ";
$result = mysql_query($requete,$link) or exit ('Erreur : '.mysql_error() );
echo("<br>commentaire = $commentaire") ; // => récupération du champs = vise alors qu'il existe bien !!! ???

Où est mon erreur ?
$commentaire est du texte. Est-ce pour cela ?

Merci hmm

#68 Forum Général PHP » Affichage pop-up php » 04-12-2009 05:57:32

t14
Réponses : 2

Bonjour,

Je cherche à afficher un pop-up, mais les caractéristiques que je spécifie pour l'affichage ne sont pas respectées. Je dois avoir une erreur dans ma ligne !!!!!  Peut-être un "\" en trop ?

Voici pour l'affichage du pop-up :

  echo '<td><a href ="photo.php?mode=affiche&idph='.$row['idph'].'" target="wclose" onclick="window.open(\'photo.php?lien=\'. $row[\'lien\'] .\' \',\'wclose\',\'width=455,height=505,toolbar=no,status=no,left=20,top=20\')"><img src="'.$row['lien'].'" border=0 height="50" ><br></a></td>';

Merci d'avance pour vos conseils

#69 Forum Général PHP » multi upload » 18-11-2009 13:36:22

t14
Réponses : 1

Bonjour,

Je cherche à faire une page pour uploader plusieurs fichiers en même temps sur un serveur.
Voici ce que j'ai fait et où j'en suis :

1) pour la page de saisie :

<FORM ACTION="add1_alb_photos.php" METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE VALUE=20000000>
<input type="hidden" name="posted">
Fichier #1 : <INPUT TYPE=FILE NAME="userfile[]"><BR>
Fichier #2 : <INPUT TYPE=FILE NAME="userfile[]"><BR>
Fichier #3 : <INPUT TYPE=FILE NAME="userfile[]"><BR>
<INPUT TYPE=SUBMIT value="Téléchargement">
</FORM>

et pour le script php d'insertion du fichier dans le dossier désiré (en local, pour l'instant) :

for ($i = 0; $i < count($_FILES['userfile']['name']); $i++)
{
    if (isset($_POST['posted']))
    {
        $content_dir = 'upload/'; // Vérifie que ce dossier existe
        $tmp_file = $_FILES['userfile']['tmp_name'][$i];
        $nom_file = $_FILES['userfile']['name'][$i];
        if (!is_uploaded_file($tmp_file))
            exit('Le fichier est introuvable');
       
        $type_file = $_FILES['userfile']['type'];
        $allowedExt = array('jpg', 'jpeg', 'bmp', 'gif', 'png');
        if (in_array(strtolower($type_file), $allowedExt))
            exit('Le fichier n\'est pas une image');
       
        $name_file = $_FILES['userfile']['name'];
        if (preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file))
            exit('Nom de fichier non valide');
       
        if (!move_uploaded_file($tmp_file, $content_dir.$name_file))
            exit('Impossible de copier le fichier dans '.$content_dir);
       
        echo 'Le fichier a bien été uploadé';
    }
}
?>

Là, j'ai le message que le fichier a bien été uploadé (3x pour les trois fichiers), mais dans mon dossier de destination "upload", j'ai un fichier Array et c'est tout !!!! ????
Pourquoi ? Comment cela se fait-il ?

Merci

#70 Re : Forum Général PHP » Récupérer identifiant image pour suppression » 01-11-2009 10:20:06

t14

C'est bonnnnnnnnnnnnnnn !!!!!! lol Ca marche !!!!!!! tongue

J'ai modifié mon script de suppression, et je supprime donc les liens de l'image dans la base ainsi que l'image elle-même dans le dossier .... cool

Je te remercie pour l'aide que tu m'as apporté ... tongue

A ++

#71 Re : Forum Général PHP » Récupérer identifiant image pour suppression » 01-11-2009 10:20:06

t14

Bonjour xTG.
J'ai revérifié le code d'après ce que tu m'avais marqué précédemment.
J'ai modifié  href="./supp_ok_pj.php?mode=suppression&id='.$id.'" en  href="./supp_ok_pj.php?mode=suppression&id='.$row2['idpj'].'"
Là, effectivement, je lis l'identifiant (idpj) de l'image. Ca avance .... smile
Par contre, le script de suppression me dit :

Erreur : Unknown column 'id' in 'where clause'  sad

#72 Re : Forum Général PHP » Récupérer identifiant image pour suppression » 01-11-2009 10:20:06

t14

C'est ça qui est bizarre !!! Ma requête devrait fonctionner ...... mad

J'comprend rien !!!!!!!!! Je vois pas où est l'erreur ????

$select2 = "SELECT * FROM upload where id_liaison='$id'";
$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() );

Sinon, plutôt que de faire <a href="./supp_ok_pj.php?mode=suppression&id='.$id.'"><img border ..... , y'a pas une écriture qui permette de supprimer directement une image en cliquant dessus ?

#73 Re : Forum Général PHP » Récupérer identifiant image pour suppression » 01-11-2009 10:20:06

t14
xTG a écrit :

La clause where te sers de filtre pour la requête.
Elle récupère tous les champs comportant la valeur que tu lui donnes.

Tu m'as dit que idpj était l'id de ton image dans la base de donnée, si la requête te dis que ce champs n'existe pas c'est que tu ne m'as pas tout dit. ^^

Je vais donc te décrire mes tables.
Dans la table manifestations : id (valeur unique), texte, .... (peut importe le reste)
Dans la table upload : idpj (valeur unique), id_liaison (égal à id de manifestations, qui sert d'association de l'élément entre les 2 tables), fichier (nom du fichier), lien_fichier (lien pour retrouver où est enregistré le fichier), extension (extension du fichier).

Et dans la première partie, je n'arrive pas à récupérer l'idpj des images affichées ?? hmm

#74 Re : Forum Général PHP » Récupérer identifiant image pour suppression » 01-11-2009 10:20:06

t14

Merci xTG ! Mais en retour j'ai l'erreur Unknown column 'id' in 'where clause'

Et j'ai l'impression de ne pas récupérer, donc de lire l'idpj dans la première partie !!!?

Pffffff ......... sad

#75 Re : Forum Général PHP » Récupérer identifiant image pour suppression » 01-11-2009 10:20:06

t14

Tout à fait, l'identifiant de mon image est bien idpj.
Je fais comment pour deleter à partir de "lien_fichier" ??? Comment passer le paramètre du 1° script au 2° ????

Pied de page des forums

Propulsé par FluxBB