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 » probleme avec krsort() et rsort() » 13-04-2012 12:24:54

Je ne vois pas ou tu vois du mépris !!!!!

Apelle ca de la déception, moi j'appelle ca de l'ironie méprisante :

Laisse tomber, Jc, je crois que nous avons mieux à faire.

j'espère que tu n'en voudras pas à un has been de te citer librement ultérieurement.

Faudrait-il encore que cela t'interesse, ce que je doute, car visiblement comme la plupart, tu préfères utiliser les technologies sur lesquelles tu es le plus à l'aise / à la mode plutôt que d'opter pour un choix technique adapté/pertinent.

C'est moi qui suis décu, j'ai demandé de l'aide sur ce forum auparavant et MK m'a toujours répondu, avec pédagogie, sans donner la solution toute faite, mais en mettant sur la piste. Toi aussi si je me souviens bien. C'est quelque chose qu'on ne trouve que rarement ailleurs. J'ai l'impression qu'à force de répondre à des personnes qui n'ont pas leur niveau de compétence, une certaine fatigue s'est installée

Excuse moi mais..... je n'arrive plus à me retenir.....

, pour ne pas dire une certaine irritabilité, ce que je peux comprendre... Enfin bon, c'est grâce à PHPdebutant que j'ai commencé à développer un peu, j'espère avec des bonnes pratiques. Merci quand même MK...

#2 Re : Forum Général PHP » probleme avec krsort() et rsort() » 13-04-2012 12:24:54

@Jc : bien sur, pas de probleme pour me citer, ca te permettra de briller encore plus si c'est possible, la lumière qui émane de ta personne est déja aveuglante.

@MK : Eh oui, vivre d'expédients... on en est tous là.

Juste une précision : la modélisation de ma base, ce n'est pas moi qui l'ai faite. Par ailleurs, j'ai demandé de l'aide sur un point précis, sans expliquer tout mon code, et ce pour être simple et synthétique.
Quant à "has been" je n'y ai fait référence que par rapport aux "technologies à la mode" évoquées par Jc. Je ne savais pas qu'il y avait des modes dans les technologies, mais c'est vrai que je ne suis pas un grand maitre jedi, juste un petit paddawan.

Allez, je vous laisse, vous avez surement mieux à faire en effet : mépriser ceux qui n'ont pas votre niveau par exemple. Ca semble vous occuper pas mal.

#3 Re : Forum Général PHP » probleme avec krsort() et rsort() » 13-04-2012 12:24:54

Bonjour,
j'ai classé les données d'une ligne de ma table, et non pas les lignes par rapport à une colonne de ma table. ORDER BY dans une requête SQL classe les lignes par rapport à une donnée située dans une colonne de cette ligne, et n'a de sens que si plusieurs lignes sont retournées, si je ne m'abuse. Je ne vois pas comment ORDER BY peut modifier l'ordre d'affichage des données de la même ligne. Mais peut-être m'abuse-je, auquel cas je serai en effet interessé de comprendre mon erreur, que tu ne manqueras pas, ô grand maitre, de m'expliciter en détail. Avec un peu moins d'agressivité, ta pédagogie n'en gagnera que plus en efficacité, je m'en esbaubirai et rendrai un culte régulier (mais secret) à ta maitrise parfaite des technologies has been.

[réponses croisées] Réponse à la 2e partie du message :

Oui je comprends, mais ce n'était pas mon problème. Je ne veux pas que l'utilisateur puisse faire des classements. Je voulais effectivement ordonner un tableau, dont les données sont des valeurs d'une seule ligne de ma table.

Cordialement aussi (ca fait du bien),

Fanch

#4 Re : Forum Général PHP » probleme avec krsort() et rsort() » 13-04-2012 12:24:54

Bon eh bien comme d'habitude souvent, en se creusant un peu les meninges lisant le manuel PHP, on y arrive. Merci MK pour ta réactivité en tout cas.
Donc la solution c'est avec array_multisort()

$array = array(
array(
$data['voix_candidat1'],
$data['voix_candidat2']
),
array(
$data['nom_candidat1'],
$data['nom_candidat2']
)
);

array_multisort($array[0], SORT_DESC, SORT_NUMERIC, $array[1]);
foreach ($array[1] as $key => $val) {
echo $val;
}

#5 Re : Forum Général PHP » probleme avec krsort() et rsort() » 13-04-2012 12:24:54

Voila le code simplifié :

<?php
$query = "SELECT ville,nom_candidat1,voix_candidat1,";
$query .= "nom_candidat2,voix_candidat2";
$query .= " FROM ma_table WHERE ville=$ville";
$result = mysql_query($query,$dbconnect) or die('Erreur SQL ! : '.$query.'<br />'.mysql_error());

while ($data = mysql_fetch_array($result))
{
$array = array(
"<!-- $data['voix_candidat1'] --><strong>".$data['nom_candidat1']."</strong>",
"<!-- $data['voix_candidat2'] --><strong>".$data['nom_candidat2']."</strong>"
);
rsort($array);
foreach($array as $key => $value) { echo $value; }
}
?>

La requete retourne obligatoirement une seule ligne de la table.
J'ai mis les valeurs de nombre de voix en début de chaine dans le array (et en commentaire html pour qu'il ne s'affiche pas).

Avec krsort(), ca donne :

$array = array(
"$data['voix_candidat1']"=>"<strong>".$data['nom_candidat1']."</strong>",
"$data['voix_candidat2']"=>"<strong>".$data['nom_candidat2']."</strong>"
);

#6 Re : Forum Général PHP » probleme avec krsort() et rsort() » 13-04-2012 12:24:54

Salut, merci de ta réponse. Désolé :-/,  classement, ok. Je ne peux pas utiliser ORDER BY parce que je ne trie classe pas sur une colonne de la table, mais dans une ligne.

#7 Forum Général PHP » probleme avec krsort() et rsort() » 13-04-2012 12:24:54

fanch75
Réponses : 16

Bonjour,

Je veux trier les résultats d'une requête dans ma table, qui ressemble à ceci :
candidat1 | nbvoix_candidat1 | candidat2 | nbvoix_candidat2 |  etc.
où les valeurs de nbvoix_candidatX sont des nombres entiers.

Je fais un select, une boucle, et ca me retourne un array avec le résultat.

Je veux trier les données de l'array avec pour clés les valeurs de nbvoix_candidatX, de façon à afficher la liste des candidats en fonction du plus grand nombre de voix au plus petit.

Problème avec krsort() : si 2 ou plus clés ont la même valeur, seul le premier résultat est affiché (et je ne sais pas suivant quel critère d'ailleurs).

J'ai donc essayé avec rsort(), qui réassigne des clés. Problème : rsort() fait un tri alphabétique inverse, donc avec  des nombres entiers, ça ne marche pas : 2 sera affiché avant 122455 car 2 est plus grand que 1 et seul le premier caractère est pris en compte.

Dans les deux fonctions j'ai essayé d'utiliser les constantes de type de tri SORT_NUMERIC, SORT_STRING, etc. mais rien à faire, les résultats ne s'affichent pas bien ordonnés.

Merci de votre aide.

#8 Re : Forum Général PHP » petit probleme de quotes : javascript / PHP » 23-11-2010 17:02:58

bon j'(ai juste mis la fonction dans une vriable et ca marche impecc. Merci 1000 fois. a+

#9 Re : Forum Général PHP » petit probleme de quotes : javascript / PHP » 23-11-2010 17:02:58

Bon ceci dit je peux ecrire l'url en dur sans passer par la fonction... mais j'aimerais mieux que ca marche, rien que pour savoir le refaire si le cas se représentait. Merci de ton aide en tout cas.

#10 Re : Forum Général PHP » petit probleme de quotes : javascript / PHP » 23-11-2010 17:02:58

non... pareil


<a onclick="window.open('{get_bloginfo ( 'wpurl' )}/register.php','Créer un compte','menubar=no, status=no, scrollbars=yes, resizable=yes, width=600, height=500');" href="javascript:void(0)">Créer un compte</a>
 

#11 Re : Forum Général PHP » petit probleme de quotes : javascript / PHP » 23-11-2010 17:02:58

Ah bah non ca fonctionne pas. Mais la syntaxe est correcte, en tout cas ca ne renvoie pas d'erreur. Mais la fonction php get_bloginfo('wpurl') ne s'execute pas. En fait le lien produit est :


<a onclick="window.open('get_bloginfo ( 'wpurl' )/register.php','Créer un compte','menubar=no, status=no, scrollbars=yes, resizable=yes, width=600, height=500');" href="javascript:void(0)">Créer un compte</a>
 

#12 Re : Forum Général PHP » petit probleme de quotes : javascript / PHP » 23-11-2010 17:02:58

La prochaine fois j'apprendrai à lire... "L'identifiant fermant doit  commencer à la première colonne de la ligne. Il est très important de noter que la ligne qui contient l'identifiant de fermeture ne doit contenir aucun autre caractère, hormis, éventuellement, un point-virgule ( ;  ). Cela signifie notamment que l'identifiant ne doit pas être indenté  et qu'il n'y a aucun caractère d'espacement ou de tabulation avant ou après le point virgule."
Merci bcp, ca fonctionne nickel.
a+

#13 Re : Forum Général PHP » petit probleme de quotes : javascript / PHP » 23-11-2010 17:02:58

ah désolé j'avais pas compris qu'il fallait mettre <<<EOM  .... EOM;
j'ai pensé que c'était juste un "commentaire" de ta part. Je connaissais pas...

Donc j'ai écrit :


$pr_page_content .=  <<<EOM <a href="javascript:void(0)" onclick="window.open('get_bloginfo ( 'wpurl' )/register.php','Créer un compte','menubar=no, status=no, scrollbars=yes, resizable=yes, width=600, height=500');">Créer un compte</a> | ; EOM;
 

et le résultat est syntax error, unexpected T_SL

#14 Re : Forum Général PHP » petit probleme de quotes : javascript / PHP » 23-11-2010 17:02:58

Salut,
bah non ca marche pas. Mon code (incorrect) est en fait :


$pr_page_content =  ' <a href="javascript:void(0)" onclick="window.open('.get_bloginfo ( 'wpurl' ).'/register.php','Créer un compte','menubar=no, status=no, scrollbars=yes, resizable=yes, width=600, height=500');">Créer un compte</a> | ';

Comme tu vois j'essaye un hack de Wordpress. WP, ce truc de grosse feignasse, je sais je sais... J'ai honte ;-)

#15 Forum Général PHP » petit probleme de quotes : javascript / PHP » 23-11-2010 17:02:58

fanch75
Réponses : 11

Bonjour,
j'ai un petit probleme de syntaxe avec les apostrophes dans une expression javascript. J'ai essayé plusieurs syntaxes et je n'y parviens pas... Merci de votre aide !


$link ='http://www.monsite.fr';

// Ici entre les double et les simple quotes je suis perdu...( la syntaxe ci-dessous est incorrecte). La variable link doit se trouver entre 2 simple quotes dans l'expression JS
$expression=  '<a href="javascript:void(0)" onclick="window.open('.$link.'/register.php','Créer un compte','menubar=no, status=no, scrollbars=yes, resizable=yes, width=600, height=500');">Créer un compte</a> | ';

// J'ai essayé ca aussi
$expression=  '<a href="javascript:void(0)" onclick="window.open(\"'.$link.'/register.php\",\"Créer un compte\",\"menubar=no, status=no, scrollbars=yes, resizable=yes, width=600, height=500\");">Créer un compte</a> | ';

#16 Re : Forum Général PHP » Ecriture d'un fichier xml » 19-10-2010 17:06:20

Le probleme est réglé en détruisant <albums>, mais à nouveau un noeud <image> vide est créé dans chaque <album>. Je n'y comprends plus rien... je vais dormir...

#17 Re : Forum Général PHP » Ecriture d'un fichier xml » 19-10-2010 17:06:20

Merci. je comprends qu'il faut donc aller chercher les elemùents un par un. Mais pour mon probleme ca ne peut pas marcher, étant donné que mon noeud doit s'appeler <album>.
J'ai essayé ca et evidemment ca ne marche pas :


$dom = new DomDocument();
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->load("../galeries/Gallery.xml");
//$albumsnode = $dom->getElementsByTagName("albums")->item(0);
$albumstodelete = $dom->getElementsByTagName("album");
$albumstodeleteListLength = $albumstodelete->length;
for ($i = 0; $i < $albumstodeleteListLength; $i ++)
{
$album = $albumstodelete->item(0);
$dom->createElement("album");
 }

foreach($albumstodelete as $deletealbum) { $deletealbum->parentNode->removeChild($deletealbum); }

 

Donc je vais contourner le probleme et détruire <albums>. Puis je le recréerais. Je vois pas comment faire autrement.
Merci en tout cas.

#18 Re : Forum Général PHP » Ecriture d'un fichier xml » 19-10-2010 17:06:20

J'avance... désolé si je poste les choses en cours d'avancement...
mon 2e probleme : la generation de noeud vide ne se fait plus. Ca ne peut qu'etre du à
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
vu que ce sont les seules modifs que j'ai faites. Je comprends pas, mais bon. C'est peut-etre un bug une subtilité de DOM
Quant à la suppression, en fait seul le premier noeud <album> est supprimé. Je pensais qu'avec foreach la suppression se ferait en boucle sur les elements mais apparemment non.
Donc ca redevient un bete probleme de boucle qui ne marche pas. Alors si quelqu'un pouvait m'aider ca serait vraiment sympa. Merci

Je redonne mon code :


function writexml()
{
require "cfg_config.php";

$dom = new DomDocument();
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->load("../galeries/Gallery.xml");
//$albumsnode = $dom->getElementsByTagName("albums")->item(0);
$albumstodelete = $dom->getElementsByTagName("album");
foreach($albumstodelete as $album) { $album->parentNode->removeChild($album); } // ca ne supprime que le premier <album> et je voudrais que ca les supprime tous

// on recupere toutes les infos de la table et on réécrit le fichier entierement

$db = mysql_connect($cfgHote, $cfgUser, $cfgPass) or die ("Impossible de se connecter : " . mysql_error());
mysql_select_db($cfgBase,$db);
$query = "SELECT * FROM w_albums";
$send = mysql_query($query, $db) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error());
 
while($data = mysql_fetch_array($send))
{
$nomalbum = $data['nomalbum'];
$descriptionalbum = $data['descriptionalbum'];
$lienlogo = $data['lienlogo'];
$lienphoto1 = $data['lienphoto1'];
$legende1 = $data['legende1'];

$nouvelalbum = $dom->createElement("album");
$nouvelalbum->setAttribute("icon" , $lienlogo);
$nouvelalbum->setAttribute("thumbnailsFolder" , "galeries/".$nomalbum."/pictos/");
$nouvelalbum->setAttribute("imagesFolder" , "galeries/".$nomalbum."/images/");
$nouvelalbum->setAttribute("description" , $descriptionalbum);

$photo1 = $dom->createElement("image");
$nomphoto1 = substr($lienphoto1, -5);
$photo1->setAttribute("name",$nomphoto1);
$photo1->setAttribute("description"," : ".$legende1);
$photo1->setAttribute("thumbnail",$nomphoto1);
$nouvelalbum->appendChild($photo1);

if ($data['lienphoto2']!="") {
$nomphoto2 = substr($data['lienphoto2'], -5);
$photo2 = $dom->createElement("image");
$photo2->setAttribute("name",$nomphoto2);
$photo2->setAttribute("description"," : ".$data['legende2']);
$photo2->setAttribute("thumbnail",$nomphoto2);
$nouvelalbum->appendChild($photo2);
}

$albumsnode = $dom->getElementsByTagName("albums")->item(0);
$albumsnode->appendChild($nouvelalbum);

} // fin du while
$dom->save("../galeries/Gallery.xml");
}

 

Le fichier XML est comme ca :

<albums>
    <album icon="galeries/logos_clients/logo_client1.jpg" thumbnailsFolder="galeries/client1/pictos/" imagesFolder="galeries/client1/images/" description="premier client">
      <image name="1.jpg" description=" : quelle belle image 1" thumbnail="1.jpg"/>
    </album>
    <album icon="galeries/logos_clients/logo_client2.jpg" thumbnailsFolder="galeries/client2/pictos/" imagesFolder="galeries/client2/images/" description="deuxieme client">
      <image name="1.jpg" description=" : quelle belle image !" thumbnail="1.jpg"/>
    </album>
</albums>

#19 Re : Forum Général PHP » Ecriture d'un fichier xml » 19-10-2010 17:06:20

Pour préserver la mise en forme de l'arbre xml, il ya deux lignes à ajouter à l'ouverture du fichier :


$dom = new DomDocument();
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->load("../galeries/Gallery.xml");
 

Par contre toujours pas de solution pour ma suppression qui marche pas et mon noeud vide qui s'ajoute. Quelqu'un ?

#20 Re : Forum Général PHP » Ecriture d'un fichier xml » 19-10-2010 17:06:20

oui c'est vrai. merci de cette optimisation. par contre, j'ai toujours les deux problemes de suppression qui ne se fait pas et de noeud vide. Une idée ?

#21 Re : Forum Général PHP » Ecriture d'un fichier xml » 19-10-2010 17:06:20

salut,
a premiere vue ca me paraissait un peu éloigné du sujet ton topic, bon en fait j'ai vu que non, mais franchement je ne vais me prendre la tete pour des histoires de saut de ligne. Par contre si tu as une reponse à mon 2e post, je suis preneur.

#22 Re : Forum Général PHP » Ecriture d'un fichier xml » 19-10-2010 17:06:20

Salut,
hm... bon. Laissons tomber l'esthetique alors.
Par contre, je me rends compte que j'ai 2 soucis :
1. la suppresion des elements du fichier ne se fait pas.
2. l'ecriture dans le fichier xml se fait bien avec les données dans la table, mais pour chaque <album>, un element <image> avec des attributs vides est ajouté. J'ai beau regarder le code, je ne vois rien qui cloche. Si tu as une idée... merci d'avance.

function writexml(){
   require "cfg_config.php";
   $dom = new DomDocument();
   $dom->load("../galeries/Gallery.xml");
   $albumsnode = $dom->getElementsByTagName('albums')->item(0);
   $albumstodelete = $dom->getElementsByTagName('album');
   // donc a partir de là la suppression ne semble pas marcher
   foreach($albumstodelete as $album) $albumsnode->removeChild($album);
   $dom->save("../galeries/Gallery.xml"); // j'ai essayé de sauver le fichier
   // puis de le rouvrir...
   $dom = new DomDocument();
   $dom->load("../galeries/Gallery.xml");
   // on recupere toutes les infos de la table et on réécrit le fichier entierement
   $db = mysql_connect($cfgHote, $cfgUser, $cfgPass) or die ("Impossible de se connecter : " . mysql_error());
   mysql_select_db($cfgBase,$db);
   $query = "SELECT * FROM w_albums";
   $send = mysql_query($query, $db) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error());
 
   while($data = mysql_fetch_array($send)){
      $nomalbum = $data['nomalbum'];
      $descriptionalbum = $data['descriptionalbum'];
      $lienlogo = $data['lienlogo'];
      $lienphoto1 = $data['lienphoto1'];
      $legende1 = $data['legende1'];
     
      $nouvelalbum = $dom->createElement("album");
      $nouvelalbum->setAttribute("icon" , $lienlogo);
      $nouvelalbum->setAttribute("thumbnailsFolder" , "galeries/".$nomalbum."/pictos/");
      $nouvelalbum->setAttribute("imagesFolder" , "galeries/".$nomalbum."/images/");
      $nouvelalbum->setAttribute("description" , $descriptionalbum);

      $photo1 = $dom->createElement("image");
      $nomphoto1 = substr($lienphoto1, -5);
      $photo1->setAttribute("name",$nomphoto1);
      $photo1->setAttribute("description"," : ".$legende1);
      $photo1->setAttribute("thumbnail",$nomphoto1);

      if ($data['lienphoto2']!="") {
          $nomphoto2 = substr($data['lienphoto2'], -5);
          $photo2 = $dom->createElement("image");
          $photo2->setAttribute("name",$nomphoto2);
          $photo2->setAttribute("description"," : ".$data['legende2']);
          $photo2->setAttribute("thumbnail",$nomphoto2);
      }

      $nouvelalbum->appendChild($photo1);
      if (isset($nomphoto2)) { $nouvelalbum->appendChild($photo2); }

      $albums = $dom->getElementsByTagName("albums")->item(0);
      $albums->appendChild($nouvelalbum);
   } // fin du while
   $dom->save('../galeries/Gallery.xml');
}

 

et donc dans le fichier xml j'ai systematiquement :

<albums>
<album icon="galeries/logos_clients/logo_client1.jpg" thumbnailsFolder="galeries/client1/pictos/" imagesFolder="galeries/client1/images/" description="client 1">
<image name="1.jpg" description=" : legende de la photo 1" thumbnail="1.jpg"/>
<image name="2.jpg" description=" : legende de la photo 2" thumbnail="2.jpg"/>
<image name="" description=" : " thumbnail=""/>
</album>
</albums>

 

#23 Forum Général PHP » Ecriture d'un fichier xml » 19-10-2010 17:06:20

fanch75
Réponses : 11

Bonjour,
j'écris en php5 un fichier xml via les methodes DOM. Les noeuds, attributs etc. de mon fichier sont des données d'une table.
Tout va bien, sauf que mon fichier xml s'écrit sur une seule ligne, ce qui n'est tres "lisible".
Auriez vous une solution pour intégrer des sauts de ligne dans le document xml ? merci
mon code :


function writexml()
{
require "cfg_config.php";

$dom = new DomDocument();
$dom -> load("../galeries/Gallery.xml");
$albumsnode = $dom -> getElementsByTagName('albums') -> item(0);
$albumstodelete = $dom -> getElementsByTagName('album'); // on détruit les albums existants
foreach($albumstodelete as $album)
$albumsnode -> removeChild($album);

// on recupere toutes les infos de la table et on réécrit le fichier entierement

$db = mysql_connect($cfgHote, $cfgUser, $cfgPass) or die ("Impossible de se connecter : " . mysql_error());
mysql_select_db($cfgBase,$db);
$query = "SELECT * FROM w_albums";
$send = mysql_query($query, $db) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error());
 
while($data = mysql_fetch_array($send))
{
$nomalbum = $data['nomalbum'];
$descriptionalbum = $data['descriptionalbum'];
$lienlogo = $data['lienlogo'];
$lienphoto1 = $data['lienphoto1'];
$legende1 = $data['legende1'];

$nouvelalbum = $dom -> createElement("album");
$nouvelalbum -> setAttribute("icon" , $lienlogo);
$nouvelalbum -> setAttribute("thumbnailsFolder" , "galeries/".$nomalbum."/pictos/");
$nouvelalbum -> setAttribute("imagesFolder" , "galeries/".$nomalbum."/images/");
$nouvelalbum -> setAttribute("description" , $descriptionalbum);

$photo1 = $dom -> createElement("image");
$nomphoto1 = substr($lienphoto1, -5);
$photo1 -> setAttribute("name",$nomphoto1);
$photo1 -> setAttribute("description"," : ".$legende1);
$photo1 -> setAttribute("thumbnail",$nomphoto1);

if ($lienphoto2!="") {
$photo2 = $dom -> createElement("image");
$nomphoto2 = substr($lienphoto2, -5);
$photo2 -> setAttribute("name",$nomphoto2);
$photo2 -> setAttribute("description"," : ".$legende2);
$photo2 -> setAttribute("thumbnail",$nomphoto2);
}

$nouvelalbum -> appendChild($photo1);
if (isset($photo2)) { $nouvelalbum -> appendChild($photo2); }

$albums = $dom -> getElementsByTagName("albums")-> item(0);
$albums -> appendChild($nouvelalbum);

} // fin du while
$dom -> save('../galeries/Gallery.xml');
}


 

et donc le fichier xml est ecrit (par exemple) :


<albums><album icon="galeries/logos_clients/logo_test_avec_xml_2.jpg" thumbnailsFolder="galeries/test_avec_xml_2/pictos/" imagesFolder="galeries/test_avec_xml_2/images/" description="test avec xml 2"><image name="1.jpg" description=" : volodine" thumbnail="1.jpg"/></album><album icon="galeries/logos_clients/logo_test_avec_xml_3.jpg" thumbnailsFolder="galeries/test_avec_xml_3/pictos/" imagesFolder="galeries/test_avec_xml_3/images/" description="test avec xml 3"><image name="1.jpg" description=" : coloton" thumbnail="1.jpg"/></album></albums>
 

Tout ca sur une seule ligne... donc bon, ca marche, mais ce n'est pas tres esthetique...

#24 Re : Forum Général PHP » probleme avec copy() » 14-10-2010 18:03:25

Ah la latu as de bons yeux. Et evidemment c'est ca. Merci ! big_smile

#25 Forum Général PHP » probleme avec copy() » 14-10-2010 18:03:25

fanch75
Réponses : 2

Bonjour,
j'ai un script qui uploade une image dans un repertoire "images" de mon serveur avec move_uploaded_file. Ensuite je retaille cette image a la bonne dimension, et je la remplace.
Ensuite je la copie avec copy() dans un autre répertoire "pictos". Et je la retaille à la bonne taille.
Probleme : l'upload de l'image se passe bien. Le resize de l'image se passe bien.
Copy() se fait... mais :
1. Le resize de l'image copiée ne se fait pas.
2. J'ai un message provenant je pense de la fonction copy(), mais je ne comprends rien, à cause de l'encodage des caracteres.

voici mon code :


if (empty($_FILES['photo1']['type'])) { $erreurphoto1="<span class='warning'>Vous devez choisir une image !</span>"; }
else {
if ($_FILES['photo1']['size'] > $taille_max)
{ $erreurphoto1 = "<span class='warning'>L&apos;image doit etre un fichier jpeg d&apos;un poids inférieur à 20 Mo !</em></span>"; }
elseif (!in_array($_FILES['photo1']['type'], $typeimage))
{ $erreurphoto1 = "<span class='warning'>L&apos;image doit etre un fichier jpg (ou jpeg) !</span>"; }
}

// Pas d'erreurs -> execution...
if (!isset($erreurphoto1))
{
$dest_fichier1 = "1.jpg";
// copie du fichier
move_uploaded_file($_FILES['photo1']['tmp_name'], $dest_dossierimages . $dest_fichier1);
$lienphoto1 = "galeries/$nomalbum/images/$dest_fichier1";
$lienpicto1 = "galeries/$nomalbum/pictos/$dest_fichier1";

// Resize de la photo
$redimphoto1 = $realpath."galeries/".$nomalbum."/images/".$dest_fichier1;

$photo1_size = getimagesize($redimphoto1);
$W_Srcphoto1 = $photo1_size[0];
$H_Srcphoto1 = $photo1_size[1];

$Wphoto1 = $Hphoto * ($W_Srcphoto1 / $H_Srcphoto1);        

$sizephoto1 = getimagesize($redimphoto1);

if (($sizephoto1['mime']=='image/jpeg') || ($sizephoto1['mime']=='image/jpg') || ($sizephoto1['mime']=='image/pjpg') || ($sizephoto1['mime']=='image/pjpeg')) {
$photo1_big = imagecreatefromjpeg($redimphoto1);
$photo1_new = imagecreate($Wphoto1, $Hphoto);
$photo1_mini = imagecreatetruecolor($Wphoto1, $Hphoto);

imagecopyresized($photo1_mini,$photo1_big,0,0,0,0,$Wphoto1,$Hphoto,$sizephoto1[0],$sizephoto1[1]);
imagejpeg($photo1_mini,$redimphoto1);
}
// copie et resize du picto
copy($realpath."galeries/".$nomalbum."/images/".$dest_fichier1 , $realpath."galeries/".$nomalbum."/pictos/".$dest_fichier1 );

$redimpicto1 = $realpath."galeries/".$nomalbum."/pictos/".$dest_fichier1;

$picto1_size = getimagesize($redimpicto1);
$W_Srcpicto1 = $picto1_size[0];
$H_Srcpicto1 = $picto1_size[1];

$Wpicto1 = $Hpicto * ($W_Srcpicto1 / $H_Srcpicto1);        

$sizepicto1 = getimagesize($redimpicto1);

if (($sizepicto1['mime']=='image/jpeg') || ($sizepicto1['mime']=='image/jpg') || ($sizepicto1['mime']=='image/pjpg') || ($sizepicto1['mime']=='image/pjpeg')) {
$picto1_big = imagecreatefromjpeg($redimpicto1);
$picto1_new = imagecreate($Wpicto1, $Hpicto);
$picto1_mini = imagecreatetruecolor($Wpicto1, $Hpicto);

imagecopyresized($picto1_mini,$picto1_big,0,0,0,0,$Wpicto1,$Hpicto,$sizepicto1[0],$sizepicto1[1]);
imagejpeg($picto1_mini,$imgpicto1);
}
}

 

et voici le message que j'obtiens... si ca peut aider

[code]JFIF>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222K5" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?*(mdUQI X*M>V

Pied de page des forums

Propulsé par FluxBB